CS4315A. Berrached:CMS:UHD3 CPU Scheduling A multiprogramming OS allows more than one process to be loaded in main memory at a time. Processes share the CPU using time- multiplexing A process execution consists of a cycle of CPU computation--I/O operations. I/O operations require orders of magnitude more time to complete. Basic Idea: When the running process requests an I/O operation, allocate CPU to another process.
CS4315A. Berrached:CMS:UHD4 CPU Scheduler CPU Scheduler: that part of the Process Manager than is responsible for –handling removal of running process from CPU –Selection of another process Two major issues: Scheduling mechanism: how is it all done? Scheduling policy: –when is it time for a process to be removed from CPU? –Which ready process should be allocated the CPU next?
CS4315A. Berrached:CMS:UHD6 Scheduling Mechanism CNTD Three parts: –enqueuer –dispatcher – context-switcher Data Structures: –Process Descriptor –Ready List
CS4315A. Berrached:CMS:UHD7 Scheduling Mechanism CNTD When a process is moved to the Ready-List –Process Descriptor (PD) is updated –the enqueuer places a pointer to PD in the Ready-List When the Scheduler switches CPU from one process to another process –the Context-Switcher saves the state of the current process in its PD. How context-switching occurs depends on how CPU multiplexing technique used: –voluntary multiplexing –involuntary multiplexing
CS4315A. Berrached:CMS:UHD8 Scheduling Mechanism CNTD Voluntary multiplexing: Running process gives up CPU voluntarily –context-switcher is invoked by running process. Involuntary multiplexing: an interrupt causes running process to be removed from CPU. –Interrupt generated by an I/O operation requested by another process. –Most commonly: a timer generated interrupt. –In either case, interrupt handler invokes context- switcher.
CS4315A. Berrached:CMS:UHD9 Scheduling Mechanism--Dispatcher After state of "old" process is saved by context- switcher, the CPU is allocated to the Dispatcher –Dispatcher state is loaded on CPU Dispatcher selects one of the ready processes enqueued in the Ready-List. Dispatcher performs another context-switch from itself to selected process (saves its state and loads state of selected process). The Process Descriptor of selected process is changed from Ready to Running.
CS4315A. Berrached:CMS:UHD10 Process Scheduling
CS4315A. Berrached:CMS:UHD19 Round Robin (RR) Scheduling
CS4315A. Berrached:CMS:UHD20 Example: RR with time quantum=20
CS4315A. Berrached:CMS:UHD21 Deadline Scheduling Real Time Systems –Processes must complete their task by specific deadlines –Main performance criteria –Scheduler must have complete knowledge of service time of each process All function must be predictable– no virtual memory –A process is admitted to ready list only if OS can guarantee deadline can be met.
CS4315A. Berrached:CMS:UHD23 Multi-Level Queue Extension of priority scheduling, which also combines other strategies Ready list is partitioned into multiple sub-lists Each process is assigned to a queue based on some criteria (type, priority, etc.) –E.g. one Q for foreground processes and one for background processes Scheduler: * in-queue strategy * cross-queue strategy –E.g. In-queue strategy: RR for foreground Q and FCFS for background A –Cross-queue strategy: Serve higher-level processes first
CS4315A. Berrached:CMS:UHD24 Multi-Level Queue Example: –Cross-Queue Strategy: Each queue get a percentage of CPU time (in a round robin fashion) which it can schedule among its processes. –E.g. Level 1: 80% of CPU time Level 2: 20% of CPU time
CS4315A. Berrached:CMS:UHD26 Example:Multi-Level Feedback Queue Gives shorter jobs higher priority without needing to predict a job’s service time requirement.
CS4315A. Berrached:CMS:UHD27 BSD UNIX Scheduling Multiple-level feedback queue approach 32 queues System processes are placed in Q0 – Q7 User processes are placed in Q8 – Q31 Dispatcher always selects a process from highest priority queue to run RR is used in each queue (time slice varies but always < 100μs) A process’s changes over time: based on nice() system calls and process’s utilization of CPU.
CS4315A. Berrached:CMS:UHD28 Windows NT/2K Multiple-level feedback queues for thread scheduling Priority to those threads that need very rapid response 32 levels 16 highest priority Qs are called real-time level queues Next 15 Qs are variable-level queue Lowest priority Q is called system-level Q. System-level Q contains a single thread called zero-page thread. It is run only when there are no other runnable threads. Scheduling goes from highest level down Scheduling is preemptive: if a high-priority thread becomes runnable while a lower priority thread is running, the latter is preempted and the higher level thread will begin to use the processor