Maximize CPU utilization by selecting and running one process from the ready queue when the CPU is available.
Process Execution Cycle
Alternation between CPU execution and I/O wait forms the process execution cycle.
Process types:
CPU-bound Process:
Characterized by very long CPU bursts.
I/O-bound Process:
Characterized by short CPU bursts.
Process Flow
A simple flow might involve the following operations:
x := 0;
read from file;
x := x + y;
write to file;
Wait for I/O;
Alternates between CPU bursts and I/O bursts.
Switching CPU States
State Transitions
From running to waiting state: Triggered by I/O requests or waiting for resources.
From running to ready state: Happens on timer interruptions or when preemption occurs.
Process termination: Frees up CPU resources.
CPU Scheduler Types
Short Term Scheduler (STS):
Chooses from the processes in memory that are ready for execution.
Must act quickly, managing the ready queue efficiently, which can be FIFO, priority-based, etc.
Medium Term Scheduler (MTS):
Manages swapping processes in and out of memory to optimize CPU usage.
Long Term Scheduler (LTS):
Controls the entry of processes into the memory for execution.
Usually invoked when a job finishes executing.
Affects multiprogramming by choosing between CPU-bound and I/O-bound jobs.
Preemption
Preemptive vs Non-preemptive Scheduling
Non-preemptive: Process retains CPU until it voluntarily relinquishes it by terminating or waiting. Example: Windows 3.x.
Preemptive: Process can be interrupted and resumed later; requires special hardware support (like timers) and can lead to race conditions.
Dispatcher
Role:
Switches control of CPU to the selected process.
Responsible for context switching, managing user mode transitions, and executing the selected process’s code.
Dispatch Latency:
The time taken to stop one process and start another; should be minimized.
Scheduling Criteria
Metrics for Evaluation:
CPU Utilization: Higher usage is preferable.
Throughput: Number of processes completed per time unit.
Turnaround Time: Total time taken to execute a process from submission to completion.
Waiting Time: Total time spent waiting in the ready queue.
Response Time: Time until the first response is produced for a request, particularly in interactive systems.
Aim to minimize variance and maximum response time.
Scheduling Algorithms
FCFS (First Come First Served)
Processes are executed in the order they arrive.
Characteristics:
Non-preemptive, easy implementation.
Generally leads to poor performance in waiting time, turnaround time, and response time.
SJF (Shortest Job First)
Processes are scheduled based on the length of their next CPU burst.
Non-preemptive: Once a process starts, it runs to completion.
Preemptive: A new process can interrupt the current one if it has a shorter burst.
Optimality: Provides minimum average waiting time and turnaround time.
Priority Scheduling
Each process is assigned a priority, and those with higher priority are executed first.
Can be preemptive or non-preemptive. Risks include potential starvation of low-priority processes.
Round Robin (RR) Scheduling
Assigns a fixed time quantum for each process.
Handles processes on a first-come, first-served basis within each time quantum.
Performance Consideration: Turnaround time and waiting time depend significantly on the size of the time quantum.
Multilevel Queue Scheduling
Separates ready queues into different categories, with each queue having its own scheduling algorithm.
Multilevel Feedback Queue Scheduling
Allows processes to move between queues to prevent starvation, adjusting based on process behavior.
Real-time Scheduling
Used in systems requiring guaranteed timing for tasks.
Hard real-time: Must complete within time limits.
Soft real-time: Prioritizes critical processes in a system general-purpose multitasking setting.
Linux Scheduling Example
Linux has varying approaches across versions (2.2, 2.5, 2.6.23) that evolve from priority-based scheduling systems to the Completely Fair Scheduler (CFS) which aims to distribute CPU time proportionally based on process priority and interactivity.
Current Approach (CFS):
Tasks are assigned CPU time based on their “nice” values and virtual run time, which prioritize responsiveness in general multitasking environments.