In this post, we will learn about user level thread and kernel level thread. We will see what a kernel level thread is, advantages and disadvantages of kernel level thread. Similarly, we will see what a user level thread is, advantages and disadvantages of user level thread etc.
1. Kernel Level Thread
A Kernel thread, sometimes called a light weight process, is created and scheduled by the kernel. Supporting thread at kernel level means that operating system is multithreaded. Operating system kernel maintains thread abstractions, synchronization and scheduling. It allows the resource to share.
Kernel threads are supported directly by operating system.
Kernel threads maintain context information for the process as a whole and for individual thread within process.
Kernel performs thread creation, scheduling and management.
Advantages of Kernel Level Thread
- Kernel threads can simultaneously schedule multiple threads from the same process or multiple process.
- If one thread is blocked, kernel can schedule another thread of the same process.
- Because kernel has full knowledge of threads. Scheduler may decide to give more times to a process having large number of threads than process having small number of threads.
Disadvantages of Kernel Level Thread
- Kernel threads are slower to create and manage than user level.
- Since kernel must manage and schedule threads as well as processes. It requires a full Thread Control Block(TCB) for each thread to maintain information about threads. As a result, there is a significant overhead and increased in kernel complexity.
2. User Level Threads
User level threads are managed by a user level library. However, they still require a kernel system call to operate. It doesn’t mean that the kernel knows anything about thread management. It only takes care of the execution part. Thread library contains code for creating, destroying threads and passing message or data between threads. User level threads are typically fast, each thread is represented by a PC, register, stack and small thread control block. Creating a new thread, switching between threads and synchronizing threads are done via procedure call.
Advantages of User Level Threads
- Management of user level thread is simple. It means creating threads, switching and synchronization between threads can be done without intervention of kernel.
- User level threads are cheap and fast.
- User level thread does not require kernel mode privileges. They can run on any operating system.
Disadvantages of User Level Threads
- There is a lack of coordination between threads and operating system kernel. So, process as whole gets one time slice irrespective of whether process has 1 thread or 100 threads within.
- User level threads requires non-blocking call i.e., a multithreaded kernel. Otherwise, entire process will be blocked in the kernel, even if there are runnable process.
3. Difference Between User Level Thread and Kernel Level Thread
|User Level Thread
|Kernel Level Thread
|User-level threads are faster to create and manage.
|Kernel-level threads are slower to create.
|User-level thread is generic and can run on any operating system.
|Kernel-level thread is specific to the operating system.
|Implementation is by a thread library at the user level.
|Operating system supports kernel threads.
|Example: user threads library include POSIX pthreads, Mach C-Threads and Solaris 2 UI threads.
|Example: Windows NT, Windows 2000, Solaris2, BeOS and Tru64 UNIX
That’s end of tutorial on User level thread and kernel level thread.