Implementing the Nanothreads Programming Model on Top of POSIX Threads

P.E. Hadjidoukas, E.D. Polychronopoulos, and T.S. Papatheodorou (Greece)


threads, POSIX, runtime support, programming models, operating systems


The goal of this paper is the efficient and portable implementation of the Nanothreads Programming Model (NPM), a dependence-driven two-level threads model for shared-memory multiprocessors, on top of the POSIX Threads API. Our general approach is to combine portability with efficiency by implementing the machine dependent components of the runtime system based on POSIX threads and defining an appropriate API that any underlying non-preemptive user-level threads package should export in order to get integrated with it. We implement such a portable lightweight threads package based on POSIX calls, and then we replace this package with POSIX threads. On M:N implementation models, we exploit their lightweight process scope POSIX threads. Our approach makes the implementation of NPM fully portable while, on the other hand, provides a significant extension of POSIX threads. The portability of our work allows its experimental evaluation on several operating systems and hardware platforms.

Important Links:

Go Back