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 hardware- dependent
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 ThreadCPU1 st I/O2 nd I/O T110 msn/a T215 msat 2ms for 5msn/a T312 msat 4ms for 2msat 8ms for 2ms CPU: I/O:
Shortest Job First (Nonpreemptive) ThreadCPU1 st I/O2 nd I/O T110 msn/a T215 msat 2ms for 5msn/a T312 msat 4ms for 2msat 8ms for 2ms CPU: I/O:
Shortest Job First (Preemptive) ThreadCPU1 st I/O2 nd I/O T110 msn/a T215 msat 2ms for 5msn/a T312 msat 4ms for 2msat 8ms for 2ms CPU: I/O:
Priority (Preemptive) ThreadPrioCPU1 st I/O2 nd I/O T1210 msn/a T2315 msat 2ms for 5msn/a T3112 msat 4ms for 2msat 8ms for 2ms 1 23 CPU: I/O:
Round Robin ThreadCPU1 st I/O2 nd I/O T110 msn/a T215 msat 2ms for 5msn/a T312 msat 4ms for 2msat 8ms for 2ms 1 23 CPU: I/O:
Recapping Scheduling in Java Java 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 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)