Threads in Operating System
Threads in Operating System
The process can be split down into so many threads. For example, in a browser,
many tabs can be viewed as threads. MS Word uses many threads - formatting text
from one thread, processing input from another thread, etc.
Need of Thread:
o It takes far less time to create a new thread in an existing process than to
create a new process.
o Threads can share the common data, they do not need to use Inter- Process
communication.
o Context switching is faster when working with threads.
o It takes less time to terminate a thread than a process.
Types of Threads
In the operating system, there are two types of threads.
1. Kernel level thread.
2. User-level thread.
User-level thread
The operating system does not recognize the user-level thread. User threads can be
easily implemented and it is implemented by the user. If a user performs a user-level
thread blocking operation, the whole process is blocked. The kernel level thread does
not know nothing about the user level thread. The kernel-level thread manages user-
level threads as if they are single-threaded processes?examples: Java thread, POSIX
threads, etc.
HTML Tutorial
1. The user threads can be easily implemented than the kernel thread.
2. User-level threads can be applied to such types of operating systems that do
not support threads at the kernel-level.
3. It is faster and efficient.
4. Context switch time is shorter than the kernel-level threads.
5. It does not require modifications of the operating system.
6. User-level threads representation is very simple. The register, PC, stack, and
mini thread control blocks are stored in the address space of the user-level
process.
7. It is simple to create, switch, and synchronize threads without the intervention
of the process.
1. User-level threads lack coordination between the thread and the kernel.
2. If a thread causes a page fault, the entire process is blocked.
Kernel level thread
The kernel thread recognizes the operating system. There is a thread control block
and process control block in the system for each thread and process in the kernel-
level thread. The kernel-level thread is implemented by the operating system. The
kernel knows about all the threads and manages them. The kernel-level thread offers
a system call to create and manage the threads from user-space. The
implementation of kernel threads is more difficult than the user thread. Context
switch time is longer in the kernel thread. If a kernel thread performs a blocking
operation, the Banky thread execution can continue. Example: Window Solaris.
Advantages of Kernel-level threads
Components of Threads
Any thread has the following components.
1. Program counter
2. Register set
3. Stack space
Benefits of Threads
o Enhanced throughput of the system: When the process is split into many
threads, and each thread is treated as a job, the number of jobs done in the
unit time increases. That is why the throughput of the system also increases.
o Effective Utilization of Multiprocessor system: When you have more
than one thread in one process, you can schedule more than one thread in
more than one processor.
o Faster context switch: The context switching period between threads is
less than the process context switching. The process context switch means
more overhead for the CPU.
o Responsiveness: When the process is split into several threads, and when a
thread completes its execution, that process can be responded to as soon as
possible.
o Communication: Multiple-thread communication is simple because the
threads share the same address space, while in process, we adopt just a few
exclusive communication strategies for communication between two
processes.
o Resource sharing: Resources can be shared between all threads within a
process, such as code, data, and files. Note: The stack and register cannot be
shared between threads. There is a stack and register for each thread.