Module 4: Processes! • Process Concept! • Process Scheduling! • Operation on Processes! • Cooperating Processes! • Interprocess Communication! Operating System Concepts! 4.1! Silberschatz and Galvin ©1999 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! Operating System Concepts! 4.2! Silberschatz and Galvin ©1999 Process State! • As a process 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 process.! terminated: The process has finished execution.! Operating System Concepts! 4.3! Silberschatz and Galvin ©1999 Diagram of Process State! Operating System Concepts! 4.4! Silberschatz and Galvin ©1999 Process Control Block (PCB)! Information associated with each process.! • Process state! • Program counter! • CPU registers! • CPU scheduling information! • Memory-management information! • Accounting information! • I/O status information! Operating System Concepts! 4.5! Silberschatz and Galvin ©1999 Process Control Block (PCB)! Operating System Concepts! 4.6! Silberschatz and Galvin ©1999 CPU Switch From Process to Process! Operating System Concepts! 4.7! Silberschatz and Galvin ©1999 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.! • Process migration between the various queues.! Operating System Concepts! 4.8! Silberschatz and Galvin ©1999 Ready Queue And Various I/O Device Queues! Operating System Concepts! 4.9! Silberschatz and Galvin ©1999 Representation of Process Scheduling! Operating System Concepts! 4.10! Silberschatz and Galvin ©1999 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 should be executed next and allocates CPU.! Operating System Concepts! 4.11! Silberschatz and Galvin ©1999 Addition of Medium Term Scheduling! Operating System Concepts! 4.12! Silberschatz and Galvin ©1999 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! 4.13! Silberschatz and Galvin ©1999 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.! • Context-switch time is overhead; the system does no useful work while switching.! • Time dependent on hardware support.! Operating System Concepts! 4.14! Silberschatz and Galvin ©1999 Process Creation! • Parent process creates children processes, which, in turn create other processes, forming a tree of processes.! • 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! 4.15! Silberschatz and Galvin ©1999 Process Creation (Cont.)! • Address space! – Child duplicate of parent.! – Child has a program loaded into it.! • UNIX examples! – fork system call creates new process! – execve system call used after a fork to replace the process’ memory space with a new program.! Operating System Concepts! 4.16! Silberschatz and Galvin ©1999 A Tree of Processes On A Typical UNIX System! Operating System Concepts! 4.17! Silberschatz and Galvin ©1999 Process Termination! • Process executes last statement and asks the operating system to decide 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.! – Parent is exiting.! Operating system does not allow child to continue if its parent terminates.! Cascading termination.! Operating System Concepts! 4.18! Silberschatz and Galvin ©1999 Cooperating Processes! • Independent process cannot affect or be affected by the execution of another process.! • Cooperating process can affect or be affected by the execution of another process! • Advantages of process cooperation! – – – – Information sharing ! Computation speed-up! Modularity! Convenience! Operating System Concepts! 4.19! Silberschatz and Galvin ©1999 Producer-Consumer Problem! • Paradigm for cooperating processes, producer process produces information that is consumed by a consumer process.! – unbounded-buffer places no practical limit on the size of the buffer.! – bounded-buffer assumes that there is a fixed buffer size.! Operating System Concepts! 4.20! Silberschatz and Galvin ©1999 Bounded-Buffer – Shared-Memory Solution! • Shared data! var n;! type item = … ;! var buffer. array [0..n–1] of item;! in, out: 0..n–1;! • Producer process ! repeat! …! produce an item in nextp! …! while in+1 mod n = out do no-op;! buffer [in] :=nextp;! in :=in+1 mod n;! until false;! Operating System Concepts! 4.21! Silberschatz and Galvin ©1999 Bounded-Buffer (Cont.)! • Consumer process ! repeat! while in = out do no-op;! nextc := buffer [out];! out := out+1 mod n;! !…! consume the item in nextc! ! …! until false;! • Solution is correct, but can only fill up n–1 buffer.! ! Operating System Concepts! 4.22! Silberschatz and Galvin ©1999 Threads! • A thread (or lightweight process) is a basic unit of CPU utilization; it consists of:! – program counter! – register set ! – stack space! • A thread shares with its peer threads its:! – code section! – data section! – operating-system resources! collectively know as a task.! • A traditional or heavyweight process is equal to a task with one thread! Operating System Concepts! 4.23! Silberschatz and Galvin ©1999 Multiple Threads within a Task! Operating System Concepts! 4.24! Silberschatz and Galvin ©1999 Example:Several Threads in Word Processor! 1- Interactive thread.! 2- Formatting thread in background.! 3- Auto-saving thread in background.! Operating System Concepts! 4.25! Silberschatz and Galvin ©1999 Example:Several Threads in Web Server! - Threads in web server.! Operating System Concepts! 4.26! Silberschatz and Galvin ©1999 Example:Several Threads in Web Server (Cont.)! - What happen if we have a web server with single thread? ! Operating System Concepts! 4.27! Silberschatz and Galvin ©1999 Threads (Cont.)! • In a multiple threaded task, while one server thread is blocked and waiting, a second thread in the same task can run.! – Cooperation of multiple threads in same job confers higher throughput and improved performance.! – Applications that require sharing a common buffer (i.e., producer-consumer) benefit from thread utilization.! • Threads provide a mechanism that allows sequential processes to make blocking system calls while also achieving parallelism.! • Kernel-supported threads (Mach and OS/2).! • User-level threads; supported above the kernel, via a set of library calls at the user level.! • Hybrid approach implements both user-level and kernelsupported threads (Solaris 2).! Operating System Concepts! 4.28! Silberschatz and Galvin ©1999 Threads and Processes! Operating System Concepts! 4.29! Silberschatz and Galvin ©1999 Threads and Processes (Cont.)! Operating System Concepts! 4.30! Silberschatz and Galvin ©1999 Thread Resources! Operating System Concepts! 4.31! Silberschatz and Galvin ©1999 Threads’ States! 1- Spawn 2- Block 3- Unblock 4- Finish Operating System Concepts! 4.32! Silberschatz and Galvin ©1999 Threads’ States! Operating System Concepts! 4.33! Silberschatz and Galvin ©1999 User-level and Kernel-level Threads! Operating System Concepts! 4.34! Silberschatz and Galvin ©1999 User-level and Kernel-level Threads! Operating System Concepts! 4.35! Silberschatz and Galvin ©1999 User-level and Kernel-level Threads! H.W.! ! What is Jacketing?! Operating System Concepts! 4.36! Silberschatz and Galvin ©1999 Interprocess Communication (IPC)! • Mechanism for processes to communicate and to synchronize their actions.! • Message system – processes communicate with each other without resorting to shared variables.! • IPC facility provides two operations:! – send(message) – message size fixed or variable ! – receive(message)! • If P and Q wish to communicate, they need to:! – establish a communication link between them! – exchange messages via send/receive! • Implementation of communication link! – physical (e.g., shared memory, hardware bus)! – logical (e.g., logical properties)! Operating System Concepts! 4.37! Silberschatz and Galvin ©1999 Implementation Questions! • How are links established?! • Can a link be associated with more than two processes?! • How many links can there be between every pair of communicating processes?! • What is the capacity of a link?! • Is the size of a message that the link can accommodate fixed or variable?! • Is a link unidirectional or bi-directional?! Operating System Concepts! 4.38! Silberschatz and Galvin ©1999 Direct Communication! • Processes must name each other explicitly:! – send (P, message) – send a message to process P! – receive(Q, message) – receive a message from process Q! • Properties of communication link! – Links are established automatically.! – A link is associated with exactly one pair of communicating processes.! – Between each pair there exists exactly one link.! – The link may be unidirectional, but is usually bi-directional.! Operating System Concepts! 4.39! Silberschatz and Galvin ©1999 Indirect Communication! • Messages are directed and received from mailboxes (also referred to as ports).! – Each mailbox has a unique id.! – Processes can communicate only if they share a mailbox.! • Properties of communication link! – Link established only if processes share a common mailbox! – A link may be associated with many processes.! – Each pair of processes may share several communication links.! – Link may be unidirectional or bi-directional.! • Operations! – create a new mailbox! – send and receive messages through mailbox! – destroy a mailbox! Operating System Concepts! 4.40! Silberschatz and Galvin ©1999 Indirect Communication (Continued)! • Mailbox sharing! – P1, P2, and P3 share mailbox A.! – P1, sends; P2 and P3 receive.! – Who gets the message?! • Solutions! – Allow a link to be associated with at most two processes.! – Allow only one process at a time to execute a receive operation.! – Allow the system to select arbitrarily the receiver. Sender is notified who the receiver was.! Operating System Concepts! 4.41! Silberschatz and Galvin ©1999 Buffering! • Queue of messages attached to the link; implemented in one of three ways.! 1. !Zero capacity – 0 messages Sender must wait for receiver (rendezvous).! 2. !Bounded capacity – finite length of n messages Sender must wait if link full.! 3. !Unbounded capacity – infinite length Sender never waits.! Operating System Concepts! 4.42! Silberschatz and Galvin ©1999 Exception Conditions – Error Recovery! • Process terminates! • Lost messages! • Scrambled Messages! Operating System Concepts! 4.43! Silberschatz and Galvin ©1999