Other Important Synchronization Primitives

Slides:



Advertisements
Similar presentations
Operating Systems ECE344 Midterm review Ding Yuan
Advertisements

More on Processes Chapter 3. Process image _the physical representation of a process in the OS _an address space consisting of code, data and stack segments.
Chapter 6 Concurrency: Deadlock and Starvation Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee Community.
Computer Systems/Operating Systems - Class 8
Concurrency, Race Conditions, Mutual Exclusion, Semaphores, Monitors, Deadlocks Chapters 2 and 6 Tanenbaum’s Modern OS.
5.6 Semaphores Semaphores –Software construct that can be used to enforce mutual exclusion –Contains a protected variable Can be accessed only via wait.
Concurrency CS 510: Programming Languages David Walker.
Introduction to Operating Systems – Windows process and thread management In this lecture we will cover Threads and processes in Windows Thread priority.
3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another.
Inter Process Communication:  It is an essential aspect of process management. By allowing processes to communicate with each other: 1.We can synchronize.
Concurrency: Mutual Exclusion, Synchronization, Deadlock, and Starvation in Representative Operating Systems.
Advanced OS Chapter 3p2 Sections 3.4 / 3.5. Interrupts These enable software to respond to signals from hardware. The set of instructions to be executed.
1 Concurrency: Deadlock and Starvation Chapter 6.
© 2004, D. J. Foreman 2-1 Concurrency, Processes and Threads.
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
Chapter 6 Concurrency: Deadlock and Starvation Operating Systems: Internals and Design Principles, 6/E William Stallings Dave Bremer Otago Polytechnic,
Cosc 4740 Chapter 6, Part 3 Process Synchronization.
CE Operating Systems Lecture 11 Windows – Object manager and process management.
4061 Session 23 (4/10). Today Reader/Writer Locks and Semaphores Lock Files.
1 Announcements The fixing the bug part of Lab 4’s assignment 2 is now considered extra credit. Comments for the code should be on the parts you wrote.
CSE 451: Operating Systems Section 5 Midterm review.
Lecture 8 Page 1 CS 111 Online Other Important Synchronization Primitives Semaphores Mutexes Monitors.
CS399 New Beginnings Jonathan Walpole. 2 Concurrent Programming & Synchronization Primitives.
CSE 451: Operating Systems Section 5 Synchronization.
13-1 Chapter 13 Concurrency Topics Introduction Introduction to Subprogram-Level Concurrency Semaphores Monitors Message Passing Java Threads C# Threads.
CSE 153 Design of Operating Systems Winter 2015 Midterm Review.
Lecture 6 Page 1 CS 111 Summer 2013 Concurrency Solutions and Deadlock CS 111 Operating Systems Peter Reiher.
Mutual Exclusion -- Addendum. Mutual Exclusion in Critical Sections.
Tutorial 2: Homework 1 and Project 1
Chapter 13: I/O Systems.
Module 12: I/O Systems I/O hardware Application I/O Interface
Chapter 13: I/O Systems Modified by Dr. Neerja Mhaskar for CS 3SH3.
Chapter 4: Threads.
COT 4600 Operating Systems Fall 2009
Outline Other synchronization primitives
Multithreading Tutorial
INTER-PROCESS COMMUNICATION
CSCI 315 Operating Systems Design
Inter-Process Communication and Synchronization
Threads, SMP, and Microkernels
I/O Systems I/O Hardware Application I/O Interface
Operating System Concepts
13: I/O Systems I/O hardwared Application I/O Interface
CS703 - Advanced Operating Systems
Multithreading Tutorial
Chapter 2: The Linux System Part 3
Midterm review: closed book multiple choice chapters 1 to 9
Threading And Parallel Programming Constructs
Synchronization and Semaphores
Thread Implementation Issues
Lecture 2 Part 2 Process Synchronization
Threads and Concurrency
Threads Chapter 4.
Outline Parallelism and synchronization
Threads Chapter 5 2/17/2019 B.Ramamurthy.
Concurrency: Mutual Exclusion and Process Synchronization
Multithreading Tutorial
Threads Chapter 5 2/23/2019 B.Ramamurthy.
Process Description and Control
Multithreading Tutorial
Concurrency, Processes and Threads
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
CSE 153 Design of Operating Systems Winter 19
CS333 Intro to Operating Systems
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
CSE 451 Section 1/27/2000.
CSE 153 Design of Operating Systems Winter 2019
CSE 542: Operating Systems
Chapter 3: Process Management
Module 12: I/O Systems I/O hardwared Application I/O Interface
Presentation transcript:

