What are the differences between user level threads and kernel supported threads?
A thread, sometimes termed a lightweight process (LWP), is a fundamental unit of CPU utilization; this comprises a thread ID, a register set, a program counter and a stack.
A thread shares along with other threads belonging to similar process its data section and code section and other operating-system resources, as signals and open files.
If the process has many threads of control, this can do more than one task at a time.
User Level Threads Vs Kernel Supported Threads
i. User threads are supported above the kernel and are implemented through a thread library at the user level.
Here, kernel threads are supported directly through the operating system.
ii. For user threads, the thread library gives support for thread creation, scheduling and management within user space with no support from the kernel as the kernel is unaware of user-level threads. In case of kernel threads, the kernel does thread creation, scheduling and management inside kernel space.
iii. As there is no require of kernel intervention, user-level threads are usually fast to create and manage it. As thread management is made by the operating system, kernel threads are usually slower to create and manage which is a user thread.
iv. Any user-level thread performing blocking system call, if the kernel is single-threaded, will cause the whole process to block, even if other threads are available to run inside the application.
Though, as the kernel is managing the kernel threads, whether a thread performs a blocking system call, the kernel can schedule the other thread in the application for execution.
v. User-thread libraries contain POSIX P threads, Mach C-threads and Solaris 2 UI-threads.
Several of the cotemporary operating systems which support kernel threads are Windows NT, Windows 2000, Solaris 2, BeOS and Tru64 UNIX (formerly Digital UNIX).