Kernels supporting processes do not distinguish between a thread and its address space are sometimes referred to as heavyweight threads. The parallelism expressed using heavyweight threads is too inefficient because of two reasons. First is that the kernel treats a thread and its address space as a single entity, threads and address space are created, scheduled, and destroyed together. As a result, the creation and deletion of heavyweight threads are expensive. Second is the reallocation of a processor to a different address space (context switch) is expensive (Mukherjee 12).
User-level threads are managed by runtime library routines linked into each application. A thread management operation does not require an expensive kernel call. Furthermore, User-level threads enable an application program to use a thread management system, most appropriate to the problem domain (Mukherjee 13).
According to Silberschatz, a thread library provides the programmer an API for creating and managing threads and there are two primary ways of implementing it. The first approach is to provide a library entirely in user space with no kernel support. The second approach is to implement a kernel-level library supported directly by the operating system. Three common thread libraries are: POSIX Pthreads, Win32 and Java. (131)
These are just excerpts of essays please access the order form for custom essays, research papers, term papers, thesis, dissertations, book reports and case studies.