Title: Process Synchronization III
1Process Synchronization III
CS423UG Operating Systems
- Indranil Gupta
- Lecture 10
- Sep 16, 2005
2Todays Agenda
- Classical synchronization problems
- Producer-Consumer problem
- Bounded Buffer Problem
- Reader Writer Problem
- Dining Philosophers Problem
- Sleeping Barber Problem
- IPC
3III. 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
4Reader-Writer Solution
- Does it work? Why?
- Ask Systematic questions, and look at What if ?
scenarios - Play the devils advocate!
- Semaphore mutex, wrt // shared and initialized
to 1 - int readcount // shared and initialized
to 0 - // Writer
// Reader -
- Down(mutex)
- readcountreadcoun
t1 - Down(wrt) if
readcount 1 then Down(wrt) - ......
Up(mutex) - writing performed ....
- ..... reading
performed -
Down(mutex) - Up(wrt)
readcountreadcount-1 - if
readcount 0 then Up(wrt)
5IV. 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
N5
6Does this solve the Dining Philosophers Problem?
- A non-solution to the dining philosophers problem
- Deadlock everyone picks up their left fork
first, then waits gt Starvation!
7Dining Philosophers Solution
(sn inited to 0s)
8Dining Philosophers Solution
Can prove that this solution is deadlock-free and
starvation-free
9V. The Sleeping Barber Problem
- N customer chairs (waiting chairs)
- One barber who can cut one customers hair at any
time - No waiting customer gt barber sleeps
- Customer enters gt
- 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
10The Sleeping Barber Solution (1)
11The Sleeping Barber Solution (2)
12The Sleeping Barber Solution (3)
Solution to sleeping barber problem.
13Epilogue 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.
14Message Passing
Example Unix pipes
15IPCIndirect 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
16Advantage 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
17Reminders
- Reading for this weeks lectures were Sections
2.3-2.4 - Reading for next week Chapter 3 (full)
- MP1 due next Monday