0% found this document useful (0 votes)
6 views

ch3 (1)

Uploaded by

mebrahtomfitwi08
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

ch3 (1)

Uploaded by

mebrahtomfitwi08
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

Chapter 3: Processes

Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018
Outline
 Process Concept
 Process Scheduling
 Operations on Processes
 Interprocess Communication
 IPC in Shared-Memory Systems
 IPC in Message-Passing Systems
 Examples of IPC Systems
 Communication in Client-Server Systems

Operating System Concepts – 10th Edition 3.2 Silberschatz, Galvin and Gagne ©2018
Objectives
 Identify the separate components of a process and illustrate how they
are represented and scheduled in an operating system.
 Describe how processes are created and terminated in an operating
system, including developing programs using the appropriate system
calls that perform these operations.
 Describe and contrast interprocess communication using shared
memory and message passing.
 Design programs that uses pipes and POSIX shared memory to
perform interprocess communication.
 Describe client-server communication using sockets and remote
procedure calls.
 Design kernel modules that interact with the Linux operating system.

Operating System Concepts – 10th Edition 3.3 Silberschatz, Galvin and Gagne ©2018
Process Concept
 An operating system executes a variety of programs that run as a
process.
 Process – a program in execution; process execution must progress
in sequential fashion. No parallel execution of instructions of a single
process
 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

Operating System Concepts – 10th Edition 3.4 Silberschatz, Galvin and Gagne ©2018
Process Concept (Cont.)
 Program is passive entity stored on disk (executable file);
process is active
• Program becomes process when an executable file is
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

Operating System Concepts – 10th Edition 3.5 Silberschatz, Galvin and Gagne ©2018
Process in Memory

Operating System Concepts – 10th Edition 3.6 Silberschatz, Galvin and Gagne ©2018
Memory Layout of a C Program

Operating System Concepts – 10th Edition 3.7 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 3.8 Silberschatz, Galvin and Gagne ©2018
Diagram of Process State

Operating System Concepts – 10th Edition 3.9 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 3.10 Silberschatz, Galvin and Gagne ©2018
Process Representation in Linux

Represented by the C structure task_struct

pid t_pid; /* process identifier */


long state; /* state of the process */
unsigned int time_slice /* scheduling information */
struct task_struct *parent;/* this process’s parent */
struct list_head children; /* this process’s children */
struct files_struct *files;/* list of open files */
struct mm_struct *mm; /* address space of this
process */

Operating System Concepts – 10th Edition 3.11 Silberschatz, Galvin and Gagne ©2018
Process Scheduling
 Process scheduler selects among available processes
for next execution on CPU core
 Goal -- Maximize CPU use, quickly switch processes onto
CPU core
 Maintains scheduling queues of processes
• Ready queue – set of all processes residing in main
memory, ready and waiting to execute
• Wait queues – set of processes waiting for an event
(i.e., I/O)
• Processes migrate among the various queues

Operating System Concepts – 10th Edition 3.12 Silberschatz, Galvin and Gagne ©2018
Ready and Wait Queues

Operating System Concepts – 10th Edition 3.13 Silberschatz, Galvin and Gagne ©2018
Representation of Process Scheduling

Operating System Concepts – 10th Edition 3.14 Silberschatz, Galvin and Gagne ©2018
CPU Switch From Process to Process
A context switch occurs when the CPU switches from
one process to another.

Operating System Concepts – 10th Edition 3.15 Silberschatz, Galvin and Gagne ©2018
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 pure overhead; the system does no
useful work while switching
• The more complex the OS and the PCB  the longer
the context switch
 Time dependent on hardware support
• Some hardware provides multiple sets of registers per
CPU  multiple contexts loaded at once

Operating System Concepts – 10th Edition 3.16 Silberschatz, Galvin and Gagne ©2018
Multitasking in Mobile Systems

 Some mobile systems (e.g., early version of iOS) allow only one
process to run, others suspended
 Due to screen real estate, user interface limits iOS provides for a
• Single foreground process- controlled via user interface
• Multiple background processes– in memory, running, but not
on the display, and with limits
• Limits include single, short task, receiving notification of events,
specific long-running tasks like audio playback
 Android runs foreground and background, with fewer limits
• Background process uses a service to perform tasks
• Service can keep running even if background process is
suspended
• Service has no user interface, small memory use

Operating System Concepts – 10th Edition 3.17 Silberschatz, Galvin and Gagne ©2018
Operations on Processes

 System must provide mechanisms for:


• Process creation
• Process termination

Operating System Concepts – 10th Edition 3.18 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 3.19 Silberschatz, Galvin and Gagne ©2018
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
• Parent process calls wait()waiting for the child to terminate

Operating System Concepts – 10th Edition 3.20 Silberschatz, Galvin and Gagne ©2018
A Tree of Processes in Linux

Operating System Concepts – 10th Edition 3.21 Silberschatz, Galvin and Gagne ©2018
C Program Forking Separate Process

