170 likes | 650 Views
CS423UG Operating Systems Process Synchronization III Indranil Gupta Lecture 10 Sep 16, 2005 Today’s Agenda Classical synchronization problems Producer-Consumer problem Bounded Buffer Problem Reader Writer Problem Dining Philosophers Problem
E N D
CS423UG Operating Systems Process Synchronization III Indranil Gupta Lecture 10 Sep 16, 2005
Today’s Agenda • Classical synchronization problems • Producer-Consumer problem • Bounded Buffer Problem • Reader Writer Problem • Dining Philosophers Problem • Sleeping Barber Problem • IPC CS 423UG- Operating Systems, Indranil Gupta
III. Reader-Writer Problem • A reader: read data • A writer: write data • Rules: • Multiple readers may read the data simultaneously • Only one writer can write the data at any time • A reader and a writer cannot access data simultaneously • Locking table: whether any two can be in the critical section simultaneously CS 423UG- Operating Systems, Indranil Gupta
Reader-Writer Solution • Does it work? Why? • Ask Systematic questions, and look at What if ? scenarios… • Play the devil’s advocate! Semaphore mutex, wrt; // shared and initialized to 1; int readcount; // shared and initialized to 0 // Writer // Reader Down(mutex); readcount:=readcount+1; Down(wrt); if readcount == 1 then Down(wrt); ...... Up(mutex); writing performed .... ..... reading performed Down(mutex); Up(wrt); readcount:=readcount-1; if readcount == 0 then Up(wrt); Up(mutex); CS 423UG- Operating Systems, Indranil Gupta
IV. Dining Philosophers: an intellectual game 0 • N philosophers and N forks • Philosophers eat/think • Eating needs 2 forks • Pick one fork at a time 1 0 4 1 2 4 3 3 2 N=5 CS 423UG- Operating Systems, Indranil Gupta
Does this solve the Dining Philosophers Problem? A non-solution to the dining philosophers problem • Deadlock: everyone picks up their left fork first, then waits… => Starvation! CS 423UG- Operating Systems, Indranil Gupta
Dining Philosophers Solution (s[n] inited to 0’s) CS 423UG- Operating Systems, Indranil Gupta
Dining Philosophers Solution Can prove that this solution is deadlock-free and starvation-free CS 423UG- Operating Systems, Indranil Gupta
V. The Sleeping Barber Problem • N customer chairs (waiting chairs) • One barber who can cut one customer’s hair at any time • No waiting customer => barber sleeps • Customer enters => • If all waiting chairs full, customer leaves • Otherwise, if barber asleep, wake up barber and make him work • Otherwise, barber is busy – wait in a chair CS 423UG- Operating Systems, Indranil Gupta
The Sleeping Barber Solution (1) CS 423UG- Operating Systems, Indranil Gupta
The Sleeping Barber Solution (2) CS 423UG- Operating Systems, Indranil Gupta
The Sleeping Barber Solution (3) Solution to sleeping barber problem. CS 423UG- Operating Systems, Indranil Gupta
Epilogue: IPC (Interprocess Communication) • Real life analogy: email! • Can two processes on a machine send “email” to each other? • IPC: An indirect way of coordination, where the OS (and/or network) helps processes! • An IPC primitive: Message Passing • Send (destination, &message) • Receive (source, &message) • Message size: Fixed or Variable size. CS 423UG- Operating Systems, Indranil Gupta
Message Passing Example: Unix pipes CS 423UG- Operating Systems, Indranil Gupta
IPC=Indirect Communication: Implicit Coordination provided through library/system calls send(A,message) /* send a message to mailbox A */ receive(A,message) /* receive a message from mailbox A */ • Mailbox is an abstract object into which a message can be placed in, or removed from. Example: Unix message queues CS 423UG- Operating Systems, Indranil Gupta
Advantage of Indirect Communication • Allows greater variety of schemes: • two processes per link • 1 link per pair of processes • Uni- or bi-directional • allow 1 process to receive a message from a link • allow 1 process to receive all messages from a link • What if a process sends when queue is full? Receive when queue is empty? • Pipe and message queue implementations themselves use sempahores/mutexes within them! Unix: msgget() and msgsnd() for message queues CS 423UG- Operating Systems, Indranil Gupta
Reminders • Reading for this week’s lectures were Sections 2.3-2.4 • Reading for next week: Chapter 3 (full) • MP1 due next Monday CS 423UG- Operating Systems, Indranil Gupta