Download presentation
Presentation is loading. Please wait.
Published byAdela Reed Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.