Operating System Concepts – 10th Edition 3.22 Silberschatz, Galvin and Gagne ©2018
Creating a Separate Process via Windows API

Operating System Concepts – 10th Edition 3.23 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 3.24 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 3.25 Silberschatz, Galvin and Gagne ©2018
Android Process Importance Hierarchy

 Mobile operating systems often have to terminate processes to reclaim


system resources such as memory. From most to least important:
• Foreground process
• Visible process
• Service process
• Background process
• Empty process
 Android will begin terminating processes that are least important.

Operating System Concepts – 10th Edition 3.26 Silberschatz, Galvin and Gagne ©2018
Multiprocess Architecture – Chrome Browser

 Many web browsers ran as single process (some still do)


• If one web site causes trouble, entire browser can hang or crash
 Google Chrome Browser is multiprocess with 3 different types of
processes:
• Browser process manages user interface, disk and network I/O
• Renderer process renders web pages, deals with HTML,
Javascript. A new renderer created for each website opened
 Runs in sandbox restricting disk and network I/O, minimizing
effect of security exploits
• Plug-in process for each type of plug-in

Operating System Concepts – 10th Edition 3.27 Silberschatz, Galvin and Gagne ©2018
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 – 10th Edition 3.28 Silberschatz, Galvin and Gagne ©2018
Communications Models
(a) Shared memory. (b) Message passing.

Operating System Concepts – 10th Edition 3.29 Silberschatz, Galvin and Gagne ©2018
Producer-Consumer Problem

 Paradigm for cooperating processes:


• producer process produces information that is consumed
by a consumer process
 Two variations:
• unbounded-buffer places no practical limit on the size of
the buffer:
 Producer never waits
 Consumer waits if there is no buffer to consume
• bounded-buffer assumes that there is a fixed buffer size
 Producer must wait if all buffers are full
 Consumer waits if there is no buffer to consume

Operating System Concepts – 10th Edition 3.30 Silberschatz, Galvin and Gagne ©2018
IPC – 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.
 Synchronization is discussed in great details in Chapters 6 & 7.

Operating System Concepts – 10th Edition 3.31 Silberschatz, Galvin and Gagne ©2018
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

Operating System Concepts – 10th Edition 3.32 Silberschatz, Galvin and Gagne ©2018
Producer Process – Shared Memory

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;
}

Operating System Concepts – 10th Edition 3.33 Silberschatz, Galvin and Gagne ©2018
Consumer Process – Shared Memory

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 */


}

Operating System Concepts – 10th Edition 3.34 Silberschatz, Galvin and Gagne ©2018
What about Filling all the Buffers?
 Suppose that we wanted to provide a solution to the consumer-
producer problem that fills all the buffers.
 We can do so by having an integer counter that keeps track
of the number of full buffers.
 Initially, counter is set to 0.
 The integer counter is incremented by the producer after it
produces a new buffer.
 The integer counter is and is decremented by the consumer
after it consumes a buffer.

Operating System Concepts – 10th Edition 3.35 Silberschatz, Galvin and Gagne ©2018
Producer

while (true) {
/* produce an item in next produced */

while (counter == BUFFER_SIZE)


; /* do nothing */
buffer[in] = next_produced;
in = (in + 1) % BUFFER_SIZE;
counter++;
}

Operating System Concepts – 10th Edition 3.36 Silberschatz, Galvin and Gagne ©2018
Consumer

while (true) {
while (counter == 0)
; /* do nothing */
next_consumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
counter--;
/* consume the item in next consumed */
}

Operating System Concepts – 10th Edition 3.37 Silberschatz, Galvin and Gagne ©2018
Race Condition
 counter++ could be implemented as
register1 = counter
register1 = register1 + 1
counter = register1
 counter-- could be implemented as
register2 = counter
register2 = register2 - 1
counter = register2

 Consider this execution interleaving with “count = 5” initially:


S0: producer execute register1 = counter {register1 = 5}
S1: producer execute register1 = register1 + 1 {register1 = 6}
S2: consumer execute register2 = counter {register2 = 5}
S3: consumer execute register2 = register2 – 1 {register2 = 4}
S4: producer execute counter = register1 {counter = 6 }
S5: consumer execute counter = register2 {counter = 4}

Operating System Concepts – 10th Edition 3.38 Silberschatz, Galvin and Gagne ©2018
Race Condition (Cont.)
 Question – why was there no race condition
in the first solution (where at most N – 1)
buffers can be filled?
 More in Chapter 6.

Operating System Concepts – 10th Edition 3.39 Silberschatz, Galvin and Gagne ©2018
IPC – Message Passing

 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

Operating System Concepts – 10th Edition 3.40 Silberschatz, Galvin and Gagne ©2018
Message Passing (Cont.)
 If processes P and Q wish to communicate, they need to:
• Establish a communication link between them
• Exchange messages via send/receive
 Implementation issues:
• 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 – 10th Edition 3.41 Silberschatz, Galvin and Gagne ©2018
End of Chapter 3

Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018

You might also like