Concurrency/synchronization using UML state models and sequence models: A brief review April 21 st, 2008 Michigan State University.

Slides:



Advertisements
Similar presentations
Operating Systems Semaphores II
Advertisements


Ken Birman 1. Refresher: Dekers Algorithm Assumes two threads, numbered 0 and 1 CSEnter(int i) { int J = i^1; inside[i] = true; turn = J; while(inside[J]
50.003: Elements of Software Construction Week 6 Thread Safety and Synchronization.
Ch. 7 Process Synchronization (1/2) I Background F Producer - Consumer process :  Compiler, Assembler, Loader, · · · · · · F Bounded buffer.
Lecture 5 Concurrency and Process/Thread Synchronization     Mutual Exclusion         Dekker's Algorithm         Lamport's Bakery Algorithm.
Mutual Exclusion.
Concurrency/synchronization using UML state models April 14 th, 2008 Michigan State University.
1 Condition Synchronization. 2 Synchronization Now that you have seen locks, is that all there is? No, but what is the “right” way to build a parallel.
Locks (Java 1.5) Only one thread can hold a lock at once –Other threads that try to acquire it block (or become suspended) until lock becomes available.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 5 Multithreading and.
1/25 Concurrency and asynchronous computing How do we deal with evaluation when we have a bunch of processors involved?
CS 11 java track: lecture 7 This week: Web tutorial:
Operating Systems ECE344 Ding Yuan Synchronization (I) -- Critical region and lock Lecture 5: Synchronization (I) -- Critical region and lock.
Multi-Object Synchronization. Main Points Problems with synchronizing multiple objects Definition of deadlock – Circular waiting for resources Conditions.
CS444/CS544 Operating Systems Synchronization 2/16/2006 Prof. Searleman
CS444/CS544 Operating Systems Synchronization 2/21/2007 Prof. Searleman
K. Stirewalt CSE 335: Software Design Software Architecture and Larger System Design Issues Lecture 3: Synchronization Topics: –Concurrent access to shared.
Race Conditions CS550 Operating Systems. Review So far, we have discussed Processes and Threads and talked about multithreading and MPI processes by example.
Synchronization CSCI 444/544 Operating Systems Fall 2008.
Process Synchronization Ch. 4.4 – Cooperating Processes Ch. 7 – Concurrency.
Discussion Week 3 TA: Kyle Dewey. Overview Concurrency overview Synchronization primitives Semaphores Locks Conditions Project #1.
Concurrency Recitation – 2/24 Nisarg Raval Slides by Prof. Landon Cox.
1 Advanced Computer Programming Concurrency Multithreaded Programs Copyright © Texas Education Agency, 2013.
1 CSCD 330 Network Programming Lecture 13 More Client-Server Programming Sometime in 2014 Reading: References at end of Lecture.
Monitor  Giving credit where it is due:  The lecture notes are borrowed from Dr. I-Ling Yen at University of Texas at Dallas  I have modified them and.
1 Thread II Slides courtesy of Dr. Nilanjan Banerjee.
Atomic Operations David Monismith cs550 Operating Systems.
CSE 425: Concurrency III Monitors A monitor is a higher level construct for synchronizing multiple threads’ access to a common code segment –Can implement.
Operating Systems Review for Chap.6 & 7 Hung Q. Ngo KyungHee University Spring 2009
Multithreading : synchronization. Avanced Programming 2004, Based on LYS Stefanus’s slides slide 4.2 Solving the Race Condition Problem A thread must.
Games Development 2 Concurrent Programming CO3301 Week 9.
“Check” Out These Terms!. Overdrawn – The amount by which withdrawals exceed deposits Overdraft Protection – the bank will cover the check or pay the.
Internet Software Development Controlling Threads Paul J Krause.
4061 Session 21 (4/3). Today Thread Synchronization –Condition Variables –Monitors –Read-Write Locks.
Dr. R R DOCSIT, Dr BAMU. Basic Java :Multi Threading Cont. 2 Objectives of This Session Explain Synchronization in threads Demonstrate use of.
Monitors CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
COSC 3407: Operating Systems Lecture 9: Readers-Writers and Language Support for Synchronization.
Bank Account Environment Model Examples Prof. Tony White April 2010.
Fall 2008Programming Development Techniques 1 Topic 20 Concurrency Section 3.4.
Review: Monitor Semantics If P does X.wait() and later Q does X.signal(): –Hoare Semantics: Q blocks yielding the monitor immediately to P –Mesa Semantics:
SaUML -- Synchronization- adorned UML diagrams Eileen Kraemer April 23, 2007 Michigan State University.
CS 153 Design of Operating Systems Winter 2016 Lecture 7: Synchronization.
D u k e S y s t e m s CPS 310 Threads and Concurrency: Topics Jeff Chase Duke University
3/17/2016cse synchronization-p2 © Perkins, DW Johnson and University of Washington1 Synchronization Part 2 CSE 410, Spring 2008 Computer.
Concurrency/synchronization using UML state models November 27th, 2007 Michigan State University.
Synchronization (Threads Accessing Shared Data). Contents I.The Bank Transfer Problem II.Doing a Simulation on the Bank Transfer Problem III.New Requirement:
CSCD 330 Network Programming
Multithreading / Concurrency
CSE 120 Principles of Operating
Classical Synchronization Problems
Concurrency/synchronization using UML state models
Critical sections, locking, monitors, etc.
Monitors, Condition Variables, and Readers-Writers
CSCI 511 Operating Systems Chapter 5 (Part C) Monitor
Introduction to Operating Systems
Thread Synchronization
CS703 - Advanced Operating Systems
Pthread Prof. Ikjun Yeom TA – Mugyo
Monitor Giving credit where it is due:
CSE 451: Operating Systems Autumn 2003 Lecture 7 Synchronization
CSE 451: Operating Systems Autumn 2005 Lecture 7 Synchronization
SE350: Operating Systems Lecture 5: Deadlock.
CSE 451: Operating Systems Winter 2003 Lecture 7 Synchronization
CSE 153 Design of Operating Systems Winter 19
CSE 153 Design of Operating Systems Winter 2019
CSCD 330 Network Programming
CSE 451 Section 1/27/2000.
CSE 332: Concurrency and Locks
Don Porter Portions courtesy Emmett Witchel
Presentation transcript:

Concurrency/synchronization using UML state models and sequence models: A brief review April 21 st, 2008 Michigan State University

Simple monitor-process pattern Idle [guard] / accept-call ( op(parms) ) / reply (op, result ) Monitor process Operation body

Bounded Buffer Example / reply ( pull, rv ) BoundedBuffer Idle [queue_.size != 0] / accept-call ( pull ) Pulling do/ rv := queue_.pull Pushing do/ queue_.push(x) / reply ( push ) [queue_.size != MAX] / accept-call ( push(x) )

Example: Code for Buffer::push void Buffer::push(int x) { lock_.acquire(); while (queue_.size() == MAX) { full_.wait(); } queue_.push(x); empty_.signal(); lock_.release(); } Idle [queue_.size() != MAX] / accept-call (push(x)) Pushing do/ queue_.push(x) / reply (push)

Example: Code for Buffer::push void Buffer::push(int x) { lock_.acquire(); while (queue_.size() == MAX) { full_.wait(); } queue_.push(x); empty_.signal(); lock_.release(); } Idle [queue_.size() != MAX] / accept-call (push(x)) Pushing do/ queue_.push(x) / reply (push)

Example: Code for Buffer::push void Buffer::push(int x) { lock_.acquire(); while (queue_.size() == MAX) { full_.wait(); } queue_.push(x); empty_.signal(); lock_.release(); } Idle [queue_.size() != MAX] / accept-call (push(x)) Pushing do/ queue_.push(x) / reply (push)

Example: Code for Buffer::push void Buffer::push(int x) { lock_.acquire(); while (queue_.size() == MAX) { full_.wait(); } queue_.push(x); empty_.signal(); lock_.release(); } Idle [queue_.size() != MAX] / accept-call (push(x)) Pushing do/ queue_.push(x) / reply (push)

Example: Code for Buffer::pull int Buffer::pull() { lock_.acquire(); while (queue_.size() == 0) { empty_.wait(); } int rv = queue_.pull(); full_.signal(); lock_.release(); return rv; } Idle [queue_.size() != 0] / accept-call (pull) Pushing do/ rv := queue_.pull() / reply (pull, rv)

More complex guard conditions Consider a banking application that allows multiple clients to deposit and withdraw funds from shared accounts Goals: Protect against data races, so that money is not accidentally created or destroyed Prevent overdrafts by making withdraw requests block if account has insufficient funds Question: How should we model the behavior of an account object?

Monitor-process model of BankAccount / reply ( deposit ) BankAccount Idle / accept-call ( deposit(amount) ) Depositing do/ balance_ += amount; Withdrawing do/ balance_ -= amount; / reply ( withdraw ) [ amount <= balance_ ] / accept-call ( withdraw(amount) )

Code for BankAccount::withdraw void BankAccount::withdraw(int amount) { lock_.acquire(); while (amount > balance_) { okToWithdraw_.wait(); } balance_ -= amount; lock_.release(); } Idle [amount <= balance_] / accept-call (withdraw(amount)) Withdrawing do/ balance_ -= amount; / reply (withdraw)

Code for BankAccount::deposit void BankAccount::deposit(int amount) { lock_.acquire(); balance_ += amount; okToWithdraw_.broadcast(); lock_.release(); } Idle / accept-call (deposit(amount)) Depositing do/ balance_ += amount; / reply (deposit)

Signal vs. Broadcast When one thread changes the value of a condition upon which others might be waiting, the modifier is obliged to notify these waiting threads Always safest, though perhaps not very efficient, to use broadcast to notify waiting threads after a change Question: When is it safe to use signal?

“Mixed” Monitor objects Some methods on a monitor class may be “non-monitor methods” Do not acquire / release mutex lock Multiple threads may access simultaneously Threads may access non-monitor methods while 1 thread in a monitor method 1 thread may enter monitor method while other threads in non-monitor method