Presentation is loading. Please wait.

Presentation is loading. Please wait.

Operating Systems Yasir Kiani. 13-Sep-20062 Agenda for Today Review of previous lecture Interprocess communication (IPC) and process synchronization UNIX/Linux.

Similar presentations


Presentation on theme: "Operating Systems Yasir Kiani. 13-Sep-20062 Agenda for Today Review of previous lecture Interprocess communication (IPC) and process synchronization UNIX/Linux."— Presentation transcript:

1 Operating Systems Yasir Kiani

2 13-Sep-20062 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

3 13-Sep-20063 Review of Lecture 7 The wait and exec system calls and sample code Cooperating processes Producer-consumer problem

4 13-Sep-20064 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.

5 13-Sep-20065  IPC facility provides two operations:  Send (message) – message size fixed or variable  Receive (message) Interprocess Communication (IPC)

6 13-Sep-20066  If P and Q wish to communicate, they need to:  establish a communication link between them  exchange messages via send/receive Interprocess Communication (IPC)

7 13-Sep-20067  Implementation of communication link  physical (e.g., shared memory, hardware bus)  logical (e.g., logical properties) Interprocess Communication (IPC)

8 13-Sep-20068 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?

9 13-Sep-20069 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?

10 13-Sep-200610 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

11 13-Sep-200611 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.

12 13-Sep-200612 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.

13 13-Sep-200613 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 13-Sep-200614  Operations  create a new mailbox  send and receive messages through mailbox  destroy a mailbox  Primitives are defined as: send (A, message) receive (A, message) receive (A, message) Indirect Communication …

15 13-Sep-200615 Mailbox sharing  P 1, P 2, and P 3 share mailbox A.  P 1, sends; P 2 and P 3 receive.  Who gets the message? Indirect Communication …

16 13-Sep-200616 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. Indirect Communication …

17 13-Sep-200617 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.

18 13-Sep-200618 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.

19 13-Sep-200619 UNIX/Linux IPC Tools  Pipe  Named pipe (FIFO)  BSD Socket  TLI  Message queue  Shared memory  Etc.

20 13-Sep-200620 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

21 13-Sep-200621 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

22 13-Sep-200622 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  Used as an index in the per process file descriptor table (PPFDT)  Used in read, write, and close calls

23 13-Sep-200623 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 under UNIX and in in Linux)—5120 and 4096, respectively

24 13-Sep-200624 #include int pipe (int filedes[2]); Synopsis of pipe System Call

25 13-Sep-200625 Example P P fork parent child Write end Read end

26 13-Sep-200626 /* Parent creates pipe, forks a child, child writes into pipe, and parent reads from pipe */ #include main() { int pipefd[2], pid, n, rc, nr, status; char *testString = "Hello, world!\n“, buf[1024]; Sample Code

27 13-Sep-200627 rc = pipe (pipefd); if (rc < 0) { perror("pipe"); exit(1); } pid = fork (); if (pid < 0) { perror("fork"); exit(1); } Sample Code

28 13-Sep-200628 if (pid == 0) { /* Child’s Code */ close(pipefd[0]); write(pipefd[1], testString, strlen(testString)); close(pipefd[1]); exit(0); } Sample Code

29 13-Sep-200629 /* 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); Sample Code

30 13-Sep-200630 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


Download ppt "Operating Systems Yasir Kiani. 13-Sep-20062 Agenda for Today Review of previous lecture Interprocess communication (IPC) and process synchronization UNIX/Linux."

Similar presentations


Ads by Google