0% found this document useful (0 votes)
60 views39 pages

Lec7 CS604 Pps

Uploaded by

Ibrahim Choudary
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views39 pages

Lec7 CS604 Pps

Uploaded by

Ibrahim Choudary
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
You are on page 1/ 39

Operating

Systems
Lecture 7
Agenda for Today
 Review of previous lecture
 The wait and exec system calls and
sample code
 Cooperating processes

 Producer-consumer problem

 Interprocess communication (IPC) and


process synchronization
 Recap of the lecture
14 September 2019 © Copyright Virtual University of
Pakistan
Review of Lecture 6

 Schedulers (long-, and short-,


and medium-term)
 Dispatcher

 Process creation and termination


 fork and exit system calls

14 September 2019 © Copyright Virtual University of


Pakistan
wait()
 The wait system call suspends the
calling process until one of its
immediate children terminates, or until
a child that is being traced stops
because it has hit an event of interest.
 wait returns prematurely if a signal is
received. If all children processes
stopped or terminated prior to the call
on wait, return is immediate.
14 September 2019 © Copyright Virtual University of
Pakistan
Synopsis of wait()

#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *stat_loc);

<sys/types.h>:
/usr/include/sys/types.h
14 September 2019 © Copyright Virtual University of
Pakistan
wait() ...
 If the call is successful, the
process ID of the terminating child
is returned.
 If parent terminates all its children
have assigned as their new
parent, the init process. Thus the
children still have a parent to
collect their status and execution
statistics.
14 September 2019 © Copyright Virtual University of
Pakistan
wait() ...
 Zombie process—a process that
has terminated but whose exit
status has not yet been received
by its parent process or by init.

14 September 2019 © Copyright Virtual University of


Pakistan
Sample Code—fork
#include <stdio.h>
void main()
{
int pid, status;

pid = fork();
if(pid == -1) {
printf(“fork failed\n”);
exit(1);
} 2019
14 September © Copyright Virtual University of
Pakistan
Sample Code—fork
if(pid == 0) { /* Child */
printf(“Child here!\n”);
exit(0);
}
else { /* Parent */
wait(&status);
printf(“Well done kid!\n”);
exit(0);
}
}14 September 2019 © Copyright Virtual University of
Pakistan
Semantics of fork

fork

14 September 2019 © Copyright Virtual University of


Pakistan
exec()
 Typically the exec system call is
used after a fork system call by one
of the two processes to replace the
process’ memory space with a new
executable program.
 The new process image is
constructed from an ordinary,
executable file.
14 September 2019 © Copyright Virtual University of
Pakistan
exec()
 There can be no return from a
successful exec because the
calling process image is overlaid
by the new process image

14 September 2019 © Copyright Virtual University of


Pakistan
Synopsis of exec()

#include <unistd.h>
int execlp (const char *file, const
char *arg0, ..., const char *argn,
(char *)0);

14 September 2019 © Copyright Virtual University of


Pakistan
Sample Code—fork
and exec
#include <stdio.h>
void main()
{
int pid, status;

pid = fork();
if(pid == -1) {
printf(“fork failed\n”);
exit(1);
14 September 2019 © Copyright Virtual University of
} Pakistan
Sample Code—fork
and exec
if(pid == 0) { /* Child */
if (execlp(“/bin/ls”, “ls”, NULL)< 0) {
printf(“exec failed\n”);
exit(1);
}
}
else { /* Parent */
wait(&status);
printf(“Well done kid!\n”);
exit(0);
}
}14 September 2019 © Copyright Virtual University of
Pakistan
Semantics of fork
parent parent parent

P P P

fork

P P ls ls
exec
child child child
14 September 2019 © Copyright Virtual University of
1 2 Pakistan 3
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

14 September 2019 © Copyright Virtual University of


Pakistan
Cooperating Processes
 Advantages of process cooperation
 Information sharing
 Computation speed-up
 Modularity
 Convenience

14 September 2019 © Copyright Virtual University of


Pakistan
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
14 September 2019 © Copyright Virtual University of
Pakistan
Bounded-Buffer Problem

Empty Pool

Producer Consumer

Full Pool
14 September 2019 © Copyright Virtual University of
Pakistan
Bounded-Buffer 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
14 September 2019 elements
© Copyright Virtual University of
Pakistan
Producer Process
item nextProduced;

while (1) {
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}

14 September 2019 © Copyright Virtual University of


Pakistan
Consumer Process
item nextConsumed;

while (1) {
while (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}

14 September 2019 © Copyright Virtual University of


Pakistan
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.
14 September 2019 © Copyright Virtual University of
Pakistan
Interprocess
Communication (IPC)
 IPC facility provides two operations:
 Send (message) – message size
fixed or variable
 Receive (message)

14 September 2019 © Copyright Virtual University of


Pakistan
Interprocess
Communication (IPC)
 If P and Q wish to communicate,
they need to:
 establish a communication link
between them
 exchange messages via
send/receive
14 September 2019 © Copyright Virtual University of
Pakistan
Interprocess
Communication (IPC)
 Implementation of communication
link
 physical (e.g., shared memory,
hardware bus)
 logical (e.g., logical properties)
14 September 2019 © Copyright Virtual University of
Pakistan
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?
14 September 2019 © Copyright Virtual University of
Pakistan
Implementation
Questions
 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?
14 September 2019 © Copyright Virtual University of
Pakistan
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

14 September 2019 © Copyright Virtual University of


Pakistan
Direct Communication
 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.
14 September 2019 © Copyright Virtual University of
Pakistan
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.

14 September 2019 © Copyright Virtual University of


Pakistan
Indirect Communication …
 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.
14 September 2019 © Copyright Virtual University of
Pakistan
Indirect Communication …
 Operations
 create a new mailbox
 send and receive messages through
mailbox
 destroy a mailbox
 Primitives are defined as:
send (A, message)
receive (A, message)
14 September 2019 © Copyright Virtual University of
Pakistan
Indirect Communication …

Mailbox sharing
 P1, P2, and P3 share mailbox A.
 P1, sends; P2 and P3 receive.
 Who gets the message?

14 September 2019 © Copyright Virtual University of


Pakistan
Indirect Communication …
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.
14 September 2019 © Copyright Virtual University of
Pakistan
Synchronization
 Message passing may be either
blocking or non-blocking.
 Blocking is considered
synchronous
 Non-blocking is considered
asynchronous
 send and receive primitives may
be either blocking or non-blocking.
14 September 2019 © Copyright Virtual University of
Pakistan
Buffering
 Queue of messages attached to the
link; implemented in one of three ways.
Zero capacity – No messages
Sender must wait for receiver
Bounded capacity – n messages
Sender must wait if link full.
Unbounded capacity – infinite length
Sender never waits.
14 September 2019 © Copyright Virtual University of
Pakistan
Recap of Lecture
 Review of previous lecture
 The wait and exec system call and
sample code
 Cooperating processes
 Producer-consumer problem
 Sample codes
 Interprocess communication (IPC) and
process synchronization
 Recap of the lecture
14 September 2019 © Copyright Virtual University of
Pakistan

You might also like