Difference between Scheduler and Dispatcher
Scheduler and Dispatcher are associated with the process scheduling of an operating system. Scheduling is the operating system's process to decide which process should be allocated to the CPU to execute several processes.
The key difference between scheduler and Dispatcher is that the scheduler selects a process out of several processes to be executed. In contrast, the Dispatcher allocates the CPU for the selected process by the scheduler.
What is Scheduler in OS
Schedulers are special system software that handles process scheduling in various ways. Their main task is to select the jobs to submit into the system and decide which process to run. There are three types of schedulers in an operating system.
- Long Term Scheduler: It is also called a job scheduler. A long-term scheduler determines which programs are admitted to the system for processing. It selects processes from the queue and loads them into memory for execution. Process loads into the memory for CPU scheduling.
The primary objective of the job scheduler is to provide a balanced mix of jobs, such as I/O bound and processor bound. It also controls the degree of multiprogramming. If the degree of multiprogramming is stable, then the average rate of process creation must be equal to the average departure rate of processes leaving the system.
On some systems, the long-term scheduler may not be available or minimal, and Time-sharing operating systems have no long term scheduler. When a process changes the state from new to ready, there is a long-term scheduler.
- Short Term Scheduler: It is also called a CPU scheduler. Its main objective is to increase system performance under the chosen set of criteria. It is the change of ready state to running state of the process. CPU scheduler selects a process among the processes that are ready to execute and allocates CPU to one of them.
Short-term schedulers, also known as dispatchers, decide which process to execute next. Short-term schedulers are faster than long-term schedulers.
- Medium Term Scheduler: Medium-term scheduling is a part of swapping. It removes the processes from memory, and it reduces the degree of multiprogramming. The medium-term scheduler is in charge of handling the swapped out processes.
A running process may become suspended if it makes an I/O request, and a suspended process cannot make any progress towards completion. In this condition, the suspended process is moved to the secondary storage to remove the process from memory and make space for other processes. This process is called swapping, and the process is said to be swapped out or rolled out. Swapping may be necessary to improve the process mix.
What is Dispatcher in OS
A dispatcher is a special program that comes into play after the scheduler. When the short term scheduler selects from the ready queue, the Dispatcher performs the task of allocating the selected process to the CPU. A running process goes to the waiting state for IO operation etc., and then the CPU is allocated to some other process. This switching of CPU from one process to the other is called context switching.
A dispatcher performs various tasks, including context switching, setting up user registers and memory mapping. These are necessary for the process to execute and transfer CPU control to that process. When dispatching, the process changes from the ready state to the running state.
The Dispatcher needs to be as fast as possible, as it is run on every context switch. The time consumed by the Dispatcher is known as dispatch latency.
Sometimes, the Dispatcher is considered part of the short-term scheduler, so the whole unit is called the short-term scheduler. In this scenario, the task of the short term scheduler is to select a process from the ready queue and allocate the CPU for that process. In the operating system, a dispatcher has the following responsibilities:
- Switching to user mode: All of the low-level operating system processes run on the kernel level security access, but all application code and user issued processes run in the application space or the user permission mode. The Dispatcher switches the processes to the user mode.
- Addressing: The program counter (PC) register points towards the next process to be executed. The Dispatcher is responsible for addressing that address.
- Initiation of context switch: A context switch is when a currently running process is halted, and all of its data and its process control block (PCB) are stored in the main memory, and another process is loaded in its place for execution.
- Managing dispatch latency: Dispatch latency is calculated as the time it takes to stop one process and start another. The lower the dispatch latency, the more efficient the software for the same hardware configuration.
NOTE: A dispatcher is NOT a thread. The Dispatcher runs on each core, runs a thread for a while, saves its state, loads the state of another thread and runs it.
Example of Scheduler and Dispatcher
Suppose four processes, P1, P2, P3, and P4, are in the ready queue. Their arrival times are T1, T2, T3, and T4, respectively. And a First in, First out (FIFO) scheduling algorithm is used in this whole process or task.
The process P1 arrived first, so the scheduler will decide it is the first process to be executed, and the Dispatcher will remove P1 from the ready queue and give it to the CPU.
Then the scheduler will determine process P2 to be the next process that should be executed, so when the Dispatcher returns to the queue for a new process, it will take process P2 and give it to the CPU. This continues in the same way for process P3 and then P4.
Difference between Scheduler and Dispatcher in Operating System
The CPU cannot execute all processes residing in the ready queue and waiting for execution simultaneously. So the operating system has to choose a particular process based on the scheduling algorithm, and the scheduler does this procedure of selecting a process among various processes.
Once the scheduler has selected a process from the queue, the Dispatcher takes it from the ready queue and moves it into the running state. Therefore, the scheduler gives the Dispatcher an ordered list of processes which the Dispatcher moves to the CPU over time.
Scheduler and Dispatcher are used in the process scheduling of an operating system, and they both complete the same process or task. Still, the difference between scheduler and Dispatcher is that the scheduler selects a process out of several processes to be executed. In contrast, the Dispatcher allocates the CPU for the selected process by the scheduler. There are some more differences between the scheduler and the Dispatcher in the operating system, such as:
||The scheduler is special system software that handles process scheduling by selecting the process to execute.
||The Dispatcher is a module that controls the CPU to the process selected by the short term scheduler.
||The scheduler works on various algorithms such as FCFS, SJF, RR etc.
||The Dispatcher has no specific algorithm for its implementation.
||There are three types of schedulers, such as Long-term, Short-term, Medium-term.
||There are no different types in Dispatcher, and it is just a code segment.
||The scheduler works independently, and it works immediately when needed.
||The working of a Dispatcher depends on a scheduler, which means Dispatcher has to wait until the scheduler selects a process.
||Time taken by the scheduler is usually negligible.
||The time taken by the Dispatcher is called dispatch latency.
||The only work of the scheduler is a selection of processes.
||A dispatcher is also responsible for Context Switching, Switch to user mode, and Jumping to the proper location when the process restarted again.
||The scheduler performs the task in three stages, such as:
- The long-term schedulerselects the process from the job queue and brings it to the ready queue.
- The short term schedulerselects a process in the ready queue.
- The medium schedulercarries out the swap in, swap out of the process.
|The Dispatcher allocates the CPU to the process selected by the short-term scheduler.