1 of 33

Chapter 3: Processes��https://classroom.google.com/c/Nzk1NzAxMzkyMTIy?cjc=2lo4evz7

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

2 of 33

Process Concept

  • An operating system executes a variety of programs:
    • Batch system – jobs
    • Time-shared systems – user programs or tasks
  • Process – a program in execution; process execution must progress in sequential fashion
  • Multiple parts
    • The program code, also called text section
    • Current activity including program counter, processor registers
    • Stack containing temporary data
      • Function parameters, return addresses, local variables
    • Data section containing global variables
    • Heap containing memory dynamically allocated during run time

3.2

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

3 of 33

Process Concept (Cont.)

  • Program is passive entity stored on disk (executable file), process is active
    • Program becomes process when executable file loaded into memory
  • Execution of program started via GUI mouse clicks, command line entry of its name, etc
  • One program can be several processes
    • Consider multiple users executing the same program

3.3

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

4 of 33

Process in Memory

3.4

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

5 of 33

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 processor
    • terminated: The process has finished execution

3.5

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

6 of 33

Diagram of Process State

3.6

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

7 of 33

Process Control Block (PCB)

Information associated with each process

(also called task control block)

  • Process state – running, waiting, etc
  • Program counter – location of instruction to next execute
  • CPU registers – contents of all process-centric registers
  • CPU scheduling information- priorities, scheduling queue pointers
  • Memory-management information – memory allocated to the process
  • Accounting information – CPU used, clock time elapsed since start, time limits
  • I/O status information – I/O devices allocated to process, list of open files

3.7

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

8 of 33

CPU Switch From Process to Process

3.8

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

9 of 33

Process Scheduling

  • Maximize CPU use, quickly switch processes onto CPU for time sharing
  • Process scheduler selects among available processes for next execution on CPU
  • Maintains scheduling queues of processes
    • 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

3.9

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

10 of 33

Schedulers

  • Short-term scheduler (or CPU scheduler) – selects which process should be executed next and allocates CPU
    • Sometimes the only scheduler in a system
    • Short-term scheduler is invoked frequently (milliseconds) ⇒ (must be fast)
  • Long-term scheduler (or job scheduler) – selects which processes should be brought into the ready queue
    • Long-term scheduler is invoked 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
  • Long-term scheduler strives for good process mix

3.10

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

11 of 33

Addition of Medium Term Scheduling

  • Medium-term scheduler can be added if degree of multiple programming needs to decrease
    • Remove process from memory, store on disk, bring back in from disk to continue execution: swapping

3.11

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

12 of 33

Operations on Processes

  • System must provide mechanisms for:
    • process creation,
    • process termination,
    • and so on as detailed next

3.12

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

13 of 33

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 options
    • Parent and children share all resources
    • Children share subset of parent’s resources
    • Parent and child share no resources
  • Execution options
    • Parent and children execute concurrently
    • Parent waits until children terminate

3.13

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

14 of 33

A Tree of Processes in Linux

3.14

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

15 of 33

Process Creation (Cont.)

  • Address space
    • Child duplicate of parent
    • Child has a program loaded into it
  • UNIX examples
    • fork() system call creates new process
    • exec() system call used after a fork() to replace the process’ memory space with a new program

3.15

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

16 of 33

C Program Forking Separate Process

3.16

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

17 of 33

3.17

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

18 of 33

3.18

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

19 of 33

Process Termination

  • Process executes last statement and then asks the operating system to delete it using the exit() system call.
    • Returns status data from child to parent (via wait())
    • Process’ resources are deallocated by operating system
  • Parent may terminate the execution of children processes using the abort() system call. Some reasons for doing so:
    • Child has exceeded allocated resources
    • Task assigned to child is no longer required
    • The parent is exiting and the operating systems does not allow a child to continue if its parent terminates

3.19

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

20 of 33

Process Termination

  • Some operating systems do not allow child to exists if its parent has terminated. If a process terminates, then all its children must also be terminated.
    • cascading termination. All children, grandchildren, etc. are terminated.
    • The termination is initiated by the operating system.
  • The parent process may wait for termination of a child process by using the wait()system call. The call returns status information and the pid of the terminated process

pid = wait(&status);

  • If no parent waiting (did not invoke wait()) process is a zombie
  • If parent terminated without invoking wait , process is an orphan

3.20

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

21 of 33

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

3.21

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

22 of 33

Communications Models

(a) Message passing. (b) shared memory.

3.22

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

23 of 33

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

3.23

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

24 of 33

Bounded-Buffer – Shared-Memory Solution

  • Shared data

#define BUFFER_SIZE 10

typedef struct {

. . .

} item;

item buffer[BUFFER_SIZE];

int in = 0;

int out = 0;

  • Solution is correct, but can only use BUFFER_SIZE-1 elements

3.24

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

25 of 33

Bounded-Buffer – Producer

item next_produced;

while (true) {

/* produce an item in next produced */

while (((in + 1) % BUFFER_SIZE) == out)

; /* do nothing */

buffer[in] = next_produced;

in = (in + 1) % BUFFER_SIZE;

}

3.25

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

26 of 33

Bounded Buffer – Consumer

item next_consumed;

while (true) {� while (in == out)

; /* do nothing */� next_consumed = buffer[out];

out = (out + 1) % BUFFER_SIZE;�

/* consume the item in next consumed */

}

3.26

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

27 of 33

Interprocess Communication – Shared Memory

  • An area of memory shared among the processes that wish to communicate
  • The communication is under the control of the users processes not the operating system.
  • Major issues is to provide mechanism that will allow the user processes to synchronize their actions when they access shared memory.

3.27

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

28 of 33

Interprocess Communication – Message Passing

  • 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)
    • receive(message)

  • The message size is either fixed or variable

3.28

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

29 of 33

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

3.29

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

30 of 33

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

3.30

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

31 of 33

Indirect Communication

  • Operations
    • create a new mailbox (port)
    • send and receive messages through mailbox
    • destroy a mailbox
  • Primitives are defined as:

send(A, message) – send a message to mailbox A

receive(A, message) – receive a message from mailbox A

3.31

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

32 of 33

Indirect Communication

  • 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.

3.32

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition

33 of 33

End of Chapter 3

Silberschatz, Galvin and Gagne ©2013

Operating System Concepts – 9th Edition