A thread is a basic unit of CPU utilization. It is also called a lightweight process. A thread shares the following with its peer threads in a particular task:
- Code Section
- Data Section
- Any operating system resources, which are vacant for the job.
In this article, you will be able to learn about a thread, different types of threads, their advantages and disadvantages, major differences between process and threads etc. Let’s read it further.
A thread is a basic unit of CPU utilization. It is also called a lightweight process. It is a sequence of instructions within a process. A thread behaves like a process within a process but it does not have its own PCB. Usually, multiple threads are created within a process. The multiple threads in a process allow multiple executions. It can be used to improve application through parallelism. Threads consist of the following:
- Thread ID
- Program Counter
- Register Set
A thread shares the following with its peer threads in a particular task: Thread is a sequence of instructions within a process. It behaves like a process within a process but it does not have its own PCB. Types:Kernel-Level & User-Level
- Code Section
- Data Section
- Any operating system resources, which are vacant for the job
Benefits of Threads
Some important benefits of threads are as follows:
- Threads share common data and do not require to make use of inter-process communication.
- Threads can get an advantage of multiprocessors
- There is a higher throughput when multiple threads collaborate in a single job. The entire process does not stop if one thread must wait.
- Threads are cheap to create as they only need a stack and storage for register
- Threads use very little resources of an operating system. They do not need new address space, global data, program code or operating system resources
- Context switching becomes fast when working with threads.
Difference B/w Processes and Threads
The difference between processes and threads are as follows:
|A thread is a lightweight entity||A process is a heavyweight entity|
|A thread cannot exist without a process||There must be at least one thread in a process|
|If a thread ends, the process may still run.||If a process ends, all threads in it also end|
|A thread has no data segment or heap||A process has a code, data and heap segments|
|The communication among threads occurs via memory||The communication among processes occurs via operating system and data copying|
|The creation of threads and context switching is inexpensive||The creation of processes and context switching is expensive.|
Types of Threads
Threads may be handled at different levels. There are two types of threads to manage in a modern system. These are known as user threads and kernel threads.
Kernel-level threads are supported within the kernel of the operating system. All modern operating systems support kernel-level threads. They allow the kernel to perform multiple tasks and to service multiple kernel system calls simultaneously.
Different advantages of kernel-level threads are as follows:
- The kernel has full knowledge of all threads. Therefore the scheduler may decide to give more time to process with a large number of threads than the process having small number of threads.
- Kernel-level threads are especially good for applications that are blocked frequently.
Different disadvantages of kernel-level threads are as follows:
- The kernel level threads are slow and incompetent
- The kernel must manage and schedule threads as well as the processes. It requires a full thread control block (TCB) for each thread to maintain information about threads. There is significant overhead and increases the kernel complexity.
User Level Threads
User level threads are implemented in user-level libraries instead of systems calls. The thread switching does not need to call the operating system. It does not cause interrupts to the kernel. The kernel knows nothing about user level threads. It manages these threads as single threaded processes. The user level threads are very fast.
Different advantages of user level threads are as follows:
- The user level threads are fast and efficient
- They can be implemented on an operating system that does not support threads
- They are simple to manage. The switching between threads can be done without a kernel
Different disadvantages of user level threads are as follows:
- There is a lack of coordination between threads and operating system kernel. The process gets single time slice even if it has a large number of threads in it.
- A multi threaded application with pure user level threads cannot take advantage of multiprocessing. The kernel assigns only one process to a processor at a time.