operating systems lecture 7. agenda for today review of previous lecture the wait and exec system...
TRANSCRIPT
![Page 1: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/1.jpg)
Operating Systems
Lecture 7
![Page 2: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/2.jpg)
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
![Page 3: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/3.jpg)
Review of Lecture 6
Schedulers (long-, and short-, and medium-term)
Dispatcher Process creation and terminationfork and exit system calls
![Page 4: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/4.jpg)
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.
![Page 5: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/5.jpg)
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
![Page 6: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/6.jpg)
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.
![Page 7: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/7.jpg)
wait() ...
Zombie process—a process that has terminated but whose exit status has not yet been received by its parent process or by init.
![Page 8: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/8.jpg)
Sample Code—fork#include <stdio.h>
void main()
{
int pid, status;
pid = fork();
if(pid == -1) {
printf(“fork failed\n”);
exit(1);
}
![Page 9: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/9.jpg)
Sample Code—fork if(pid == 0) { /* Child */
printf(“Child here!\n”);
exit(0);
}
else { /* Parent */
wait(&status);
printf(“Well done kid!\n”);
exit(0);
}
}
![Page 10: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/10.jpg)
Semantics of fork
P
P
fork
![Page 11: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/11.jpg)
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.
![Page 12: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/12.jpg)
exec()
There can be no return from a successful exec because the calling process image is overlaid by the new process image
![Page 13: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/13.jpg)
Synopsis of exec()
#include <unistd.h>
int execlp (const char *file, const
char *arg0, ..., const char *argn,
(char *)0);
![Page 14: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/14.jpg)
Sample Code—fork and exec
#include <stdio.h>
void main()
{
int pid, status;
pid = fork();
if(pid == -1) {
printf(“fork failed\n”);
exit(1);
}
![Page 15: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/15.jpg)
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);
}
}
![Page 16: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/16.jpg)
Semantics of fork
P
P
fork
parent
child
P
P
parent
child
exec ls
P
ls
parent
child
1 2 3
![Page 17: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/17.jpg)
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
![Page 18: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/18.jpg)
Cooperating Processes Advantages of process cooperation
Information sharing Computation speed-up Modularity Convenience
![Page 19: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/19.jpg)
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
Producer-Consumer Problem
![Page 20: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/20.jpg)
Bounded-Buffer Problem
ProducerProducer ConsumerConsumer
Empty Pool
Full Pool
![Page 21: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/21.jpg)
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 elements
![Page 22: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/22.jpg)
Producer Processitem nextProduced;
while (1) {
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
![Page 23: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/23.jpg)
Consumer Process
item nextConsumed;
while (1) {while (in == out)
; /* do nothing */nextConsumed = buffer[out];out = (out + 1) % BUFFER_SIZE;
}
![Page 24: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/24.jpg)
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.
![Page 25: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/25.jpg)
IPC facility provides two operations:Send (message) – message size
fixed or variable Receive (message)
Interprocess Communication (IPC)
![Page 26: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/26.jpg)
If P and Q wish to communicate, they need to:establish a communication link
between themexchange messages via
send/receive
Interprocess Communication (IPC)
![Page 27: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/27.jpg)
Implementation of communication linkphysical (e.g., shared memory,
hardware bus) logical (e.g., logical properties)
Interprocess Communication (IPC)
![Page 28: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/28.jpg)
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?
![Page 29: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/29.jpg)
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?
![Page 30: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/30.jpg)
Direct Communication
Processes must name each other explicitly:send (P, message) – send a
message to process PReceive (Q, message) – receive a
message from process Q
![Page 31: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/31.jpg)
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.
![Page 32: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/32.jpg)
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.
![Page 33: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/33.jpg)
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.
![Page 34: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/34.jpg)
Operations create a new mailbox send and receive messages through
mailbox destroy a mailbox
Primitives are defined as:send (A, message)
receive (A, message)
Indirect Communication …
![Page 35: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/35.jpg)
Mailbox sharingP1, P2, and P3 share mailbox A.
P1, sends; P2 and P3 receive.
Who gets the message?
Indirect Communication …
![Page 36: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/36.jpg)
SolutionsAllow 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.
Indirect Communication …
![Page 37: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/37.jpg)
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.
![Page 38: Operating Systems Lecture 7. Agenda for Today Review of previous lecture The wait and exec system calls and sample code Cooperating processes Producer-consumer](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/38.jpg)
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 messagesSender must wait if link full.
Unbounded capacity – infinite length Sender never waits.
![Page 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](https://reader036.vdocuments.net/reader036/viewer/2022070307/551b4726550346d41a8b5a5d/html5/thumbnails/39.jpg)
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