Thread Management and Context Switching
Threads and Their Utility on a Single CPU
Introduction to Threads on CPUs
The question arises whether threads are beneficial when the number of threads exceeds the number of CPUs.
Disk Request Scenario
Illustration of threads with a scenario involving disk requests:
Thread T1 makes a disk request.
The disk requires a certain amount of time to position the spindle to access the requested data until it replies.
This period of waiting is denoted as T idle.
Thread and CPU Idle Time
Idle Time for Thread T1:
During the T idle, Thread T1 is idle and unable to perform any operations, which leads to the CPU also being idle.
When the T idle is significantly longer than the time taken to perform a context switch from T1 to another thread, it becomes practical to switch.
Context Switching Mechanism
Definition of Context Switch: Transition from executing one thread to another, which involves saving the state of the current thread and loading the state of the new thread.
The efficiency of context switching depends on the comparison between:
T idle: The idle waiting period of the thread.
T context switch: The time taken to perform the context switch.
Context switching becomes beneficial when:
In this scenario, it is justifiable to switch to Thread T2, allowing it to perform productive work while Thread T1 is waiting.
Advantages of Threading vs. Processes
Context switching is applicable to both processes and threads, but:
With processes, a costly step during context switching is the creation of new virtual to physical address mappings for the scheduled process.
With threads, since they share the same address space, there is no requirement to create new virtual to physical address mappings, which saves time.
This leads to:
Time Efficiency in Context Switching Among Threads:
The time taken to switch among threads is shorter than switching among processes due to the elimination of the physical address mapping step.
Implications of Efficient Context Switching
By decreasing the time of context switches:
More instances of T idle situations can be utilized effectively by switching to other threads.
This improves the overall performance in environments where idle time occurs due to IO operations.
Conclusion:
Multi-threading is particularly advantageous even in single CPU systems, as it assists in concealing latency related to IO operations and optimizes CPU utilization during idle periods.