Title: Operating Systems CSE 411
1Operating SystemsCSE 411
- CPU Management
- Oct. 13 2006 - Lecture 14
- Instructor Bhuvan Urgaonkar
2Some announcements
- Will discuss Exam 1 on Monday
- Hopefully also hand-out the graded exam
- The question on Quiz 4 comparing RR and PS has
puzzled many - Has been removed
- Will describe what I had intended on Monday
- Project
- Arjun will hold extra TA hours on Saturday 4-6pm
3Comments on Petersons Approach
- This is a purely software approach, and it does
not require any support from hardware except
atomic loads and stores - However, it may cause "busy waiting
- Wastes CPU cycles
4Synchronization Hardware
- Many systems provide hardware support for
critical section code - Modern machines provide special atomic hardware
instructions - Atomic non-interruptible
- Either test memory word and set value
- Or swap contents of two memory words
5TestAndndSet Instruction
- Definition
- boolean TestAndSet (boolean target)
-
- boolean rv target
- target TRUE
- return rv
-
6Solution using TestAndSet
- Shared boolean variable lock, initialized to
false - Solution
- while (true)
- while ( TestAndSet (lock ))
- / do
nothing - // critical
section - lock FALSE
- // remainder
section -
-
7Swap Instruction
- Definition
- void Swap (boolean a, boolean b)
-
- boolean temp a
- a b
- b temp
-
8Solution using Swap
- Shared Boolean variable lock initialized to
FALSE Each process - has a local Boolean variable key.
- Solution
- while (true)
- key TRUE
- while ( key TRUE)
- Swap (lock, key )
-
- // critical
section - lock FALSE
- // remainder
section -
9- Notes
- Previous solutions do not satisfy bounded-waiting
requirement - Figure 6.8 describes how to do this
- Implementing these instructions on
multiprocessors can be quite difficult - Also, complicated for a programmer to use
- Is there an easier and more efficient way?
- Semaphores
10Semaphore
- Semaphore noun
- 1. an apparatus for conveying information by
means of visual signals, as a light whose
position may be changed. - 2. any of various devices for signaling by
changing the position of a light, flag, etc. - 3. a system of signaling, esp. a system by which
a special flag is held in each hand and various
positions of the arms indicate specific letters,
numbers, etc.
11Semaphore
- Synchronization tool that reduces busy waiting
- Invented by Edsger Wybe Dijkstra
- First used in THE operating system
- Dijkstra is also noted for owning only one
computer (late in life) and rarely actually using
them, in keeping with his conviction that
computer science was more abstract than mere
programming, expressed in a number of famous
sayings such as "Computer Science is no more
about computers than astronomy is about
telescopes."
12Semaphore
- Synchronization tool that does not require busy
waiting - Semaphore S integer variable
- Two standard operations modify S wait() and
signal() - Originally called P() and V()
- From Dutch words/phrases probeer te verlagen
(try-and-decrease) and verhoog ("increase) - Less complicated
- Can only be accessed via two indivisible (atomic)
operations - wait (S)
- while S lt 0 // no-op
- S--
-
- signal (S)
- S
-
-
13Semaphore as General Synchronization Tool
- Counting semaphore integer value can range over
an unrestricted domain - Synchronize access to a resource with multiple
copies/instances - Binary semaphore integer value can range only
between 0 and 1 can be simpler to implement - Also known as mutex locks (MUTUAL EXCLUSION)
- Can implement a counting semaphore S as a binary
semaphore - Provides mutual exclusion
- Semaphore S // initialized to 1
- wait (S)
- Critical Section
- signal (S)
14Semaphore Implementation with no Busy waiting
- With each semaphore there is an associated
waiting queue. A waiting queue has two data
items - value (of type integer)
- pointer to a list of PCBs
- Introduce a pointer in the PCB structure
- FIFO ordering gt bounded-waiting
- Two operations
- block place the process invoking the operation
on the appropriate waiting queue. - wakeup remove one of processes in the waiting
queue and place it in the ready queue. -
- Is busy waiting
completely gone? -
15Semaphore Implementation with (almost) no Busy
waiting
- Implementation of wait
- wait (S)
- value--
- if (value lt 0)
- add this process to waiting
queue - block()
-
- Implementation of signal
- Signal (S)
- value
- if (value lt 0)
- remove a process P from the
waiting queue - wakeup(P)
-
16Deadlock and Starvation
- Deadlock two or more processes are waiting
indefinitely for an event that can be caused by
only one of the waiting processes - Let S and Q be two semaphores initialized to 1
- P0 P1
- wait (S)
wait (Q) - wait (Q)
wait (S) - . .
- . .
- . .
- signal (S)
signal (Q) - signal (Q)
signal (S) - Starvation indefinite blocking. A process may
never be removed from the semaphore queue in
which it is suspended.
17Classical Problems of Synchronization
- Bounded-Buffer Problem
- Readers and Writers Problem
- Dining-Philosophers Problem
18Bounded-Buffer Problem
- N buffers, each can hold one item
- Semaphore mutex initialized to the value 1
- Semaphore full initialized to the value 0
- Semaphore empty initialized to the value N
19Bounded Buffer Problem (Cont.)
- The structure of the producer process
- while (true)
- // produce an item
- wait (empty)
- wait (mutex)
- // add the item to the
buffer - signal (mutex)
- signal (full)
-
20Bounded Buffer Problem (Cont.)
- The structure of the consumer process
- while (true)
- wait (full)
- wait (mutex)
- // remove an item
from buffer - signal (mutex)
- signal (empty)
- // consume the
removed item -
21Readers-Writers Problem
- A data set is shared among a number of concurrent
processes - Readers only read the data set they do not
perform any updates - Writers can both read and write.
- Problem allow multiple readers to read at the
same time. Only one writer can access the
shared data at the same time. - Shared Data
- Data set
- Semaphore mutex initialized to 1.
- Semaphore wrt initialized to 1.
- Integer readcount initialized to 0.
22Readers-Writers Problem (Cont.)
- The structure of a writer process
-
- while (true)
- wait (wrt)
-
- // writing is
performed - signal (wrt)
-
-
23Readers-Writers Problem (Cont.)
- The structure of a reader process
-
- while (true)
- wait (mutex)
- readcount
- if (readcount 1) wait
(wrt) - signal (mutex)
-
- // reading is
performed - wait (mutex)
- readcount - -
- if (readcount 0)
signal (wrt) - signal (mutex)
-
-
24Dining-Philosophers Problem
- Shared data
- Bowl of rice (data set)
- Semaphore chopstick 5 initialized to 1
25Dining-Philosophers Problem (Cont.)
- The structure of Philosopher i
- while (true)
- wait ( chopsticki )
- wait ( chopStick (i 1) 5 )
-
- // eat
- signal ( chopsticki )
- signal (chopstick (i 1) 5 )
-
- // think
26Problems with Semaphores
- Correct use of semaphore operations
- signal (mutex) . wait (mutex)
- wait (mutex) wait (mutex)
- Omitting of wait (mutex) or signal (mutex) (or
both)
27Synchronization on Multi-processors
28Monitors
29System Bootstrap
30Multi-processor Scheduling
31Some History
32UNIX
33The POSIX Standard
34Course Outline
- Resource Management (and some services an OS
provides to programmers) - CPU management
- Memory management
- I/O management (emphasis Disk)
- Cross-cutting design considerations and
techniques - Quality-of-service/fairness, monitoring,
accounting, caching, software design methodology,
security and isolation - Advanced topics
- Distributed systems
- Data centers, multi-media systems, real-time
systems, - virtual machines