Presentation is loading. Please wait.

Presentation is loading. Please wait.

Operating Systems Lecture 8.

Similar presentations


Presentation on theme: "Operating Systems Lecture 8."— Presentation transcript:

1 Operating Systems Lecture 8

2 © Copyright Virtual University of Pakistan
Agenda for Today Review of previous lecture Interprocess communication (IPC) and process synchronization UNIX/Linux IPC tools (pipe, named pipe—FIFO, socket, message queue, shared memory) Use of pipe Recap of the lecture 27 December 2018 © Copyright Virtual University of Pakistan

3 © Copyright Virtual University of Pakistan
Review of Lecture 7 The wait and exec system calls and sample code Cooperating processes Producer-consumer problem 27 December 2018 © Copyright Virtual University of Pakistan

4 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. 27 December 2018 © Copyright Virtual University of Pakistan

5 Interprocess Communication (IPC)
IPC facility provides two operations: Send (message) – message size fixed or variable Receive (message) 27 December 2018 © Copyright Virtual University of Pakistan

6 Interprocess Communication (IPC)
If P and Q wish to communicate, they need to: establish a communication link between them exchange messages via send/receive 27 December 2018 © Copyright Virtual University of Pakistan

7 Interprocess Communication (IPC)
Implementation of communication link physical (e.g., shared memory, hardware bus) logical (e.g., logical properties) 27 December 2018 © Copyright Virtual University of Pakistan

8 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? 27 December 2018 © Copyright Virtual University of Pakistan

9 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? 27 December 2018 © Copyright Virtual University of Pakistan

10 © 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 27 December 2018 © Copyright Virtual University of Pakistan

11 © 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. 27 December 2018 © Copyright Virtual University of Pakistan

12 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. 27 December 2018 © Copyright Virtual University of Pakistan

13 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. 27 December 2018 © Copyright Virtual University of Pakistan

14 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) 27 December 2018 © Copyright Virtual University of Pakistan

15 Indirect Communication …
Mailbox sharing P1, P2, and P3 share mailbox A. P1, sends; P2 and P3 receive. Who gets the message? 27 December 2018 © Copyright Virtual University of Pakistan

16 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. 27 December 2018 © Copyright Virtual University of Pakistan

17 © 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. 27 December 2018 © Copyright Virtual University of Pakistan

18 © 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. 27 December 2018 © Copyright Virtual University of Pakistan

19 © Copyright Virtual University of Pakistan
UNIX/Linux IPC Tools Pipe Named pipe (FIFO) BSD Socket TLI Message queue Shared memory Etc. 27 December 2018 © Copyright Virtual University of Pakistan

20 © Copyright Virtual University of Pakistan
UNIX/Linux Pipe Important system calls pipe, read, write, close pipe: Create a pipe for IPC read: Read from a pipe write: Write data to a pipe close: Close/destroy a pipe 27 December 2018 © Copyright Virtual University of Pakistan

21 File Descriptors in UNIX/Linux
An integer returned by open() system call Used as an index in the per process file descriptor table (PPFDT) Used in read, write, and close calls 27 December 2018 © Copyright Virtual University of Pakistan

22 File Descriptors in UNIX/Linux
Size of PPFDT is equal to the number of files that a process can open simultaneously (OPEN_MAX in Linux—see <linux/limits.h> Used as an index in the per process file descriptor table (PPFDT) Used in read, write, and close calls 27 December 2018 © Copyright Virtual University of Pakistan

23 © Copyright Virtual University of Pakistan
UNIX/Linux Pipe Important characteristics of a pipe Stream of bytes Used as half-duplex channel Bounded buffer Maximum data written is PIPE_BUF (defined in <sys/param.h> under UNIX and in <linux/param.h> in Linux)—5120 and 4096, respectively 27 December 2018 © Copyright Virtual University of Pakistan

24 Synopsis of pipe System Call
#include <unistd.h> int pipe (int filedes[2]); 27 December 2018 © Copyright Virtual University of Pakistan

25 © Copyright Virtual University of Pakistan
Example child parent fork P P Read end Write end 27 December 2018 © Copyright Virtual University of Pakistan

26 © Copyright Virtual University of Pakistan
Sample Code /* Parent creates pipe, forks a child, child writes into pipe, and parent reads from pipe */ #include <stdio.h> #include <sys/types.h> #include <sys/wait.h> main() { int pipefd[2], pid, n, rc, nr, status; char *testString = "Hello, world!\n“, buf[1024]; 27 December 2018 © Copyright Virtual University of Pakistan

27 © Copyright Virtual University of Pakistan
Sample Code rc = pipe (pipefd); if (rc < 0) { perror("pipe"); exit(1); } pid = fork (); if (pid < 0) { perror("fork"); 27 December 2018 © Copyright Virtual University of Pakistan

28 © Copyright Virtual University of Pakistan
Sample Code if (pid == 0) { /* Child’s Code */ close(pipefd[0]); write(pipefd[1], testString, strlen(testString)); close(pipefd[1]); exit(0); } 27 December 2018 © Copyright Virtual University of Pakistan

29 © Copyright Virtual University of Pakistan
Sample Code /* Parent’s Code */ close(pipefd[1]); n = strlen(testString); nr = read(pipefd[0], buf, n); rc = write(1, buf, nr); wait(&status); printf("Good work child!\n"); return(0); 27 December 2018 © Copyright Virtual University of Pakistan

30 © Copyright Virtual University of Pakistan
Recap of Lecture Review of previous lecture Interprocess communication (IPC) and process synchronization UNIX/Linux IPC tools (pipe, FIFO, socket, message queue, shared memory, etc.) Use of UNIX pipe Recap of the lecture 27 December 2018 © Copyright Virtual University of Pakistan


Download ppt "Operating Systems Lecture 8."

Similar presentations


Ads by Google