* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download STUDY GUIDE FOR THE MIDTERM EXAM of Tuesday November 3
Plan 9 from Bell Labs wikipedia , lookup
Mobile operating system wikipedia , lookup
Spring (operating system) wikipedia , lookup
Copland (operating system) wikipedia , lookup
Unix security wikipedia , lookup
Security-focused operating system wikipedia , lookup
Burroughs MCP wikipedia , lookup
Dr. Dale Parson’s Study Guide for the CSC343 midterm exam on Nov 3, Operating Systems, Fall 2015 Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009 Four Components of a Computer System Operating System Concepts – 8th Edition 1.2 Silberschatz, Galvin and Gagne ©2009 Computer System Organization Computer-system operation One or more CPUs, device controllers connect through common bus providing access to shared memory Concurrent execution of CPUs and devices competing for memory cycles Operating System Concepts – 8th Edition 1.3 Silberschatz, Galvin and Gagne ©2009 Common Functions of Interrupts Interrupt transfers control to the interrupt service routine generally, through the interrupt vector, which contains the addresses of all the service routines Interrupt architecture must save the address of the interrupted instruction Incoming interrupts are disabled while another interrupt is being processed to prevent a lost interrupt A trap is a software-generated interrupt caused either by an error or a user request An operating system is interrupt driven Operating System Concepts – 8th Edition 1.4 Silberschatz, Galvin and Gagne ©2009 I/O Structure After I/O starts, control returns to user program only upon I/O completion Wait instruction idles the CPU until the next interrupt Wait loop (contention for memory access) At most one I/O request is outstanding at a time, no simultaneous I/O processing After I/O starts, control returns to user program without waiting for I/O completion System call – request to the operating system to allow user to wait for I/O completion Device-status table contains entry for each I/O device indicating its type, address, and state Operating system indexes into I/O device table to determine device status and to modify table entry to include interrupt Operating System Concepts – 8th Edition 1.5 Silberschatz, Galvin and Gagne ©2009 Direct Memory Access Structure Used for high-speed I/O devices able to transmit information at close to memory speeds Device controller transfers blocks of data from buffer storage directly to main memory without CPU intervention Only one interrupt is generated per block, rather than the one interrupt per byte Operating System Concepts – 8th Edition 1.6 Silberschatz, Galvin and Gagne ©2009 How a Modern Computer Works A von Neumann architecture Operating System Concepts – 8th Edition 1.7 Silberschatz, Galvin and Gagne ©2009 Storage-Device Hierarchy Operating System Concepts – 8th Edition 1.8 Silberschatz, Galvin and Gagne ©2009 Multiprocessors Review Figures 1 and 3 at: http://faculty.kutztown.edu/parson/spring2012/MultiprocessorJanuary2012P arson.pdf Operating System Concepts – 8th Edition 1.9 Silberschatz, Galvin and Gagne ©2009 Operating System Structure Multiprogramming needed for efficiency Single user cannot keep CPU and I/O devices busy at all times Multiprogramming organizes jobs (code and data) so CPU always has one to execute A subset of total jobs in system is kept in memory One job selected and run via job scheduling When it has to wait (for I/O for example), OS switches to another job Timesharing (multitasking) is logical extension in which CPU switches jobs so frequently that users can interact with each job while it is running, creating interactive computing Response time should be < 1 second Each user has at least one program executing in memory process If several jobs ready to run at the same time CPU scheduling If processes don’t fit in memory, swapping moves them in and out to run Virtual memory allows execution of processes not completely in memory Operating System Concepts – 8th Edition 1.10 Silberschatz, Galvin and Gagne ©2009 Operating-System Operations Interrupt driven by hardware Software error or request creates exception or trap Division by zero, request for operating system service Other process problems include infinite loop, processes modifying each other or the operating system Dual-mode operation allows OS to protect itself and other system components User mode and kernel mode Mode bit provided by hardware Provides ability to distinguish when system is running user code or kernel code Some instructions designated as privileged, only executable in kernel mode System call changes mode to kernel, return from call resets it to user Operating System Concepts – 8th Edition 1.11 Silberschatz, Galvin and Gagne ©2009 Transition from User to Kernel Mode Timer to prevent infinite loop / process hogging resources Set interrupt after specific period Operating system decrements counter When counter zero generate an interrupt Set up before scheduling process to regain control or terminate program that exceeds allotted time Operating System Concepts – 8th Edition 1.12 Silberschatz, Galvin and Gagne ©2009 Migration of Integer A from Disk to Register Multitasking environments must be careful to use most recent value, no matter where it is stored in the storage hierarchy Multiprocessor environment must provide cache coherency in hardware such that all CPUs have the most recent value in their cache Distributed environment situation even more complex Several copies of a datum can exist Various solutions covered in Chapter 17 Operating System Concepts – 8th Edition 1.13 Silberschatz, Galvin and Gagne ©2009 CH2: A View of Operating System Services Operating System Concepts – 8th Edition 1.14 Silberschatz, Galvin and Gagne ©2009 Bourne Shell Command Interpreter Operating System Concepts – 8th Edition 1.15 Silberschatz, Galvin and Gagne ©2009 GUIs Operating System Concepts – 8th Edition 1.16 Silberschatz, Galvin and Gagne ©2009 System Calls Programming interface to the services provided by the OS Typically written in a high-level language (C or C++) Mostly accessed by programs via a high-level Application Program Interface (API) rather than direct system call use Three most common APIs are Win32 API for Windows, POSIX API for POSIX-based systems (including virtually all versions of UNIX, Linux, and Mac OS X), and Java API for the Java virtual machine (JVM) Why use APIs rather than system calls? (Note that the system-call names used throughout this text are generic) Operating System Concepts – 8th Edition 1.17 Silberschatz, Galvin and Gagne ©2009 Example of System Calls System call sequence to copy the contents of one file to another file Operating System Concepts – 8th Edition 1.18 Silberschatz, Galvin and Gagne ©2009 System Call Implementation Typically, a number associated with each system call System-call interface maintains a table indexed according to these numbers The system call interface invokes intended system call in OS kernel and returns status of the system call and any return values The caller need know nothing about how the system call is implemented Just needs to obey API and understand what OS will do as a result call Most details of OS interface hidden from programmer by API Managed by run-time support library (set of functions built into libraries included with compiler) Operating System Concepts – 8th Edition 1.19 Silberschatz, Galvin and Gagne ©2009 API – System Call – OS Relationship Operating System Concepts – 8th Edition 1.20 Silberschatz, Galvin and Gagne ©2009 Types of System Calls Process control create process, terminate process end, abort load, execute get process attributes, set process attributes wait for time wait event, signal event allocate and free memory Dump memory if error Debugger for determining bugs, single step execution Locks for managing access to shared data between processes Operating System Concepts – 8th Edition 1.21 Silberschatz, Galvin and Gagne ©2009 Types of System Calls File management create file, delete file open, close file read, write, reposition get and set file attributes Device management request device, release device read, write, reposition get device attributes, set device attributes logically attach or detach devices Operating System Concepts – 8th Edition 1.22 Silberschatz, Galvin and Gagne ©2009 Types of System Calls (Cont.) Information maintenance get time or date, set time or date get system data, set system data get and set process, file, or device attributes Communications create, delete communication connection send, receive messages if message passing model to host name or process name From client to server Shared-memory model create and gain access to memory regions transfer status information attach and detach remote devices Operating System Concepts – 8th Edition 1.23 Silberschatz, Galvin and Gagne ©2009 Types of System Calls (Cont.) Protection Control access to resources Get and set permissions Allow and deny user access Operating System Concepts – 8th Edition 1.24 Silberschatz, Galvin and Gagne ©2009 CHAPTER 3: Process Concept An operating system executes a variety of programs: Batch system – jobs Time-shared systems – user programs or tasks Textbook uses the terms job and process almost interchangeably Process – a program in execution; process execution must progress in sequential fashion A process includes: program counter stack data section heap (dynamically allocated memory) PARSON NOTE: In a multithreaded process each thread has its own program counter (a.k.a. instruction pointer), and other CPU registers such as Stack Pointer and Frame Pointer. Operating System Concepts – 8th Edition 1.25 Silberschatz, Galvin and Gagne ©2009 Process in (Virtual) Memory Operating System Concepts – 8th Edition 1.26 Silberschatz, Galvin and Gagne ©2009 Process (or Thread!) State As a process (or thread) executes, it changes state new: The process is being created running: Instructions are being executed waiting: The process is waiting for some event to occur ready: The process is waiting to be assigned to a processor terminated: The process has finished execution Operating System Concepts – 8th Edition 1.27 Silberschatz, Galvin and Gagne ©2009 KNOW fcfs, sjf and rr schedulers. Operating System Concepts – 8th Edition 1.28 Silberschatz, Galvin and Gagne ©2009 Process Control Block (PCB) Information associated with each process Process state Program counter (PER THREAD) CPU registers (PER THREAD) CPU scheduling information (PER THREAD) Memory-management information Accounting information (PER PROCESS & THREAD) I/O status information (PER PROCESS & THREAD) Operating System Concepts – 8th Edition 1.29 Silberschatz, Galvin and Gagne ©2009 CPU Switch From Process to Process Operating System Concepts – 8th Edition 1.30 Silberschatz, Galvin and Gagne ©2009 Process Scheduling Queues Job queue – set of all processes in the system Ready queue – set of all processes residing in main memory, ready and waiting to execute Device queues – set of processes waiting for an I/O device Processes migrate among the various queues Operating System Concepts – 8th Edition 1.31 Silberschatz, Galvin and Gagne ©2009 Schedulers Long-term scheduler (or job scheduler) – selects which processes should be brought into the ready queue Short-term scheduler (or CPU scheduler) – selects which process (thread!) should be executed next and allocates CPU Operating System Concepts – 8th Edition 1.32 Silberschatz, Galvin and Gagne ©2009 Representation of Process Scheduling Queueing diagram represents queues, resources, flows Operating System Concepts – 8th Edition 1.33 Silberschatz, Galvin and Gagne ©2009 Addition of Medium Term Scheduling Operating System Concepts – 8th Edition 1.34 Silberschatz, Galvin and Gagne ©2009 Schedulers (Cont) Short-term scheduler is invoked very frequently (milliseconds) (must be fast) Long-term scheduler is invoked very infrequently (seconds, minutes) (may be slow) The long-term scheduler controls the degree of multiprogramming Processes can be described as either: I/O-bound process – spends more time doing I/O than computations, many short CPU bursts CPU-bound process – spends more time doing computations; few very long CPU bursts Operating System Concepts – 8th Edition 1.35 Silberschatz, Galvin and Gagne ©2009 Context Switch When CPU switches to another process, the system must save the state of the old process and load the saved state for the new process via a context switch Context of a process represented in the PCB Context-switch time is overhead; the system does no useful work while switching Time dependent on hardware support Operating System Concepts – 8th Edition 1.36 Silberschatz, Galvin and Gagne ©2009 Process Creation Parent process create children processes, which, in turn create other processes, forming a tree of processes Generally, process identified and managed via a process identifier (pid) Resource sharing Parent and children share all resources Children share subset of parent’s resources Parent and child share no resources Execution Parent and children execute concurrently Parent waits until children terminate Operating System Concepts – 8th Edition 1.37 Silberschatz, Galvin and Gagne ©2009 Process Termination Process executes last statement and asks the operating system to delete it (exit) Output data from child to parent (via wait) Process’ resources are deallocated by operating system Parent may terminate execution of children processes (abort) Child has exceeded allocated resources Task assigned to child is no longer required If parent is exiting Some operating system do not allow child to continue if its parent terminates – All children terminated - cascading termination Operating System Concepts – 8th Edition 1.38 Silberschatz, Galvin and Gagne ©2009 Interprocess Communication Processes within a system may be independent or cooperating Cooperating process can affect or be affected by other processes, including sharing data Reasons for cooperating processes: Information sharing Computation speedup Modularity Convenience Cooperating processes need interprocess communication (IPC) Two models of IPC Shared memory Message passing Operating System Concepts – 8th Edition 1.39 Silberschatz, Galvin and Gagne ©2009 CH4: Single and Multithreaded Processes Operating System Concepts – 8th Edition 1.40 Silberschatz, Galvin and Gagne ©2009 Benefits Responsiveness Resource Sharing Economy Scalability Operating System Concepts – 8th Edition 1.41 Silberschatz, Galvin and Gagne ©2009 Multithreaded Server Architecture Operating System Concepts – 8th Edition 1.42 Silberschatz, Galvin and Gagne ©2009 Concurrent Execution on a Single-core System Operating System Concepts – 8th Edition 1.43 Silberschatz, Galvin and Gagne ©2009 Parallel Execution on a Multicore System Operating System Concepts – 8th Edition 1.44 Silberschatz, Galvin and Gagne ©2009 Many-to-One Model (BEFORE THREAD-SAFE KERNELS!) Operating System Concepts – 8th Edition 1.45 Silberschatz, Galvin and Gagne ©2009 One-to-OneModel (THREAD SAFE!) Operating System Concepts – 8th Edition 1.46 Silberschatz, Galvin and Gagne ©2009 Many-to-Many Model (NOT THERE YET) Operating System Concepts – 8th Edition 1.47 Silberschatz, Galvin and Gagne ©2009 CH5: Race Condition & Deadlocks Results of execution and possible bugs depend on relative timing of threads interacting in a critical section. A critical section comprises regions of code that interact over a shared, non-atomic data set. Operating System Concepts – 8th Edition 1.48 Silberschatz, Galvin and Gagne ©2009 Solution to Critical-Section Problem 1. Mutual Exclusion - If process Pi is executing in its critical section, then no other processes can be executing in their critical sections 2. Progress - If no process is executing in its critical section and there exist some processes that wish to enter their critical section, then the selection of the processes that will enter the critical section next cannot be postponed indefinitely 3. Bounded Waiting - A bound must exist on the number of times that other processes are allowed to enter their critical sections after a process has made a request to enter its critical section and before that request is granted Assume that each process executes at a nonzero speed No assumption concerning relative speed of the N processes Operating System Concepts – 8th Edition 1.49 Silberschatz, Galvin and Gagne ©2009 Critical-Section Handling in OS Two approaches depending on if kernel is preemptive or nonpreemptive Preemptive – allows preemption of process when running in kernel mode Non-preemptive – runs until exits kernel mode, blocks, or voluntarily yields CPU Essentially free of race conditions in kernel mode Operating System Concepts – 8th Edition 1.50 Silberschatz, Galvin and Gagne ©2009 Synchronization Hardware Many systems provide hardware support for critical section code Uniprocessors – could disable interrupts Currently running code would execute without preemption Generally too inefficient on multiprocessor systems Operating systems using this not broadly scalable Modern machines provide special atomic hardware instructions Atomic = non-interruptable Either test memory word and set value Or swap contents of two memory words Operating System Concepts – 8th Edition 1.51 Silberschatz, Galvin and Gagne ©2009 test_and_set Instruction Definition: boolean test_and_set (boolean *target) { boolean rv = *target; *target = TRUE; return rv: } 1. Executed atomically 2. Returns the original value of passed parameter 3. Set the new value of passed parameter to “TRUE”. Operating System Concepts – 8th Edition 1.52 Silberschatz, Galvin and Gagne ©2009 compare_and_swap Instruction Definition: int compare _and_swap(int *value, int expected, int new_value) { int temp = *value; if (*value == expected) *value = new_value; return temp; } 1. Executed atomically 2. Returns the original value of passed parameter “value” 3. Set the variable “value” the value of the passed parameter “new_value” but only if “value” ==“expected”. That is, the swap takes place only under this condition. Operating System Concepts – 8th Edition 1.53 Silberschatz, Galvin and Gagne ©2009 Mutex Locks Previous solutions are complicated and generally inaccessible to application programmers OS designers build software tools to solve critical section problem Simplest is mutex lock Protect a critical section by first acquire() a lock then release() the lock Boolean variable indicating if lock is available or not Calls to acquire() and release() must be atomic Usually implemented via hardware atomic instructions But this solution requires busy waiting This lock therefore called a spinlock Operating System Concepts – 8th Edition 1.54 Silberschatz, Galvin and Gagne ©2009 Solution to Critical-section Problem Using Locks do { acquire lock critical section release lock remainder section } while (TRUE); We have simulated both spin locks that use atomic variables in Atomic.stm, and mutex locks that cause waiting threads to block on an O.S. queue that holds threads waiting on the lock in Mutex.stm. UNDERSTAND WHAT YOU HAVE MODELED. Operating System Concepts – 8th Edition 1.55 Silberschatz, Galvin and Gagne ©2009 Semaphore Synchronization tool that does not require busy waiting Semaphore S – integer variable Two standard operations modify S: wait() and signal() Originally called P() and V() Less complicated Can only be accessed via two indivisible (atomic) operations wait (S) { while S <= 0 ; // no-op S--; } signal (S) { S++; } Operating System Concepts – 8th Edition 1.56 Silberschatz, Galvin and Gagne ©2009 Semaphore as General Synchronization Tool Counting semaphore – integer value can range over an unrestricted domain Binary semaphore – integer value can range only between 0 and 1; can be simpler to implement Also known as mutex locks Can implement a counting semaphore S as a binary semaphore Provides mutual exclusion Semaphore mutex; // initialized to 1 do { wait (mutex); // Critical Section signal (mutex); // remainder section } while (TRUE); Operating System Concepts – 8th Edition 1.57 Silberschatz, Galvin and Gagne ©2009 Deadlock and Starvation Deadlock – two or more processes are waiting indefinitely for an event that can be caused by only one of the waiting processes Let S and Q be two semaphores initialized to 1 P0 P1 wait (S); wait (Q); wait (Q); wait (S); . . . . . . signal (S); signal (Q); signal (Q); signal (S); Starvation – indefinite blocking. A process may never be removed from the semaphore queue in which it is suspended Priority Inversion - Scheduling problem when lower-priority process holds a lock needed by higher-priority process Operating System Concepts – 8th Edition 1.58 Silberschatz, Galvin and Gagne ©2009 Readers-Writers Problem A data set is shared among a number of concurrent processes Readers – only read the data set; they do not perform any updates Writers – can both read and write Problem – allow multiple readers to read at the same time. Only one single writer can access the shared data at the same time Shared Data Data set Semaphore mutex initialized to 1 Semaphore wrt initialized to 1 Integer readcount initialized to 0 Operating System Concepts – 8th Edition 1.59 Silberschatz, Galvin and Gagne ©2009 Problems with Semaphores Correct use of semaphore operations: signal (mutex) …. wait (mutex) wait (mutex) … wait (mutex) Omitting of wait (mutex) or signal (mutex) (or both) There are similar problems with MUTEX (e.g., missing unlock(), forgetting to lock() a critical section) and CONDITION VARIABLE (forgetting to signal, using signal where signalAll may be necessary when the thread at the front of the queue does not have its condition satisfied). Operating System Concepts – 8th Edition 1.60 Silberschatz, Galvin and Gagne ©2009 Monitors A high-level LANGUAGE abstraction that provides a convenient and effective mechanism for process synchronization Only one process may be active within the monitor at a time monitor monitor-name { // shared variable declarations procedure P1 (…) { …. } … procedure Pn (…) {……} Initialization code ( ….) { … } … } } Operating System Concepts – 8th Edition 1.61 Silberschatz, Galvin and Gagne ©2009 Condition Variables CONDITION VARIABLES PROVIDE A WAY FOR ONE THREAD THAT IS HOLDING A MUTEX TO SIGNAL ONE OR MORE OTHER THREADS THAT ARE WAITING FOR A CONDITION TO BECOME TRUE IN A CRITICAL SECTION PROTECTED BY THAT MUTEX!!!!!!!!! condition x, y; Two operations on a condition variable: x.wait () – a process that invokes the operation is suspended. x.signal () – resumes one of processes (if any) that invoked x.wait () Operating System Concepts – 8th Edition 1.62 Silberschatz, Galvin and Gagne ©2009 The Deadlock Problem A set of blocked processes each holding a resource and waiting to acquire a resource held by another process in the set Example System has 2 disk drives P1 and P2 each hold one disk drive and each needs another one Example semaphores A and B, initialized to 1 P0 P1 wait (A); wait(B) wait (B); wait(A) Operating System Concepts – 8th Edition 1.63 Silberschatz, Galvin and Gagne ©2009 Deadlock Characterization Deadlock can arise if four conditions hold simultaneously. Mutual exclusion: only one process at a time can use a resource Hold and wait: a process holding at least one resource is waiting to acquire additional resources held by other processes No preemption: a resource can be released only voluntarily by the process holding it, after that process has completed its task Circular wait: there exists a set {P0, P1, …, P0} of waiting processes such that P0 is waiting for a resource that is held by P1, P1 is waiting for a resource that is held by P2, …, Pn–1 is waiting for a resource that is held by Pn, and P0 is waiting for a resource that is held by P0. Operating System Concepts – 8th Edition 1.64 Silberschatz, Galvin and Gagne ©2009 Parson’s Basic Facts PARSON’S NOTE FOR THE PREVIOUS SLIDES AND THIS SECTION: Cyclic waiting among threads of execution is the main aspect of deadlock to memorize. The previous slide calls it Circular Wait. It implies the other three requirements of Mutual Exclusion, Hold & Wait, and No Preemption. One way to avoid cycles is to sort locked objects (e.g., mutexes) into some full order, and always request from sorted set in that order. Sometimes you can’t do the above because you don’t have access to all locked objects in your code, e.g., if the locking occurs in imported library code. Operating System Concepts – 8th Edition 1.65 Silberschatz, Galvin and Gagne ©2009 Basic Facts If graph contains no cycles no deadlock If graph contains a cycle if only one instance per resource type, then deadlock if several instances per resource type, possibility of deadlock Operating System Concepts – 8th Edition 1.66 Silberschatz, Galvin and Gagne ©2009 Deadlock Prevention Restrain the ways request can be made Mutual Exclusion – not required for sharable resources; must hold for nonsharable resources Hold and Wait – must guarantee that whenever a process requests a resource, it does not hold any other resources Require process to request and be allocated all its resources before it begins execution, or allow process to request resources only when the process has none Low resource utilization; starvation possible Operating System Concepts – 8th Edition 1.67 Silberschatz, Galvin and Gagne ©2009 Deadlock Prevention (Cont.) No Preemption – If a process that is holding some resources requests another resource that cannot be immediately allocated to it, then all resources currently being held are released Preempted resources are added to the list of resources for which the process is waiting Process will be restarted only when it can regain its old resources, as well as the new ones that it is requesting Circular Wait – impose a total ordering of all resource types, and require that each process requests resources in an increasing order of enumeration Operating System Concepts – 8th Edition 1.68 Silberschatz, Galvin and Gagne ©2009 CH6: Histogram of CPU-burst Times http://faculty.kutztown.edu/parson/fall2013/distributions.pdf Operating System Concepts – 8th Edition 1.69 Silberschatz, Galvin and Gagne ©2009 Alternating Sequence of CPU And I/O Bursts Operating System Concepts – 8th Edition 1.70 Silberschatz, Galvin and Gagne ©2009 Scheduling Criteria CPU utilization – keep the CPU as busy as possible Throughput – # of processes that complete their execution per time unit Turnaround time – amount of time to execute a particular process Waiting time – amount of time a process has been waiting in the ready queue Response time – amount of time it takes from when a request was submitted until the first response is produced, not output (for timesharing environment) Operating System Concepts – 8th Edition 1.71 Silberschatz, Galvin and Gagne ©2009 Scheduling Algorithm Optimization Criteria Max CPU utilization Max throughput Min turnaround time Min waiting time Min response time Operating System Concepts – 8th Edition 1.72 Silberschatz, Galvin and Gagne ©2009 First-Come, First-Served (FCFS) Scheduling Process Burst Time P1 24 P2 3 P3 3 Suppose that the processes arrive in the order: P1 , P2 , P3 The Gantt Chart for the schedule is: P1 P2 0 24 P3 27 30 Waiting time for P1 = 0; P2 = 24; P3 = 27 Average waiting time: (0 + 24 + 27)/3 = 17 Operating System Concepts – 8th Edition 1.73 Silberschatz, Galvin and Gagne ©2009 FCFS Scheduling (Cont) Suppose that the processes arrive in the order P2 , P3 , P1 The Gantt chart for the schedule is: P2 0 P3 3 P1 6 30 Waiting time for P1 = 6; P2 = 0; P3 = 3 Average waiting time: (6 + 0 + 3)/3 = 3 Much better than previous case Convoy effect short process behind long process Operating System Concepts – 8th Edition 1.74 Silberschatz, Galvin and Gagne ©2009 Shortest-Job-First (SJF) Scheduling Associate with each process the length of its next CPU burst. Use these lengths to schedule the process with the shortest time SJF is optimal – gives minimum average waiting time for a given set of processes The difficulty is knowing the length of the next CPU request Operating System Concepts – 8th Edition 1.75 Silberschatz, Galvin and Gagne ©2009 Example of SJF Process Arrival Time Burst Time P1 0.0 6 P2 2.0 8 P3 4.0 7 P4 5.0 3 SJF scheduling chart P4 0 P3 P1 3 9 P2 16 24 Average waiting time = (3 + 16 + 9 + 0) / 4 = 7 Operating System Concepts – 8th Edition 1.76 Silberschatz, Galvin and Gagne ©2009 Determining Length of Next CPU Burst Can only estimate the length – should be similar to the previous one Then pick process with shortest predicted next CPU burst Can be done by using the length of previous CPU bursts, using exponential averaging 1. t n actual length of n th CPU burst 2. n 1 predicted value for the next CPU burst 3. , 0 1 4. Define : n 1 t n 1 n . Commonly, α set to ½ Preemptive version called shortest-remaining-time-first Operating System Concepts – 8th Edition 1.77 Silberschatz, Galvin and Gagne ©2009 Prediction of the Length of the Next CPU Burst Operating System Concepts – 8th Edition 1.78 Silberschatz, Galvin and Gagne ©2009 Examples of Exponential Averaging =0 n+1 = n Recent history does not count =1 n+1 = tn Only the actual last CPU burst counts If we expand the formula, we get: n+1 = tn+(1 - ) tn -1 + … +(1 - )j tn -j + … +(1 - )n +1 0 Since both and (1 - ) are less than or equal to 1, each successive term has less weight than its predecessor Operating System Concepts – 8th Edition 1.79 Silberschatz, Galvin and Gagne ©2009 Example of Shortest-remaining-time-first Now we add the concepts of varying arrival times and preemption to the analysis ProcessAarri Arrival TimeT Burst Time P1 0 8 P2 1 4 P3 2 9 P4 3 5 Preemptive SJF Gantt Chart P1 0 P2 1 P4 5 P1 10 P3 17 26 Average waiting time = [(10-1)+(1-1)+(17-2)+5-3)]/4 = 26/4 = 6.5 msec Operating System Concepts – 8th Edition 1.80 Silberschatz, Galvin and Gagne ©2009 Priority Scheduling A priority number (integer) is associated with each process The CPU is allocated to the process with the highest priority (smallest integer highest priority) Preemptive Nonpreemptive SJF is priority scheduling where priority is the inverse of predicted next CPU burst time Problem Starvation – low priority processes may never execute Solution Aging – as time progresses increase the priority of the process Operating System Concepts – 8th Edition 1.81 Silberschatz, Galvin and Gagne ©2009 Example of Priority Scheduling ProcessA arri Burst TimeT Priority P1 10 3 P2 1 1 P3 2 4 P4 1 5 P5 5 2 Priority scheduling Gantt Chart P1 0 P2 1 P1 6 P3 16 P4 18 19 Average waiting time = 8.2 msec Operating System Concepts – 8th Edition 1.82 Silberschatz, Galvin and Gagne ©2009 Round Robin (RR) Each process gets a small unit of CPU time (time quantum), usually 10-100 milliseconds. After this time has elapsed, the process is preempted and added to the end of the ready queue. If there are n processes in the ready queue and the time quantum is q, then each process gets 1/n of the CPU time in chunks of at most q time units at once. No process waits more than (n-1)q time units. Performance q large FIFO q small q must be large with respect to context switch, otherwise overhead is too high Operating System Concepts – 8th Edition 1.83 Silberschatz, Galvin and Gagne ©2009 Example of RR with Time Quantum = 4 Process P1 P2 P3 Burst Time 24 3 3 The Gantt chart is: P1 0 P2 4 P3 7 P1 10 P1 14 P1 18 22 P1 26 P1 30 Typically, higher average turnaround than SJF, but better response Operating System Concepts – 8th Edition 1.84 Silberschatz, Galvin and Gagne ©2009 Time Quantum and Context Switch Time Operating System Concepts – 8th Edition 1.85 Silberschatz, Galvin and Gagne ©2009 Multilevel Queue Ready queue is partitioned into separate queues: foreground (interactive) background (batch) Each queue has its own scheduling algorithm foreground – RR background – FCFS Scheduling must be done between the queues Fixed priority scheduling; (i.e., serve all from foreground then from background). Possibility of starvation. Time slice – each queue gets a certain amount of CPU time which it can schedule amongst its processes; i.e., 80% to foreground in RR 20% to background in FCFS Operating System Concepts – 8th Edition 1.86 Silberschatz, Galvin and Gagne ©2009 Multilevel Queue Scheduling Operating System Concepts – 8th Edition 1.87 Silberschatz, Galvin and Gagne ©2009 Example of Multilevel Feedback Queue Three queues: Q0 – RR with time quantum 8 milliseconds Q1 – RR time quantum 16 milliseconds Q2 – FCFS Scheduling A new job enters queue Q0 which is served FCFS When it gains CPU, job receives 8 milliseconds If it does not finish in 8 milliseconds, job is moved to queue Q1 At Q1 job is again served FCFS and receives 16 additional milliseconds If it still does not complete, it is preempted and moved to queue Q2 Operating System Concepts – 8th Edition 1.88 Silberschatz, Galvin and Gagne ©2009 Multiple-Processor Scheduling CPU scheduling more complex when multiple CPUs are available Homogeneous processors within a multiprocessor Asymmetric multiprocessing – only one processor accesses the system data structures, alleviating the need for data sharing Symmetric multiprocessing (SMP) – each processor is self- scheduling, all processes in common ready queue, or each has its own private queue of ready processes Currently, most common Processor affinity – process has affinity for processor on which it is currently running soft affinity hard affinity Variations including processor sets Operating System Concepts – 8th Edition 1.89 Silberschatz, Galvin and Gagne ©2009 NUMA and CPU Scheduling Note that memory-placement algorithms can also consider affinity Operating System Concepts – 8th Edition 1.90 Silberschatz, Galvin and Gagne ©2009 Multiple-Processor Scheduling – Load Balancing If SMP, need to keep all CPUs loaded for efficiency Load balancing attempts to keep workload evenly distributed Push migration – periodic task checks load on each processor, and if found pushes task from overloaded CPU to other CPUs Pull migration – idle processors pulls waiting task from busy processor Operating System Concepts – 8th Edition 1.91 Silberschatz, Galvin and Gagne ©2009 Multithreaded Multicore System Operating System Concepts – 8th Edition 1.92 Silberschatz, Galvin and Gagne ©2009 Real-Time CPU Scheduling Can present obvious challenges Soft real-time systems – no guarantee as to when critical real-time process will be scheduled Hard real-time systems – task must be serviced by its deadline Two types of latencies affect performance 1. Interrupt latency – time from arrival of interrupt to start of routine that services interrupt 2. Dispatch latency – time for schedule to take current process off CPU and switch to another Operating System Concepts – 8th Edition 1.93 Silberschatz, Galvin and Gagne ©2009 Priority-based Scheduling For real-time scheduling, scheduler must support preemptive, priority- based scheduling But only guarantees soft real-time For hard real-time must also provide ability to meet deadlines Processes have new characteristics: periodic ones require CPU at constant intervals Has processing time t, deadline d, period p 0≤t≤d≤p Rate of periodic task is 1/p Operating System Concepts – 8th Edition 1.94 Silberschatz, Galvin and Gagne ©2009 Virtualization and Scheduling Virtualization software schedules multiple guests onto CPU(s) Each guest doing its own scheduling Not knowing it doesn’t own the CPUs Can result in poor response time Can effect time-of-day clocks in guests Can undo good scheduling algorithm efforts of guests Operating System Concepts – 8th Edition 1.95 Silberschatz, Galvin and Gagne ©2009