SlideShare a Scribd company logo
Chapter 6:  Process Synchronization
Module 6: Process Synchronization Background The Critical-Section Problem Peterson’s Solution Synchronization Hardware Semaphores Classic Problems of Synchronization Monitors Synchronization Examples  Atomic Transactions
Background Concurrent access to shared data may result in data inconsistency Maintaining data consistency requires mechanisms to ensure the orderly execution of cooperating processes Suppose that we wanted to provide a solution to the consumer-producer problem that fills  all  the buffers. We can do so by having an integer  count  that keeps track of the number of full buffers.  Initially, count is set to 0. It is incremented by the producer after it produces a new buffer and is decremented by the consumer after it consumes a buffer.
Producer  while (true) { /*  produce an item and put in nextProduced  */   while (count == BUFFER_SIZE) ; // do nothing   buffer [in] = nextProduced;   in = (in + 1) % BUFFER_SIZE;   count++; }
Consumer while (true)  {   while (count == 0)   ; // do nothing   nextConsumed =  buffer[out];   out = (out + 1) % BUFFER_SIZE;   count--; /*  consume the item in nextConsumed }
Race Condition count++  could be implemented as   register1 = count   register1 = register1 + 1   count = register1 count--  could be implemented as   register2 = count   register2 = register2 - 1   count = register2 Consider this execution interleaving with ā€œcount = 5ā€ initially: S0: producer execute  register1 = count   {register1 = 5} S1: producer execute  register1 = register1 + 1  {register1 = 6}  S2: consumer execute  register2 = count   {register2 = 5}  S3: consumer execute  register2 = register2 - 1   {register2 = 4}  S4: producer execute  count = register1   {count = 6 }  S5: consumer execute  count = register2   {count = 4}
Solution to Critical-Section Problem 1. Mutual Exclusion  - If process  P i  is executing in its critical section, then no other processes can be executing in their critical sections 2. Progress  - If no process is executing in its critical section and there exist some processes that wish to enter their critical section, then the selection of the processes that will enter the critical section next cannot be postponed indefinitely 3. Bounded Waiting  -  A bound must exist on the number of times that other processes are allowed to enter their critical sections after a process has made a request to enter its critical section and before that request is granted Assume that each process executes at a nonzero speed  No assumption concerning relative speed of the  N  processes
Peterson’s Solution Two process solution Assume that the LOAD and STORE instructions are atomic; that is, cannot be interrupted. The two processes share two variables: int  turn ;  Boolean  flag[2] The variable  turn  indicates whose turn it is to enter the critical section.  The  flag  array is used to indicate if a process is ready to enter the critical section.  flag[i]  = true implies that process  P i  is ready!
Algorithm for Process  P i while (true) { flag[i] = TRUE; turn = j; while ( flag[j] && turn == j); CRITICAL SECTION flag[i] = FALSE; REMAINDER SECTION }
Synchronization Hardware Many systems provide hardware support for critical section code Uniprocessors – could disable interrupts Currently running code would execute without preemption Generally too inefficient on multiprocessor systems Operating systems using this not broadly scalable Modern machines provide special atomic hardware instructions Atomic = non-interruptable Either test memory word and set value Or swap contents of two memory words
TestAndndSet Instruction  Definition: boolean TestAndSet (boolean *target) { boolean rv = *target; *target = TRUE; return rv: }
Solution using TestAndSet Shared boolean variable lock., initialized to false. Solution: while (true) { while ( TestAndSet (&lock )) ;  /* do nothing //  critical section lock = FALSE; //  remainder section  }
Swap  Instruction Definition: void Swap (boolean *a, boolean *b) { boolean temp = *a; *a = *b; *b = temp: }
Solution 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  }
Semaphore 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() Less complicated Can only be accessed via two indivisible (atomic) operations wait (S) {  while S <= 0   ; // no-op S--; } signal (S) {  S++; }
Semaphore as General Synchronization Tool Counting  semaphore – integer value can range over an unrestricted domain Binary  semaphore – integer value can range only between 0  and 1; can be simpler to implement Also known as  mutex locks Can implement a counting semaphore  S  as a binary semaphore Provides mutual exclusion Semaphore S;  //  initialized to 1 wait (S); Critical Section signal (S);
Semaphore Implementation Must guarantee that no two processes can execute  wait ()  and  signal ()  on the same semaphore at the same time Thus, implementation becomes the critical section problem where the wait and signal code are placed in the crtical section. Could now have busy waiting in critical section implementation But implementation code is short Little busy waiting if critical section rarely occupied Note that applications may spend lots of time in critical sections and therefore this is not a good solution.
Semaphore Implementation with no Busy waiting   With each semaphore there is an associated waiting queue. Each entry in a waiting queue has two data items: value (of type integer) pointer to next record in the list 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.
Semaphore Implementation with no Busy waiting   (Cont.) Implementation of wait: wait (S){    value--;   if (value  <  0) {    add this process to waiting queue   block();  } } Implementation of signal: Signal (S){    value++;   if (value  < = 0) {    remove a process P from the waiting queue   wakeup(P);  } }
Deadlock 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 P 0 P 1   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.
Classical Problems of Synchronization Bounded-Buffer Problem Readers and Writers Problem Dining-Philosophers Problem
Bounded-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.
Bounded 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); }
Bounded 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 }
Readers-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 single 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.
Readers-Writers Problem (Cont.) The structure of a writer process while (true) { wait (wrt) ; //  writing is performed signal (wrt) ; }
Readers-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) ; }
Dining-Philosophers Problem Shared data  Bowl of rice (data set) Semaphore  chopstick [5]  initialized to 1
Dining-Philosophers Problem (Cont.) The structure of Philosopher  i : While (true)  {  wait ( chopstick[i] );   wait ( chopStick[ (i + 1) % 5] );   //  eat   signal ( chopstick[i] );   signal (chopstick[ (i + 1) % 5] ); //  think }
Problems with Semaphores Correct use of semaphore operations: signal (mutex)  ….  wait (mutex) wait (mutex)  …  wait (mutex) Omitting  of wait (mutex) or signal (mutex) (or both)
Monitors A high-level abstraction that provides a convenient and effective mechanism for process synchronization Only one process may be active within the monitor at a time monitor monitor-name { // shared variable declarations procedure P1 (…) { …. } … procedure Pn (…) {……} Initialization code ( ….) { … } … } }
Schematic view of a Monitor
Condition Variables condition x, y; Two operations on a condition variable: x.wait ()  – a process that invokes the operation is  suspended. x.signal ()  –   resumes one of processes   (if any)   that invoked  x.wait ()
Monitor with Condition Variables
Solution to Dining Philosophers monitor DP {  enum { THINKING; HUNGRY, EATING) state [5] ; condition self [5]; void pickup (int i) {    state[i] = HUNGRY;   test(i);   if (state[i] != EATING) self [i].wait; } void putdown (int i) {    state[i] = THINKING; // test left and right neighbors   test((i + 4) % 5);   test((i + 1) % 5); }
Solution to Dining Philosophers (cont) void test (int i) {    if ( (state[(i + 4) % 5] != EATING) &&   (state[i] == HUNGRY) &&   (state[(i + 1) % 5] != EATING) ) {    state[i] = EATING ;   self[i].signal () ;   }   } initialization_code() {    for (int i = 0; i < 5; i++)   state[i] = THINKING; } }
Solution to Dining Philosophers (cont) Each philosopher  I  invokes the   operations  pickup() and  putdown()  in the following sequence: dp.pickup (i) EAT dp.putdown (i)
Monitor Implementation Using Semaphores Variables  semaphore mutex;  // (initially  = 1) semaphore next;  // (initially  = 0) int next-count = 0; Each procedure  F   will be replaced by wait(mutex);   …   body of  F ;   … if (next-count > 0) signal(next) else  signal(mutex); Mutual exclusion within a monitor is ensured.
Monitor Implementation For each condition variable  x , we  have: semaphore x-sem; // (initially  = 0) int x-count = 0; The operation  x.wait   can be implemented as: x-count++; if (next-count > 0) signal(next); else signal(mutex); wait(x-sem); x-count--;
Monitor Implementation The operation  x.signal  can be implemented as: if (x-count > 0) { next-count++; signal(x-sem); wait(next); next-count--; }
Synchronization Examples Solaris Windows XP Linux Pthreads
Solaris Synchronization Implements a variety of locks to support multitasking, multithreading (including real-time threads), and multiprocessing Uses  adaptive mutexes  for efficiency when protecting data from short code segments Uses  condition variables  and  readers-writers  locks when longer sections of code need access to data Uses  turnstiles  to order the list of threads waiting to acquire either an adaptive mutex or reader-writer lock
Windows XP Synchronization Uses interrupt masks to protect access to global resources on uniprocessor systems Uses  spinlocks  on multiprocessor systems Also provides  dispatcher objects  which may act as either mutexes and semaphores Dispatcher objects may also provide  events An event acts much like a condition variable
Linux Synchronization Linux: disables interrupts to implement short critical sections Linux provides: semaphores spin locks
Pthreads Synchronization Pthreads API is OS-independent It provides: mutex locks condition variables Non-portable extensions include: read-write locks spin locks
Atomic Transactions System Model Log-based Recovery Checkpoints Concurrent Atomic Transactions
System Model Assures that operations happen as a single logical unit of work, in its entirety, or not at all Related to field of database systems Challenge is assuring atomicity  despite computer system failures Transaction  - collection of instructions or operations that performs single logical function Here we are concerned with changes to stable storage – disk Transaction is series of  read  and  write  operations Terminated by  commit   (transaction successful) or  abort  (transaction failed) operation Aborted transaction must be  rolled back  to undo any changes it performed
Types of Storage Media Volatile storage – information stored here does not survive system crashes Example:  main memory, cache Nonvolatile storage – Information usually survives crashes Example:  disk and tape Stable storage – Information never lost Not actually possible, so approximated via replication or RAID to devices with independent failure modes Goal is to assure transaction atomicity where failures cause loss of information on volatile storage
Log-Based Recovery Record to stable storage information about all modifications by a transaction Most common is  write-ahead logging Log on stable storage, each log record describes single transaction write operation, including Transaction name Data item name Old value New value <T i  starts> written to log when transaction T i  starts <T i  commits> written when T i  commits Log entry must reach stable storage before operation on data occurs
Log-Based Recovery Algorithm Using the log, system can handle any volatile memory errors Undo(T i )  restores value of all data updated by T i Redo(T i )  sets values of all data in transaction T i  to new values Undo(T i ) and redo(T i ) must be  idempotent Multiple executions must have the same result as one execution If system fails, restore state of all updated data via log If log contains <T i  starts> without <T i  commits>,  undo(T i ) If log contains <T i  starts> and <T i  commits>,  redo(T i )
Checkpoints Log could become long, and recovery could take long Checkpoints shorten log and recovery time. Checkpoint scheme: Output all log records currently in volatile storage to stable storage Output all modified data from volatile to stable storage Output a log record <checkpoint> to the log on stable storage Now recovery only includes Ti, such that Ti started executing before the most recent checkpoint, and all transactions after Ti All other transactions already on stable storage
Concurrent Transactions Must be equivalent to serial execution –  serializability Could perform all transactions in critical section Inefficient, too restrictive Concurrency-control algorithms  provide serializability
Serializability Consider two data items A and B Consider Transactions T 0  and T 1 Execute T 0 , T 1  atomically Execution sequence called  schedule Atomically executed transaction order called  serial schedule For N transactions, there are N! valid serial schedules
Schedule 1: T 0  then T 1
Nonserial Schedule Nonserial schedule  allows overlapped execute Resulting execution not necessarily incorrect Consider schedule S, operations O i , O j Conflict  if access same data item, with at least one write If O i , O j  consecutive and operations of different transactions & O i  and O j  don’t conflict Then S’ with swapped order O j  O i  equivalent to S If S can become S’ via swapping nonconflicting operations S is  conflict serializable
Schedule 2: Concurrent Serializable Schedule
Locking   Protocol Ensure serializability by associating lock with each data item Follow locking protocol for access control Locks Shared  – T i  has shared-mode lock (S) on item Q, T i  can read Q but not write Q Exclusive  – Ti has exclusive-mode lock (X) on Q, T i  can read and write Q Require every transaction on item Q acquire appropriate lock If lock already held, new request may have to wait Similar to readers-writers algorithm
Two-phase Locking Protocol Generally ensures conflict serializability Each transaction issues lock and unlock requests in two phases Growing – obtaining locks Shrinking – releasing locks Does not prevent deadlock
Timestamp-based Protocols Select order among transactions in advance –  timestamp-ordering Transaction T i  associated with timestamp TS(T i ) before T i  starts TS(T i ) < TS(T j ) if Ti entered system before T j TS can be generated from system clock or as logical counter incremented at each entry of transaction Timestamps determine serializability order If TS(T i ) < TS(T j ), system must ensure produced schedule equivalent to serial schedule where T i  appears before T j
Timestamp-based Protocol Implementation Data item Q gets two timestamps W-timestamp(Q) – largest timestamp of any transaction that executed write(Q) successfully R-timestamp(Q) – largest timestamp of successful read(Q) Updated whenever read(Q) or write(Q) executed Timestamp-ordering protocol  assures any conflicting  read  and  write  executed in timestamp order Suppose Ti executes  read(Q) If TS(T i ) < W-timestamp(Q), Ti needs to read value of Q that was already overwritten read  operation rejected and T i  rolled back If TS(T i ) ≄ W-timestamp(Q) read  executed, R-timestamp(Q) set to max(R-timestamp(Q), TS(T i ))
Timestamp-ordering Protocol Suppose Ti executes write(Q) If TS(T i ) < R-timestamp(Q), value Q produced by T i  was needed previously and T i  assumed it would never be produced Write  operation rejected, T i  rolled back If TS(T i ) < W-tiimestamp(Q), T i  attempting to write obsolete value of Q Write  operation rejected and T i  rolled back Otherwise,  write  executed Any rolled back transaction T i  is assigned new timestamp and restarted Algorithm ensures conflict serializability and freedom from deadlock
Schedule Possible Under Timestamp Protocol
End of Chapter 6
Ad

More Related Content

What's hot (20)

Chapter 8 - Main Memory
Chapter 8 - Main MemoryChapter 8 - Main Memory
Chapter 8 - Main Memory
Wayne Jones Jnr
Ā 
Chapter 9 - Virtual Memory
Chapter 9 - Virtual MemoryChapter 9 - Virtual Memory
Chapter 9 - Virtual Memory
Wayne Jones Jnr
Ā 
Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"
Ra'Fat Al-Msie'deen
Ā 
Cs8493 unit 2
Cs8493 unit 2Cs8493 unit 2
Cs8493 unit 2
Kathirvel Ayyaswamy
Ā 
Chapter 8 Operating Systems silberschatz : deadlocks
Chapter 8 Operating Systems silberschatz : deadlocksChapter 8 Operating Systems silberschatz : deadlocks
Chapter 8 Operating Systems silberschatz : deadlocks
GiulianoRanauro
Ā 
OS Process Synchronization, semaphore and Monitors
OS Process Synchronization, semaphore and MonitorsOS Process Synchronization, semaphore and Monitors
OS Process Synchronization, semaphore and Monitors
sgpraju
Ā 
Memory management
Memory managementMemory management
Memory management
CHANDERPRABHU JAIN COLLEGE OF HIGHER STUDIES & SCHOOL OF LAW
Ā 
Chapter 10 Operating Systems silberschatz
Chapter 10 Operating Systems silberschatzChapter 10 Operating Systems silberschatz
Chapter 10 Operating Systems silberschatz
GiulianoRanauro
Ā 
Operating Systems - "Chapter 4: Multithreaded Programming"
Operating Systems - "Chapter 4:  Multithreaded Programming"Operating Systems - "Chapter 4:  Multithreaded Programming"
Operating Systems - "Chapter 4: Multithreaded Programming"
Ra'Fat Al-Msie'deen
Ā 
Operating system concepts
Operating system conceptsOperating system concepts
Operating system concepts
Starlee Lathong
Ā 
Unit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process SynchronizationUnit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process Synchronization
cscarcas
Ā 
Process synchronization
Process synchronizationProcess synchronization
Process synchronization
Ali Ahmad
Ā 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating System
Rashmi Bhat
Ā 
Memory management
Memory managementMemory management
Memory management
Vishal Singh
Ā 
Memory Management
Memory ManagementMemory Management
Memory Management
DEDE IRYAWAN
Ā 
BANKER'S ALGORITHM
BANKER'S ALGORITHMBANKER'S ALGORITHM
BANKER'S ALGORITHM
Muhammad Baqar Kazmi
Ā 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
Adeel Rasheed
Ā 
8 memory management strategies
8 memory management strategies8 memory management strategies
8 memory management strategies
Dr. Loganathan R
Ā 
Process synchronization in operating system
Process synchronization in operating systemProcess synchronization in operating system
Process synchronization in operating system
Ruaha Catholic university
Ā 
Semaphores
SemaphoresSemaphores
Semaphores
Mohd Arif
Ā 
Chapter 8 - Main Memory
Chapter 8 - Main MemoryChapter 8 - Main Memory
Chapter 8 - Main Memory
Wayne Jones Jnr
Ā 
Chapter 9 - Virtual Memory
Chapter 9 - Virtual MemoryChapter 9 - Virtual Memory
Chapter 9 - Virtual Memory
Wayne Jones Jnr
Ā 
Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"Operating Systems - "Chapter 5 Process Synchronization"
Operating Systems - "Chapter 5 Process Synchronization"
Ra'Fat Al-Msie'deen
Ā 
Chapter 8 Operating Systems silberschatz : deadlocks
Chapter 8 Operating Systems silberschatz : deadlocksChapter 8 Operating Systems silberschatz : deadlocks
Chapter 8 Operating Systems silberschatz : deadlocks
GiulianoRanauro
Ā 
OS Process Synchronization, semaphore and Monitors
OS Process Synchronization, semaphore and MonitorsOS Process Synchronization, semaphore and Monitors
OS Process Synchronization, semaphore and Monitors
sgpraju
Ā 
Chapter 10 Operating Systems silberschatz
Chapter 10 Operating Systems silberschatzChapter 10 Operating Systems silberschatz
Chapter 10 Operating Systems silberschatz
GiulianoRanauro
Ā 
Operating Systems - "Chapter 4: Multithreaded Programming"
Operating Systems - "Chapter 4:  Multithreaded Programming"Operating Systems - "Chapter 4:  Multithreaded Programming"
Operating Systems - "Chapter 4: Multithreaded Programming"
Ra'Fat Al-Msie'deen
Ā 
Operating system concepts
Operating system conceptsOperating system concepts
Operating system concepts
Starlee Lathong
Ā 
Unit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process SynchronizationUnit II - 3 - Operating System - Process Synchronization
Unit II - 3 - Operating System - Process Synchronization
cscarcas
Ā 
Process synchronization
Process synchronizationProcess synchronization
Process synchronization
Ali Ahmad
Ā 
Virtual memory management in Operating System
Virtual memory management in Operating SystemVirtual memory management in Operating System
Virtual memory management in Operating System
Rashmi Bhat
Ā 
Memory management
Memory managementMemory management
Memory management
Vishal Singh
Ā 
Memory Management
Memory ManagementMemory Management
Memory Management
DEDE IRYAWAN
Ā 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
Adeel Rasheed
Ā 
8 memory management strategies
8 memory management strategies8 memory management strategies
8 memory management strategies
Dr. Loganathan R
Ā 
Process synchronization in operating system
Process synchronization in operating systemProcess synchronization in operating system
Process synchronization in operating system
Ruaha Catholic university
Ā 
Semaphores
SemaphoresSemaphores
Semaphores
Mohd Arif
Ā 

Viewers also liked (8)

Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating Systems
Ritu Ranjan Shrivastwa
Ā 
Web technology
Web technologyWeb technology
Web technology
Selvin Josy Bai Somu
Ā 
Process synchronization(deepa)
Process synchronization(deepa)Process synchronization(deepa)
Process synchronization(deepa)
Nagarajan
Ā 
Operating Systems - Synchronization
Operating Systems - SynchronizationOperating Systems - Synchronization
Operating Systems - Synchronization
Emery Berger
Ā 
Operating System Process Synchronization
Operating System Process SynchronizationOperating System Process Synchronization
Operating System Process Synchronization
Haziq Naeem
Ā 
Web Tech
Web TechWeb Tech
Web Tech
Rupsee
Ā 
Operating system critical section
Operating system   critical sectionOperating system   critical section
Operating system critical section
Harshana Madusanka Jayamaha
Ā 
Process Synchronization And Deadlocks
Process Synchronization And DeadlocksProcess Synchronization And Deadlocks
Process Synchronization And Deadlocks
tech2click
Ā 
Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating Systems
Ritu Ranjan Shrivastwa
Ā 
Process synchronization(deepa)
Process synchronization(deepa)Process synchronization(deepa)
Process synchronization(deepa)
Nagarajan
Ā 
Operating Systems - Synchronization
Operating Systems - SynchronizationOperating Systems - Synchronization
Operating Systems - Synchronization
Emery Berger
Ā 
Operating System Process Synchronization
Operating System Process SynchronizationOperating System Process Synchronization
Operating System Process Synchronization
Haziq Naeem
Ā 
Web Tech
Web TechWeb Tech
Web Tech
Rupsee
Ā 
Process Synchronization And Deadlocks
Process Synchronization And DeadlocksProcess Synchronization And Deadlocks
Process Synchronization And Deadlocks
tech2click
Ā 
Ad

Similar to Chapter 6 - Process Synchronization (20)

Os3
Os3Os3
Os3
gopal10scs185
Ā 
CH05.pdf
CH05.pdfCH05.pdf
CH05.pdf
ImranKhan880955
Ā 
OS_Ch7
OS_Ch7OS_Ch7
OS_Ch7
Supriya Shrivastava
Ā 
OSCh7
OSCh7OSCh7
OSCh7
Joe Christensen
Ā 
Mca ii os u-2 process management & communication
Mca  ii  os u-2 process management & communicationMca  ii  os u-2 process management & communication
Mca ii os u-2 process management & communication
Rai University
Ā 
Ch7 OS
Ch7 OSCh7 OS
Ch7 OS
C.U
Ā 
OS Process synchronization Unit3 synchronization
OS Process synchronization Unit3  synchronizationOS Process synchronization Unit3  synchronization
OS Process synchronization Unit3 synchronization
subhamchy2005
Ā 
Os unit 3
Os unit 3Os unit 3
Os unit 3
Krupali Mistry
Ā 
Process Synchronization -1.ppt
Process Synchronization -1.pptProcess Synchronization -1.ppt
Process Synchronization -1.ppt
jayverma27
Ā 
Ch6
Ch6Ch6
Ch6
Lokesh Kannaiyan
Ā 
Lecture18-19 (1).ppt
Lecture18-19 (1).pptLecture18-19 (1).ppt
Lecture18-19 (1).ppt
ssuserf67e3a
Ā 
Synchronization in os.pptx
Synchronization in os.pptxSynchronization in os.pptx
Synchronization in os.pptx
AbdullahBhatti53
Ā 
Operating System
Operating SystemOperating System
Operating System
Subhasis Dash
Ā 
synchronization in operating system structure
synchronization in operating system structuresynchronization in operating system structure
synchronization in operating system structure
gaurav77712
Ā 
Os4
Os4Os4
Os4
issbp
Ā 
6.Process Synchronization
6.Process Synchronization6.Process Synchronization
6.Process Synchronization
Senthil Kanth
Ā 
Section06-Syncopkojiojoijnnjkhuubgfffppt
Section06-SyncopkojiojoijnnjkhuubgfffpptSection06-Syncopkojiojoijnnjkhuubgfffppt
Section06-Syncopkojiojoijnnjkhuubgfffppt
shubhangimalas1
Ā 
Lecture_6_Process.ppt
Lecture_6_Process.pptLecture_6_Process.ppt
Lecture_6_Process.ppt
wafawafa52
Ā 
Lecture16-17.ppt
Lecture16-17.pptLecture16-17.ppt
Lecture16-17.ppt
ssuserf67e3a
Ā 
Ssc06 e
Ssc06 eSsc06 e
Ssc06 e
Venkatramana Reddy K
Ā 
Mca ii os u-2 process management & communication
Mca  ii  os u-2 process management & communicationMca  ii  os u-2 process management & communication
Mca ii os u-2 process management & communication
Rai University
Ā 
Ch7 OS
Ch7 OSCh7 OS
Ch7 OS
C.U
Ā 
OS Process synchronization Unit3 synchronization
OS Process synchronization Unit3  synchronizationOS Process synchronization Unit3  synchronization
OS Process synchronization Unit3 synchronization
subhamchy2005
Ā 
Process Synchronization -1.ppt
Process Synchronization -1.pptProcess Synchronization -1.ppt
Process Synchronization -1.ppt
jayverma27
Ā 
Lecture18-19 (1).ppt
Lecture18-19 (1).pptLecture18-19 (1).ppt
Lecture18-19 (1).ppt
ssuserf67e3a
Ā 
Synchronization in os.pptx
Synchronization in os.pptxSynchronization in os.pptx
Synchronization in os.pptx
AbdullahBhatti53
Ā 
Operating System
Operating SystemOperating System
Operating System
Subhasis Dash
Ā 
synchronization in operating system structure
synchronization in operating system structuresynchronization in operating system structure
synchronization in operating system structure
gaurav77712
Ā 
Os4
Os4Os4
Os4
issbp
Ā 
6.Process Synchronization
6.Process Synchronization6.Process Synchronization
6.Process Synchronization
Senthil Kanth
Ā 
Section06-Syncopkojiojoijnnjkhuubgfffppt
Section06-SyncopkojiojoijnnjkhuubgfffpptSection06-Syncopkojiojoijnnjkhuubgfffppt
Section06-Syncopkojiojoijnnjkhuubgfffppt
shubhangimalas1
Ā 
Lecture_6_Process.ppt
Lecture_6_Process.pptLecture_6_Process.ppt
Lecture_6_Process.ppt
wafawafa52
Ā 
Lecture16-17.ppt
Lecture16-17.pptLecture16-17.ppt
Lecture16-17.ppt
ssuserf67e3a
Ā 
Ad

More from Wayne Jones Jnr (20)

Chapter 26 - Remote Logging, Electronic Mail & File Transfer
Chapter 26 - Remote Logging, Electronic Mail & File TransferChapter 26 - Remote Logging, Electronic Mail & File Transfer
Chapter 26 - Remote Logging, Electronic Mail & File Transfer
Wayne Jones Jnr
Ā 
Ch25
Ch25Ch25
Ch25
Wayne Jones Jnr
Ā 
Ch24
Ch24Ch24
Ch24
Wayne Jones Jnr
Ā 
Ch23
Ch23Ch23
Ch23
Wayne Jones Jnr
Ā 
Ch22
Ch22Ch22
Ch22
Wayne Jones Jnr
Ā 
Ch21
Ch21Ch21
Ch21
Wayne Jones Jnr
Ā 
Ch20
Ch20Ch20
Ch20
Wayne Jones Jnr
Ā 
Ch19
Ch19Ch19
Ch19
Wayne Jones Jnr
Ā 
Ch18
Ch18Ch18
Ch18
Wayne Jones Jnr
Ā 
Ch17
Ch17Ch17
Ch17
Wayne Jones Jnr
Ā 
Ch16
Ch16Ch16
Ch16
Wayne Jones Jnr
Ā 
Ch15
Ch15Ch15
Ch15
Wayne Jones Jnr
Ā 
Ch14
Ch14Ch14
Ch14
Wayne Jones Jnr
Ā 
Ch13
Ch13Ch13
Ch13
Wayne Jones Jnr
Ā 
Ch12
Ch12Ch12
Ch12
Wayne Jones Jnr
Ā 
Ch10
Ch10Ch10
Ch10
Wayne Jones Jnr
Ā 
Ch09
Ch09Ch09
Ch09
Wayne Jones Jnr
Ā 
Ch08
Ch08Ch08
Ch08
Wayne Jones Jnr
Ā 
Ch07
Ch07Ch07
Ch07
Wayne Jones Jnr
Ā 
Ch06
Ch06Ch06
Ch06
Wayne Jones Jnr
Ā 

Recently uploaded (20)

UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
Ā 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
Ā 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
Ā 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
Ā 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
Ā 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
Ā 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
Ā 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
Ā 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
Ā 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
Ā 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
Ā 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
Ā 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
Ā 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
Ā 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
Ā 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
Ā 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
Ā 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
Ā 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
Ā 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
Ā 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
Ā 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
Ā 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
Ā 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
Ā 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
Ā 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
Ā 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
Ā 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
Ā 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
Ā 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
Ā 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
Ā 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
Ā 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
Ā 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
Ā 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
Ā 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
Ā 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
Ā 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
Ā 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
Ā 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
Ā 

Chapter 6 - Process Synchronization

  • 1. Chapter 6: Process Synchronization
  • 2. Module 6: Process Synchronization Background The Critical-Section Problem Peterson’s Solution Synchronization Hardware Semaphores Classic Problems of Synchronization Monitors Synchronization Examples Atomic Transactions
  • 3. Background Concurrent access to shared data may result in data inconsistency Maintaining data consistency requires mechanisms to ensure the orderly execution of cooperating processes Suppose that we wanted to provide a solution to the consumer-producer problem that fills all the buffers. We can do so by having an integer count that keeps track of the number of full buffers. Initially, count is set to 0. It is incremented by the producer after it produces a new buffer and is decremented by the consumer after it consumes a buffer.
  • 4. Producer while (true) { /* produce an item and put in nextProduced */ while (count == BUFFER_SIZE) ; // do nothing buffer [in] = nextProduced; in = (in + 1) % BUFFER_SIZE; count++; }
  • 5. Consumer while (true) { while (count == 0) ; // do nothing nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; count--; /* consume the item in nextConsumed }
  • 6. Race Condition count++ could be implemented as register1 = count register1 = register1 + 1 count = register1 count-- could be implemented as register2 = count register2 = register2 - 1 count = register2 Consider this execution interleaving with ā€œcount = 5ā€ initially: S0: producer execute register1 = count {register1 = 5} S1: producer execute register1 = register1 + 1 {register1 = 6} S2: consumer execute register2 = count {register2 = 5} S3: consumer execute register2 = register2 - 1 {register2 = 4} S4: producer execute count = register1 {count = 6 } S5: consumer execute count = register2 {count = 4}
  • 7. Solution to Critical-Section Problem 1. Mutual Exclusion - If process P i is executing in its critical section, then no other processes can be executing in their critical sections 2. Progress - If no process is executing in its critical section and there exist some processes that wish to enter their critical section, then the selection of the processes that will enter the critical section next cannot be postponed indefinitely 3. Bounded Waiting - A bound must exist on the number of times that other processes are allowed to enter their critical sections after a process has made a request to enter its critical section and before that request is granted Assume that each process executes at a nonzero speed No assumption concerning relative speed of the N processes
  • 8. Peterson’s Solution Two process solution Assume that the LOAD and STORE instructions are atomic; that is, cannot be interrupted. The two processes share two variables: int turn ; Boolean flag[2] The variable turn indicates whose turn it is to enter the critical section. The flag array is used to indicate if a process is ready to enter the critical section. flag[i] = true implies that process P i is ready!
  • 9. Algorithm for Process P i while (true) { flag[i] = TRUE; turn = j; while ( flag[j] && turn == j); CRITICAL SECTION flag[i] = FALSE; REMAINDER SECTION }
  • 10. Synchronization Hardware Many systems provide hardware support for critical section code Uniprocessors – could disable interrupts Currently running code would execute without preemption Generally too inefficient on multiprocessor systems Operating systems using this not broadly scalable Modern machines provide special atomic hardware instructions Atomic = non-interruptable Either test memory word and set value Or swap contents of two memory words
  • 11. TestAndndSet Instruction Definition: boolean TestAndSet (boolean *target) { boolean rv = *target; *target = TRUE; return rv: }
  • 12. Solution using TestAndSet Shared boolean variable lock., initialized to false. Solution: while (true) { while ( TestAndSet (&lock )) ; /* do nothing // critical section lock = FALSE; // remainder section }
  • 13. Swap Instruction Definition: void Swap (boolean *a, boolean *b) { boolean temp = *a; *a = *b; *b = temp: }
  • 14. Solution 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 }
  • 15. Semaphore 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() Less complicated Can only be accessed via two indivisible (atomic) operations wait (S) { while S <= 0 ; // no-op S--; } signal (S) { S++; }
  • 16. Semaphore as General Synchronization Tool Counting semaphore – integer value can range over an unrestricted domain Binary semaphore – integer value can range only between 0 and 1; can be simpler to implement Also known as mutex locks Can implement a counting semaphore S as a binary semaphore Provides mutual exclusion Semaphore S; // initialized to 1 wait (S); Critical Section signal (S);
  • 17. Semaphore Implementation Must guarantee that no two processes can execute wait () and signal () on the same semaphore at the same time Thus, implementation becomes the critical section problem where the wait and signal code are placed in the crtical section. Could now have busy waiting in critical section implementation But implementation code is short Little busy waiting if critical section rarely occupied Note that applications may spend lots of time in critical sections and therefore this is not a good solution.
  • 18. Semaphore Implementation with no Busy waiting With each semaphore there is an associated waiting queue. Each entry in a waiting queue has two data items: value (of type integer) pointer to next record in the list 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.
  • 19. Semaphore Implementation with no Busy waiting (Cont.) Implementation of wait: wait (S){ value--; if (value < 0) { add this process to waiting queue block(); } } Implementation of signal: Signal (S){ value++; if (value < = 0) { remove a process P from the waiting queue wakeup(P); } }
  • 20. Deadlock 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 P 0 P 1 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.
  • 21. Classical Problems of Synchronization Bounded-Buffer Problem Readers and Writers Problem Dining-Philosophers Problem
  • 22. Bounded-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.
  • 23. Bounded 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); }
  • 24. Bounded 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 }
  • 25. Readers-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 single 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.
  • 26. Readers-Writers Problem (Cont.) The structure of a writer process while (true) { wait (wrt) ; // writing is performed signal (wrt) ; }
  • 27. Readers-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) ; }
  • 28. Dining-Philosophers Problem Shared data Bowl of rice (data set) Semaphore chopstick [5] initialized to 1
  • 29. Dining-Philosophers Problem (Cont.) The structure of Philosopher i : While (true) { wait ( chopstick[i] ); wait ( chopStick[ (i + 1) % 5] ); // eat signal ( chopstick[i] ); signal (chopstick[ (i + 1) % 5] ); // think }
  • 30. Problems with Semaphores Correct use of semaphore operations: signal (mutex) …. wait (mutex) wait (mutex) … wait (mutex) Omitting of wait (mutex) or signal (mutex) (or both)
  • 31. Monitors A high-level abstraction that provides a convenient and effective mechanism for process synchronization Only one process may be active within the monitor at a time monitor monitor-name { // shared variable declarations procedure P1 (…) { …. } … procedure Pn (…) {……} Initialization code ( ….) { … } … } }
  • 32. Schematic view of a Monitor
  • 33. Condition Variables condition x, y; Two operations on a condition variable: x.wait () – a process that invokes the operation is suspended. x.signal () – resumes one of processes (if any) that invoked x.wait ()
  • 35. Solution to Dining Philosophers monitor DP { enum { THINKING; HUNGRY, EATING) state [5] ; condition self [5]; void pickup (int i) { state[i] = HUNGRY; test(i); if (state[i] != EATING) self [i].wait; } void putdown (int i) { state[i] = THINKING; // test left and right neighbors test((i + 4) % 5); test((i + 1) % 5); }
  • 36. Solution to Dining Philosophers (cont) void test (int i) { if ( (state[(i + 4) % 5] != EATING) && (state[i] == HUNGRY) && (state[(i + 1) % 5] != EATING) ) { state[i] = EATING ; self[i].signal () ; } } initialization_code() { for (int i = 0; i < 5; i++) state[i] = THINKING; } }
  • 37. Solution to Dining Philosophers (cont) Each philosopher I invokes the operations pickup() and putdown() in the following sequence: dp.pickup (i) EAT dp.putdown (i)
  • 38. Monitor Implementation Using Semaphores Variables semaphore mutex; // (initially = 1) semaphore next; // (initially = 0) int next-count = 0; Each procedure F will be replaced by wait(mutex); … body of F ; … if (next-count > 0) signal(next) else signal(mutex); Mutual exclusion within a monitor is ensured.
  • 39. Monitor Implementation For each condition variable x , we have: semaphore x-sem; // (initially = 0) int x-count = 0; The operation x.wait can be implemented as: x-count++; if (next-count > 0) signal(next); else signal(mutex); wait(x-sem); x-count--;
  • 40. Monitor Implementation The operation x.signal can be implemented as: if (x-count > 0) { next-count++; signal(x-sem); wait(next); next-count--; }
  • 41. Synchronization Examples Solaris Windows XP Linux Pthreads
  • 42. Solaris Synchronization Implements a variety of locks to support multitasking, multithreading (including real-time threads), and multiprocessing Uses adaptive mutexes for efficiency when protecting data from short code segments Uses condition variables and readers-writers locks when longer sections of code need access to data Uses turnstiles to order the list of threads waiting to acquire either an adaptive mutex or reader-writer lock
  • 43. Windows XP Synchronization Uses interrupt masks to protect access to global resources on uniprocessor systems Uses spinlocks on multiprocessor systems Also provides dispatcher objects which may act as either mutexes and semaphores Dispatcher objects may also provide events An event acts much like a condition variable
  • 44. Linux Synchronization Linux: disables interrupts to implement short critical sections Linux provides: semaphores spin locks
  • 45. Pthreads Synchronization Pthreads API is OS-independent It provides: mutex locks condition variables Non-portable extensions include: read-write locks spin locks
  • 46. Atomic Transactions System Model Log-based Recovery Checkpoints Concurrent Atomic Transactions
  • 47. System Model Assures that operations happen as a single logical unit of work, in its entirety, or not at all Related to field of database systems Challenge is assuring atomicity despite computer system failures Transaction - collection of instructions or operations that performs single logical function Here we are concerned with changes to stable storage – disk Transaction is series of read and write operations Terminated by commit (transaction successful) or abort (transaction failed) operation Aborted transaction must be rolled back to undo any changes it performed
  • 48. Types of Storage Media Volatile storage – information stored here does not survive system crashes Example: main memory, cache Nonvolatile storage – Information usually survives crashes Example: disk and tape Stable storage – Information never lost Not actually possible, so approximated via replication or RAID to devices with independent failure modes Goal is to assure transaction atomicity where failures cause loss of information on volatile storage
  • 49. Log-Based Recovery Record to stable storage information about all modifications by a transaction Most common is write-ahead logging Log on stable storage, each log record describes single transaction write operation, including Transaction name Data item name Old value New value <T i starts> written to log when transaction T i starts <T i commits> written when T i commits Log entry must reach stable storage before operation on data occurs
  • 50. Log-Based Recovery Algorithm Using the log, system can handle any volatile memory errors Undo(T i ) restores value of all data updated by T i Redo(T i ) sets values of all data in transaction T i to new values Undo(T i ) and redo(T i ) must be idempotent Multiple executions must have the same result as one execution If system fails, restore state of all updated data via log If log contains <T i starts> without <T i commits>, undo(T i ) If log contains <T i starts> and <T i commits>, redo(T i )
  • 51. Checkpoints Log could become long, and recovery could take long Checkpoints shorten log and recovery time. Checkpoint scheme: Output all log records currently in volatile storage to stable storage Output all modified data from volatile to stable storage Output a log record <checkpoint> to the log on stable storage Now recovery only includes Ti, such that Ti started executing before the most recent checkpoint, and all transactions after Ti All other transactions already on stable storage
  • 52. Concurrent Transactions Must be equivalent to serial execution – serializability Could perform all transactions in critical section Inefficient, too restrictive Concurrency-control algorithms provide serializability
  • 53. Serializability Consider two data items A and B Consider Transactions T 0 and T 1 Execute T 0 , T 1 atomically Execution sequence called schedule Atomically executed transaction order called serial schedule For N transactions, there are N! valid serial schedules
  • 54. Schedule 1: T 0 then T 1
  • 55. Nonserial Schedule Nonserial schedule allows overlapped execute Resulting execution not necessarily incorrect Consider schedule S, operations O i , O j Conflict if access same data item, with at least one write If O i , O j consecutive and operations of different transactions & O i and O j don’t conflict Then S’ with swapped order O j O i equivalent to S If S can become S’ via swapping nonconflicting operations S is conflict serializable
  • 56. Schedule 2: Concurrent Serializable Schedule
  • 57. Locking Protocol Ensure serializability by associating lock with each data item Follow locking protocol for access control Locks Shared – T i has shared-mode lock (S) on item Q, T i can read Q but not write Q Exclusive – Ti has exclusive-mode lock (X) on Q, T i can read and write Q Require every transaction on item Q acquire appropriate lock If lock already held, new request may have to wait Similar to readers-writers algorithm
  • 58. Two-phase Locking Protocol Generally ensures conflict serializability Each transaction issues lock and unlock requests in two phases Growing – obtaining locks Shrinking – releasing locks Does not prevent deadlock
  • 59. Timestamp-based Protocols Select order among transactions in advance – timestamp-ordering Transaction T i associated with timestamp TS(T i ) before T i starts TS(T i ) < TS(T j ) if Ti entered system before T j TS can be generated from system clock or as logical counter incremented at each entry of transaction Timestamps determine serializability order If TS(T i ) < TS(T j ), system must ensure produced schedule equivalent to serial schedule where T i appears before T j
  • 60. Timestamp-based Protocol Implementation Data item Q gets two timestamps W-timestamp(Q) – largest timestamp of any transaction that executed write(Q) successfully R-timestamp(Q) – largest timestamp of successful read(Q) Updated whenever read(Q) or write(Q) executed Timestamp-ordering protocol assures any conflicting read and write executed in timestamp order Suppose Ti executes read(Q) If TS(T i ) < W-timestamp(Q), Ti needs to read value of Q that was already overwritten read operation rejected and T i rolled back If TS(T i ) ≄ W-timestamp(Q) read executed, R-timestamp(Q) set to max(R-timestamp(Q), TS(T i ))
  • 61. Timestamp-ordering Protocol Suppose Ti executes write(Q) If TS(T i ) < R-timestamp(Q), value Q produced by T i was needed previously and T i assumed it would never be produced Write operation rejected, T i rolled back If TS(T i ) < W-tiimestamp(Q), T i attempting to write obsolete value of Q Write operation rejected and T i rolled back Otherwise, write executed Any rolled back transaction T i is assigned new timestamp and restarted Algorithm ensures conflict serializability and freedom from deadlock
  • 62. Schedule Possible Under Timestamp Protocol