Threads and Concurrency
- A thread is a flow of execution through the process code. - It has its own program counter that keeps track of which instruction to execute next. 
- It also has system registers which hold its current working variables, 
- and a stack which contains the execution history. 
 
- A thread shares with its peer threads various information like code segment, data segment, and open files. - When one thread alters a code segment memory item, all other threads see that. 
 
- A thread is also called a lightweight process. - Threads provide a way to improve application performance through parallelism. 
- Threads represent a software approach to improving the performance of operating systems by reducing the overhead. 
- A thread is equivalent to a classical process. 
 
- Each thread belongs to exactly one process, and no thread can exist outside a process. - Each thread represents a separate flow of control. 
- Threads have been successfully used in implementing network servers and web servers. 
- They also provide a suitable foundation for parallel execution of applications on shared memory multiprocessors. 
 
- Advantages of threads: - They minimize the context switching time. 
- Using them provides concurrency within a process. 
- They provide efficient communication. 
- It is more economical to create and context switch threads. 
- Threads allow utilization of multiprocessor architectures to a greater scale and efficiency. 
 
- Threads are implemented in the following two ways: - User Level Threads: User-managed threads. - the thread management kernel is not aware of the existence of threads. 
- The thread library contains code for creating and destroying threads, for passing messages and data between threads, for scheduling thread execution, and for saving and restoring thread contexts. 
- The application starts with a single thread. 
 
- Advantages: - Thread switching does not require Kernel mode privileges. 
- User level thread can run on any operating system. 
- Scheduling can be application-specific in the user level thread. 
- User level threads are fast to create and manage. 
 
- Disadvantages: - In a typical operating system, most system calls are blocking. 
- Multithreaded application cannot take advantage of multiprocessing. 
 
- Kernel Level Threads: Operating System-managed threads acting on a kernel, an operating system core. - thread management is done by the Kernel. 
- There is no thread management code in the application area. 
- Kernel threads are supported directly by the operating system. 
- Any application can be programmed to be multithreaded. 
- All of the threads within an application are supported within a single process. 
- The Kernel maintains context information for the process as a whole and for individuals threads within the process. 
- Scheduling by the Kernel is done on a thread basis. 
- The Kernel performs thread creation, scheduling, and management in Kernel space. 
- Kernel threads are generally slower to create and manage than the user threads. 
- Advantages - The Kernel can simultaneously schedule multiple threads from the same process on multiple processes. 
- If one thread in a process is blocked, the Kernel can schedule another thread of the same process. 
- Kernel routines themselves can be multithreaded. 
 
- Disadvantages - Kernel threads are generally slower to create and manage than the user threads. 
- Transfer of control from one thread to another within the same process requires a mode switch to the Kernel. 
 
 
 
Last updated
Was this helpful?