Tutorial 4 Scheduling Why do we need scheduling? • To manage processes according to requirements of a system, like: – User responsiveness or – Throughput • Performance of a scheduler is determined mainly by: – Context switch time – Scheduling policy 1, 2, 3, 4, 5, 6, Context Switch! • Switching from one process running on the CPU to another process • Saves all the registers of outgoing process (to memory), then loads all the registers of incoming process (from memory) • Can be time-costly; mostly hardwaredependent Scheduling • The mechanism that determines when the CPU will be allocated to processes, and in what order • Two classes of scheduling strategies: – Nonpreemptive (aka Batch) – Preemptive Non-preemptive policies • Allow any process to run to completion once it has been allocated to the CPU. Current process does not get interrupted. • Some examples: – First Come First Serve (FCFS) – Shortest Job Next (SJN) – Priority scheduling – Deadline scheduling Preemptive policies • Allow another process to interrupt current process if: – It has a higher priority – The time quantum has elapsed • Some examples: – Round Robin – Multiple-level Queues Scheduling examples • Given three threads, their execution times and I/O needs, apply scheduling policies • Threads are placed on ready queue in order: T1, T2 then T3 * Specific to Round Robin: – Time Quantum of 3ms – Context switch time considered negligible in this example First Come First Serve Thread CPU 1st I/O 2nd I/O T1 10 ms n/a n/a T2 15 ms at 2ms for 5ms T3 12 ms at 4ms for 2ms at 8ms for 2ms 1 CPU: 0 I/O: 5 2 10 3 2 15 2 n/a 20 3 3 25 30 3 35 3 40 Shortest Job First (Nonpreemptive) Thread CPU 1st I/O 2nd I/O T1 10 ms n/a n/a T2 15 ms at 2ms for 5ms T3 12 ms at 4ms for 2ms at 8ms for 2ms 1 CPU: 0 I/O: 5 3 10 2 3 15 3 2 20 2 n/a 25 3 3 30 35 40 Shortest Job First (Preemptive) Thread CPU 1st I/O 2nd I/O T1 10 ms n/a n/a T2 15 ms at 2ms for 5ms T3 12 ms at 4ms for 2ms at 8ms for 2ms 1 CPU: 0 I/O: 5 3 10 2 3 15 3 2 20 2 3 25 3 n/a 2 30 35 40 Priority (Preemptive) Thread Prio CPU 1st I/O 2nd I/O n/a n/a T1 2 10 ms T2 3 15 ms at 2ms for 5ms T3 1 12 ms at 4ms for 2ms at 8ms for 2ms 3 CPU: 0 I/O: 1 5 3 3 1 10 3 15 3 1 20 2 n/a 2 25 30 2 35 40 Round Robin Thread CPU 1st I/O 2nd I/O T1 10 ms n/a n/a T2 15 ms at 2ms for 5ms T3 12 ms at 4ms for 2ms at 8ms for 2ms 3 1 CPU: 0 I/O: 2 3 1 5 13 2 10 2 n/a 1 15 3 3 20 2 32 2 25 3 30 3 2 35 40 Recapping Scheduling in Java Java 1.2.1 and prior (“green”) threads: • Threads are managed by Java VM • One thread runs at a time • Thread is only taken off the CPU when: – it yields – it blocks (on a resource) – it exits – a higher priority thread becomes runnable (not always) New-Style Scheduling in Java Post-1.2.1 versions of Java: • Threads are managed by the host OS • Allows multiple threads to run “concurrently” • Thread is taken off the CPU as in previous versions, but also – when its time quantum expires (if supported by OS)
© Copyright 2026 Paperzz