Other Important Synchronization Primitives Semaphores Mutexes Monitors

Semaphores Counters for sequence coord. and mutual exclusion Can be binary counters or more general E.g., if you have multiple copies of the resource Call wait() on the semaphore to obtain exclusive access to a critical section For binary semaphores, you wait till whoever had it signals they are done Call signal() when you’re done For sequence coordination, signal on a shared semaphore when you finish first step Wait before you do second step

Mutexes A synchronization construct to serialize access to a critical section Typically implemented using semaphores Mutexes are one per critical section Unlike semaphores, which protect multiple copies of a resource

Monitors An object oriented synchronization primitive Sort of very OO mutexes Exclusion requirements depend on object/methods Implementation should be encapsulated in object Clients shouldn't need to know the exclusion rules A monitor is not merely a lock It is an object class, with instances, state, and methods All object methods protected by a semaphore Monitors have some very nice properties Easy to use for clients, hides unnecessary details High confidence of adequate protection

Synchronization in Real World Operating Systems How is this kind of synchronization handled in typical modern operating systems? In the kernel itself? In user-level OS features?

Kernel Mode Synchronization Performance is a major concern Many different types of exclusion are available Shared/exclusive, interrupt-safe, SMP-safe Choose type best suited to the resource and situation Implementations are in machine language Carefully coded for optimum performance Extensive use of atomic instructions Imposes a greater burden on the callers Most locking is explicit and advisory Caller expected to know and follow locking rules

User Mode Synchronization Simplicity and ease of use of great importance Conservative, enforced, one-size-fits-all locking E.g., exclusive use, block until available Implicitly associated with protected system objects E.g., files, processes, message queues, events, etc. System calls automatically serialize all operations Explicit serialization is only rarely used To protect shared resources in multi-threaded apps Simpler behavior than kernel-mode Typically implemented via system calls into the OS

Why Require System Calls for User Level Sync Operations? Mutual exclusion operations likely involve the blocking and unblocking of threads These are controlled by the operating system Critical sections in the implementations of those operations must be protected From interrupts or SMP parallelism The OS already has powerful serialization mechanisms It is easier to build on top of these

Why Is Performance More Important for Kernel Sync? Multi-threaded execution in user mode is rare High resource contention even rarer So performance problems with user-mode serialization are extremely rare The OS, on the other hand, is always running multiple concurrent threads The OS also includes many high use resources Avoiding resource contention is key to achieving good multi-processor scalability

So Why Provide Multiple Sync Primitives? If performance (and correctness) is so vital in OS sync, why not do it once? Quick and right Multiple types of locking operation lead to better performance Least restrictive locking discipline (e.g. reader/writer locks) can greatly reduce resource contention Choosing exactly when and which locks are obtained and released can minimize the time spent in the critical section Lessening the danger of deadlocks

Case Study: Unix Synchronization Internal use is very specific to particular Unix implementation Linux makes extensive use of semaphores internally But all Unix systems provide some user-level synchronization primitives Including Linux

Unix User Synchronization Mechanisms Semaphores Mostly supporting a Posix standard interface sem_open, sem_close, sem_post, sem_wait Mutual exclusion file creation (O_EXCL) Advisory file locking (flock) Shared/exclusive, blocking/non-blocking Enforced record locking (lockf) Locks a contiguous region of a file Lock/unlock/test, blocking/non-blocking All blocks can be aborted by a timer

Unix Asynchronous Completions Most events are associated with open files Normal files and devices Network or inter-process communication ports Users can specify blocking or non-blocking use Non-blocking returns if no data is yet available Poll if a logical channel is ready or would block Select the first of n channels to become ready Users can also yield and wait E.g., for the termination of a child process Signal will awaken a process from any blockage E.g., alarm clock signal after specified time interval

Completion Events Available in Linux and other Unix systems Used in multithreaded programs One thread creates and starts a completion Another thread calls a routine to wait on that completion event The thread that completes it makes another call Which results in the waiting thread being woken

Case Study: Windows Synchronization Windows includes many synchronization methods File locking Other synchronization primitives

Windows File Locking By default, Windows applications have exclusive access to files they open Can allow sharing For shared files, byte range locking provided Applications can specify ranges of bytes in the file to lock Shared or exclusive locking Windows file systems treat locks as mandatory Other applications using file mapping treat them as advisory

Other Windows Synchronization Primitives A wide range Mutexes (of several kinds) Critical regions (and guarded regions, which are less protected) Event-based synchronization E.g., waiting for an event to complete Semaphores Spin locks (several kinds) Timers