Programmazione di sistemi multicore
|
|
- Georgina Sullivan
- 5 years ago
- Views:
Transcription
1 Programmazione di sistemi multicore A.A LECTURE 14 IRENE FINOCCHI
2 Programming with locks and critical sections MORE BAD INTERLEAVINGS GUIDELINES FOR USING LOCKS CORRECTLY COARSE-GRAINED VS FINE-GRAINED LOCKING DEADLOCK
3 Recap: 3 choices For every memory location (e.g., object field) in your program, you must obey at least one of the following: 1. Thread-local: do not use the location in > 1 thread 2. Immutable: do not write to the memory location 2 3. Synchronized: use synchronization to control access to the location need synchronization all memory thread-local memory immutable memory
4 Synchronized memory... 3 After maximizing the amount of memory that is (1) threadlocal and (2) immutable, we need guidelines for how to use locks to keep other (mutable shared) data consistent Guideline #0: no data races Never allow two threads to read/write or write/write the same location at the same time Necessary: in Java or C, a program with a data race is almost always wrong Not sufficient: our top example had no data races (but was wrong due to bad interleavings)
5 Consistent locking 4 Guideline #1: for each location needing synchronization, have a lock that is always held when reading or writing the location We say the lock guards the location The same lock can (and often should) guard multiple locations Clearly document the guard for each location In Java, often the guard is the object containing the location this inside the object s methods But also often guard a larger structure with one lock to ensure mutual exclusion on the structure
6 Consistent locking continued Mapping from locations to guarding locks is conceptual Up to you as the programmer to follow it 5 Partitions shared-and-mutable locations into which lock Consistent locking is: Not sufficient: prevents all data races, but still allows bad interleavings Our top example used consistent locking Not necessary: can change locking protocol dynamically
7 Beyond consistent locking 6 Consistent locking is an excellent guideline A default assumption about program design But it isn t required for correctness: can have different program phases use different invariants Provided all threads coordinate moving to the next phase Example A shared grid being updated, so use a lock for each entry But after the grid is filled out, all threads except 1 terminate At that point synchronization no longer necessary
8 Lock granularity Coarse-grained: fewer locks, i.e., more objects per lock Example: One lock for entire data structure (e.g., array) Example: One lock for all bank accounts 7 Fine-grained: more locks, i.e., fewer objects per lock Example: One lock per data element (e.g., array index) Example: One lock per bank account Coarse-grained vs. fine-grained is really a continuum
9 Coarse-grained advantages Simpler to implement Trade-offs Faster/easier to implement operations that access multiple locations (because all guarded by the same lock) Much easier: operations that modify data-structure shape Fine-grained advantages More simultaneous access (performance when coarsegrained would lead to unnecessary blocking) 8 Guideline #2: start with coarse-grained (simpler) and move to fine-grained (performance) only if contention on the coarser locks becomes an issue. Alas, often leads to bugs
10 Example: separate chaining hashtable 9 Coarse-grained: one lock for entire hashtable Fine-grained: one lock for each bucket Which supports more concurrency for insert and lookup? Which makes implementing resize easier? How would you do it? Maintaining a numelements field for the table will destroy the benefits of using separate locks for each bucket Why?
11 Critical-section granularity A second, orthogonal granularity issue is critical-section size How much work to do while holding lock(s) If critical sections run for too long: Performance loss because other threads are blocked 10 If critical sections are too short: Bugs because you broke up something where other threads should not be able to see intermediate state Guideline #3: don t do expensive computations or I/O in critical sections, but also don t introduce race conditions
12 Example 11 Suppose we want to change the value for a key in a hashtable without removing it from the table Assume lock guards the whole table Papa Bear s critical section is too long: table locked during expensive call synchronized(lock) { v1 = table.lookup(k); v2 = expensive(v1); table.remove(k); table.insert(k,v2); }
13 Example 12 Suppose we want to change the value for a key in a hashtable without removing it from the table Assume lock guards the whole table Mama Bear s critical section is too short: if another thread updates the entry, we will lose an update synchronized(lock) { v1 = table.lookup(k); } v2 = expensive(v1); synchronized(lock) { table.remove(k); table.insert(k,v2); }
14 Example 13 Baby Bear s critical section is just right: if another update occurred, try our update again done = false; while(!done) { synchronized(lock) { v1 = table.lookup(k); } v2 = expensive(v1); synchronized(lock) { if(table.lookup(k)==v1) { done = true; table.remove(k); table.insert(k,v2); } } }
15 A good bet, but If concurrent updates are rare, then good performance bet, while still correct in all cases Important caveat: does not ensure the table entry for key k was unmodified during the call to expensive There could have been any number of concurrent updates, removals, insertions, etc. with this key All we know is that when the second critical section executes, the key k has value v1. Maybe it was unchanged or maybe it was Assumed it did not matter, but may not be the case Values changed and then changed back: A-B-A problem
16 Atomicity An operation is atomic if no other thread can see it partly executed Atomic as in appears indivisible 15 Typically want ADT operations atomic, even to other threads running operations on the same ADT Guideline #4: think in terms of what operations need to be atomic Make critical sections just long enough to preserve atomicity Then design the locking protocol to implement the critical sections correctly That is: think about atomicity first and locks second
17 Don t roll your own It is rare that you should write your own data structure Provided in standard libraries Point of these lectures is to understand the key trade-offs and abstractions Especially true for concurrent data structures 16 Far too difficult to provide fine-grained synchronization without race conditions Standard thread-safe libraries like ConcurrentHashMap written by world experts Guideline #5: use built-in libraries whenever they meet your needs
18 Synchronized memory: summing up Guideline #0: no data races Guideline #1: for each location needing synchronization, have a lock that is always held when reading or writing the location Guideline #2: start with coarse-grained (simpler) and move to fine-grained (performance) only if contention on the coarser locks becomes an issue. Alas, often leads to bugs Guideline #3: don t do expensive computations or I/O in critical sections, but also don t introduce race conditions 17 Guideline #4: think in terms of what operations need to be atomic Guideline #5: use built-in libraries whenever they meet your needs
19 Programming with locks and critical sections MORE BAD INTERLEAVINGS GUIDELINES FOR USING LOCKS CORRECTLY COARSE-GRAINED VS FINE-GRAINED LOCKING DEADLOCK
20 Motivating deadlock issues 19 Consider a method to transfer money between bank accounts class BankAccount { synchronized void withdraw(int amt) { } synchronized void deposit(int amt) { } synchronized void transferto(int amt, BankAccount a) { this.withdraw(amt); a.deposit(amt); } } Notice during call to a.deposit, thread holds two locks Need to investigate when this may be a problem
21 The deadlock 20 Suppose x and y are fields holding accounts Time Thread 1: x.transferto(1,y) acquire lock for x do withdraw from x block on lock for y Thread 2: y.transferto(1,x) acquire lock for y do withdraw from y block on lock for x
22 Deadlock, in general 21 A deadlock occurs when there are threads T 1,, T n such that: For i=1,..., n-1, T i is waiting for a resource held by T i+1 T n is waiting for a resource held by T 1 In other words, there is a cycle of waiting Can formalize as a graph of dependencies with cycles bad Deadlock avoidance in programming amounts to techniques to ensure a cycle can never arise
23 Back to our example Options for deadlock-proof transferto Make a smaller critical section: transferto not synchronized Okay wrt deadlock, but exposes wrong total amount in bank Exposes intermediate state after withdraw before deposit 2. Coarsen lock granularity: one lock for all accounts allowing transfers between them Works, but sacrifices concurrent deposits/withdrawals 3. Give every bank-account a unique number and always acquire locks in the same order Entire program should obey this order to avoid cycles Code acquiring only one lock can ignore the order
24 Ordering locks class BankAccount { private int acctnumber; // must be unique void transferto(int amt, BankAccount a) { if (this.acctnumber < a.acctnumber) synchronized(this) { synchronized(a) { this.withdraw(amt); a.deposit(amt); }} else synchronized(a) { synchronized(this) { this.withdraw(amt); a.deposit(amt); }} } } 23
25 Example from the Java Standard Library 24 appends string sb class StringBuffer { to this sequence private int count; private char[] value; synchronized append(stringbuffer sb) { int len = sb.length(); if(this.count + len > this.value.length) this.expand( ); sb.getchars(0,len,this.value,this.count); } synchronized getchars(int x, int, y, char[] dest, int z) { copy this.value[x..y] into dest starting at z } }
26 Two problems 25 Problem #1 Lock for sb is not held between calls to sb.length and sb.getchars So sb could get longer Would cause append to throw an ArrayBoundsException Problem #2 Potential deadlock if two threads try to append in opposite directions, just like in the bank-account transferto example
27 To fix or not to fix? 26 Not easy to fix both problems without extra copying: Do not want unique ids on every StringBuffer Do not want one lock for all StringBuffer objects Actual Java library: fixed neither! Left code as is; just changed javadoc! Actual code subject to race conditions because the only way to avoid it would be to create a possible deadlock Up to clients to avoid such situations with their own locking protocols (guarantee that sb is never changed)
28 Perspective Code like account-transfer and string-buffer append are difficult to deal with for deadlock Easier case: different types of objects Can document a fixed order among types Example: When moving an item from the hashtable to a work queue, never try to acquire the queue lock while holding the hashtable lock Easier case: objects are in an acyclic structure Can use the data structure itself to determine a fixed order 27 Example: If holding a tree node s lock, do not acquire other tree nodes locks unless they are children in the tree
29 Sources & credits 28 A Sophomoric Introduction to Shared-Memory Parallelism and Concurrency, Dan Grossman spac/#reading
CSE 332: Data Structures & Parallelism Lecture 18: Race Conditions & Deadlock. Ruth Anderson Autumn 2017
CSE 332: Data Structures & Parallelism Lecture 18: Race Conditions & Deadlock Ruth Anderson Autumn 2017 Outline Done: The semantics of locks Locks in Java Using locks for mutual exclusion: bank-account
More informationCSE 332: Locks and Deadlocks. Richard Anderson, Steve Seitz Winter 2014
CSE 332: Locks and Deadlocks Richard Anderson, Steve Seitz Winter 2014 1 Recall Bank Account Problem class BankAccount { private int balance = 0; synchronized int getbalance() { return balance; } synchronized
More informationCSE332: Data Abstractions Lecture 25: Deadlocks and Additional Concurrency Issues. Tyler Robison Summer 2010
CSE332: Data Abstractions Lecture 25: Deadlocks and Additional Concurrency Issues Tyler Robison Summer 2010 1 Where we are We ve covered basic concurrency, then some odds and ends: Readers/writer locks
More informationA Sophomoric Introduction to Shared-Memory Parallelism and Concurrency Lecture 5 Programming with Locks and Critical Sections
A Sophomoric Introduction to Shared-Memory Parallelism and Concurrency Lecture 5 Programming with Locks and Critical Sections Dan Grossman Last Updated: May 2012 For more information, see http://www.cs.washington.edu/homes/djg/teachingmaterials/
More informationCSE332: Data Abstractions Lecture 23: Programming with Locks and Critical Sections. Tyler Robison Summer 2010
CSE332: Data Abstractions Lecture 23: Programming with Locks and Critical Sections Tyler Robison Summer 2010 1 Concurrency: where are we Done: The semantics of locks Locks in Java Using locks for mutual
More informationThread-Local. Lecture 27: Concurrency 3. Dealing with the Rest. Immutable. Whenever possible, don t share resources
Thread-Local Lecture 27: Concurrency 3 CS 62 Fall 2016 Kim Bruce & Peter Mawhorter Some slides based on those from Dan Grossman, U. of Washington Whenever possible, don t share resources Easier to have
More informationRaces. Example. A race condi-on occurs when the computa-on result depends on scheduling (how threads are interleaved)
Races A race condi-on occurs when the computa-on result depends on scheduling (how threads are interleaved) Bugs that exist only due to concurrency o No interleaved scheduling with 1 thread Typically,
More informationCSE332: Data Abstractions Lecture 23: Data Races and Memory Reordering Deadlock Readers/Writer Locks Condition Variables. Dan Grossman Spring 2012
Lecture 23: Data Races and Memory Reordering Deadlock Readers/Writer Locks Condition Variables Dan Grossman Outline Done: Programming with locks and critical sections Key guidelines and trade-offs Now:
More information+ Today. Lecture 26: Concurrency 3/31/14. n Reading. n Objectives. n Announcements. n P&C Section 7. n Race conditions.
+ Lecture 26: Concurrency Slides adapted from Dan Grossman + Today n Reading n P&C Section 7 n Objectives n Race conditions n Announcements n Quiz on Friday 1 + This week s programming assignment n Answer
More informationTHE FINAL EXAM MORE ON RACE CONDITIONS. Specific Topics. The Final. Book, Calculator, and Notes
CSE 332 Data Abstractions: Data Races and Memory, Reordering, Deadlock, Readers/Writer Locks, and Condition Variables (oh my!) Kate Deibel Summer 2012 *ominous music* THE FINAL EXAM August 6, 2012 CSE
More informationCSE 332: Data Abstractions Lecture 22: Data Races and Memory Reordering Deadlock Readers/Writer Locks Condition Variables. Ruth Anderson Spring 2014
CSE 332: Data Abstractions Lecture 22: Data Races and Memory Reordering Deadlock Readers/Writer Locks Condition Variables Ruth Anderson Spring 2014 Outline Done: Programming with locks and critical sections
More informationCSE 332 Data Abstractions: Data Races and Memory, Reordering, Deadlock, Readers/Writer Locks, and Condition Variables (oh my!) Kate Deibel Summer 2012
CSE 332 Data Abstractions: Data Races and Memory, Reordering, Deadlock, Readers/Writer Locks, and Condition Variables (oh my!) Kate Deibel Summer 2012 August 6, 2012 CSE 332 Data Abstractions, Summer 2012
More informationProgrammazione di sistemi multicore
Programmazione di sistemi multicore A.A. 2015-2016 LECTURE 12 IRENE FINOCCHI http://wwwusers.di.uniroma1.it/~finocchi/ Shared-memory concurrency & mutual exclusion TASK PARALLELISM AND OVERLAPPING MEMORY
More informationThread-unsafe code. Synchronized blocks
Thread-unsafe code How can the following class be broken by mul6ple threads? 1 public class Counter { 2 private int c = 0; 3 4 public void increment() { int old = c; 5 6 c = old + 1; // c++; 7 8 public
More informationWhat is the problem?
Mo#va#ng memory-model issues Tricky and surprisingly wrong unsynchronized concurrent code class C { private int x = 0; private int y = 0; First understand why it looks like the asser#on cannot fail: void
More informationCSE332: Data Abstractions Lecture 19: Mutual Exclusion and Locking
CSE332: Data Abstractions Lecture 19: Mutual Exclusion and Locking James Fogarty Winter 2012 Including slides developed in part by Ruth Anderson, James Fogarty, Dan Grossman Banking Example This code is
More informationA Sophomoric Introduction to Shared-Memory Parallelism and Concurrency Lecture 4 Shared-Memory Concurrency & Mutual Exclusion
A Sophomoric Introduction to Shared-Memory Parallelism and Concurrency Lecture 4 Shared-Memory Concurrency & Mutual Exclusion Dan Grossman Last Updated: August 2010 For more information, see http://www.cs.washington.edu/homes/djg/teachingmaterials/
More information3/25/14. Lecture 25: Concurrency. + Today. n Reading. n P&C Section 6. n Objectives. n Concurrency
+ Lecture 25: Concurrency + Today n Reading n P&C Section 6 n Objectives n Concurrency 1 + Concurrency n Correctly and efficiently controlling access by multiple threads to shared resources n Programming
More informationCS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers
CS 2112 Lecture 20 Synchronization 5 April 2012 Lecturer: Andrew Myers 1 Critical sections and atomicity We have been seeing that sharing mutable objects between different threads is tricky We need some
More informationCSE 332: Data Structures & Parallelism Lecture 17: Shared-Memory Concurrency & Mutual Exclusion. Ruth Anderson Winter 2019
CSE 332: Data Structures & Parallelism Lecture 17: Shared-Memory Concurrency & Mutual Exclusion Ruth Anderson Winter 2019 Toward sharing resources (memory) So far, we have been studying parallel algorithms
More informationProgram Graph. Lecture 25: Parallelism & Concurrency. Performance. What does it mean?
Program Graph Lecture 25: Parallelism & Concurrency CS 62 Fall 2015 Kim Bruce & Michael Bannister Some slides based on those from Dan Grossman, U. of Washington Program using fork and join can be seen
More informationCSE332: Data Abstractions Lecture 22: Shared-Memory Concurrency and Mutual Exclusion. Tyler Robison Summer 2010
CSE332: Data Abstractions Lecture 22: Shared-Memory Concurrency and Mutual Exclusion Tyler Robison Summer 2010 1 Toward sharing resources (memory) So far we ve looked at parallel algorithms using fork-join
More informationCSE 374 Programming Concepts & Tools
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 22 Shared-Memory Concurrency 1 Administrivia HW7 due Thursday night, 11 pm (+ late days if you still have any & want to use them) Course
More informationLab. Lecture 26: Concurrency & Responsiveness. Assignment. Maze Program
Lab Lecture 26: Concurrency & Responsiveness CS 62 Fall 2016 Kim Bruce & Peter Mawhorter Using parallelism to speed up sorting using Threads and ForkJoinFramework Review relevant material. Some slides
More informationNeed for synchronization: If threads comprise parts of our software systems, then they must communicate.
Thread communication and synchronization There are two main aspects to Outline for Lecture 19 multithreaded programming in Java: I. Thread synchronization. thread lifecycle, and thread synchronization.
More informationConcurrency and Parallelism. CS152: Programming Languages. Lecture 19 Shared-Memory Parallelism and Concurrency. Concurrency vs. Parallelism.
CS152: Programming Languages Lecture 19 Shared-Memory Parallelism and Concurrency Dan Grossman Spring 2011 Concurrency and Parallelism PL support for concurrency/parallelism a huge topic Increasingly important
More informationCS152: Programming Languages. Lecture 19 Shared-Memory Parallelism and Concurrency. Dan Grossman Spring 2011
CS152: Programming Languages Lecture 19 Shared-Memory Parallelism and Concurrency Dan Grossman Spring 2011 Concurrency and Parallelism PL support for concurrency/parallelism a huge topic Increasingly important
More informationRuntime Atomicity Analysis of Multi-threaded Programs
Runtime Atomicity Analysis of Multi-threaded Programs Focus is on the paper: Atomizer: A Dynamic Atomicity Checker for Multithreaded Programs by C. Flanagan and S. Freund presented by Sebastian Burckhardt
More informationSynchronization in Java
Synchronization in Java Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park Synchronization Overview Unsufficient atomicity Data races Locks Deadlock Wait /
More informationThe Why, What, and How of Software Transactions for More Reliable Concurrency
The Why, What, and How of Software Transactions for More Reliable Concurrency Dan Grossman University of Washington 8 September 2006 Atomic An easier-to-use and harder-to-implement primitive void deposit(int
More informationSharing is the Key. Lecture 25: Parallelism. Canonical Example. Bad Interleavings. Common to have: CS 62 Fall 2016 Kim Bruce & Peter Mawhorter
Sharing is the Key Lecture 25: Parallelism CS 62 Fall 2016 Kim Bruce & Peter Mawhorter Some slides based on those from Dan Grossman, U. of Washington Common to have: Different threads access the same resources
More informationCS-XXX: Graduate Programming Languages. Lecture 20 Shared-Memory Parallelism and Concurrency. Dan Grossman 2012
CS-XXX: Graduate Programming Languages Lecture 20 Shared-Memory Parallelism and Concurrency Dan Grossman 2012 Concurrency and Parallelism PL support for concurrency/parallelism a huge topic Increasingly
More informationProcessor speed. Concurrency Structure and Interpretation of Computer Programs. Multiple processors. Processor speed. Mike Phillips <mpp>
Processor speed 6.037 - Structure and Interpretation of Computer Programs Mike Phillips Massachusetts Institute of Technology http://en.wikipedia.org/wiki/file:transistor_count_and_moore%27s_law_-
More informationIntroduction to Locks. Intrinsic Locks
CMSC 433 Programming Language Technologies and Paradigms Spring 2013 Introduction to Locks Intrinsic Locks Atomic-looking operations Resources created for sequential code make certain assumptions, a large
More informationMonitors; Software Transactional Memory
Monitors; Software Transactional Memory Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico October 18, 2012 CPD (DEI / IST) Parallel and
More informationParallel & Concurrent Programming
Program Parallel & Concurrent Programming CSCI 334 Stephen Freund Memory Count Words A.html Count cow: cow:28 moo: moo:3 the: the:35 wombat: wombat:16 purple: purple:3
More informationCS 31: Introduction to Computer Systems : Threads & Synchronization April 16-18, 2019
CS 31: Introduction to Computer Systems 22-23: Threads & Synchronization April 16-18, 2019 Making Programs Run Faster We all like how fast computers are In the old days (1980 s - 2005): Algorithm too slow?
More informationL13: Synchronization
6.005 Software Construction Fall 2011 Prof. Rob Miller Today o Making a datatype threadsafe o Locks o Monitor pattern o Deadlock o Locking disciplines Required reading (from the Java Tutorial) Synchronization
More informationTopics in Parallel and Distributed Computing: Introducing Concurrency in Undergraduate Courses 1,2
Topics in Parallel and Distributed Computing: Introducing Concurrency in Undergraduate Courses 1,2 Chapter 8 Shared-Memory Concurrency Control with a Data-Structures Focus Dan Grossman University of Washington
More informationSSC - Concurrency and Multi-threading Java multithreading programming - Synchronisation (II)
SSC - Concurrency and Multi-threading Java multithreading programming - Synchronisation (II) Shan He School for Computational Science University of Birmingham Module 06-19321: SSC Outline Outline of Topics
More informationCMSC 132: Object-Oriented Programming II
CMSC 132: Object-Oriented Programming II Synchronization in Java Department of Computer Science University of Maryland, College Park Multithreading Overview Motivation & background Threads Creating Java
More informationAtomicity via Source-to-Source Translation
Atomicity via Source-to-Source Translation Benjamin Hindman Dan Grossman University of Washington 22 October 2006 Atomic An easier-to-use and harder-to-implement primitive void deposit(int x){ synchronized(this){
More informationThread Safety. Review. Today o Confinement o Threadsafe datatypes Required reading. Concurrency Wrapper Collections
Thread Safety Today o Confinement o Threadsafe datatypes Required reading Concurrency Wrapper Collections Optional reading The material in this lecture and the next lecture is inspired by an excellent
More informationConcurrent Objects and Linearizability
Chapter 3 Concurrent Objects and Linearizability 3.1 Specifying Objects An object in languages such as Java and C++ is a container for data. Each object provides a set of methods that are the only way
More informationReminder from last time
Concurrent systems Lecture 5: Concurrency without shared data, composite operations and transactions, and serialisability DrRobert N. M. Watson 1 Reminder from last time Liveness properties Deadlock (requirements;
More informationSynchronising Threads
Synchronising Threads David Chisnall March 1, 2011 First Rule for Maintainable Concurrent Code No data may be both mutable and aliased Harder Problems Data is shared and mutable Access to it must be protected
More informationCSE 153 Design of Operating Systems
CSE 153 Design of Operating Systems Winter 19 Lecture 7/8: Synchronization (1) Administrivia How is Lab going? Be prepared with questions for this weeks Lab My impression from TAs is that you are on track
More informationLinked Lists: The Role of Locking. Erez Petrank Technion
Linked Lists: The Role of Locking Erez Petrank Technion Why Data Structures? Concurrent Data Structures are building blocks Used as libraries Construction principles apply broadly This Lecture Designing
More informationOperating Systems. Lecture 4 - Concurrency and Synchronization. Master of Computer Science PUF - Hồ Chí Minh 2016/2017
Operating Systems Lecture 4 - Concurrency and Synchronization Adrien Krähenbühl Master of Computer Science PUF - Hồ Chí Minh 2016/2017 Mutual exclusion Hardware solutions Semaphores IPC: Message passing
More informationParallel Code Smells: A Top 10 List
Parallel Code Smells: A Top 10 List Luc Bläser Hochschule für Technik Rapperswil Multicore@Siemens 8 Feb. 2017, Nuremberg Code Smells Symptoms in code Indicators of potential design flaws Partly curable
More informationMonitors; Software Transactional Memory
Monitors; Software Transactional Memory Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico March 17, 2016 CPD (DEI / IST) Parallel and Distributed
More informationAtomicity for Reliable Concurrent Software. Race Conditions. Motivations for Atomicity. Race Conditions. Race Conditions. 1. Beyond Race Conditions
Towards Reliable Multithreaded Software Atomicity for Reliable Concurrent Software Cormac Flanagan UC Santa Cruz Joint work with Stephen Freund Shaz Qadeer Microsoft Research 1 Multithreaded software increasingly
More informationCMSC 433 Section 0101 Fall 2012 Midterm Exam #1
Name: CMSC 433 Section 0101 Fall 2012 Midterm Exam #1 Directions: Test is closed book, closed notes. Answer every question; write solutions in spaces provided. Use backs of pages for scratch work. Good
More informationThe New Java Technology Memory Model
The New Java Technology Memory Model java.sun.com/javaone/sf Jeremy Manson and William Pugh http://www.cs.umd.edu/~pugh 1 Audience Assume you are familiar with basics of Java technology-based threads (
More information[module 2.2] MODELING CONCURRENT PROGRAM EXECUTION
v1.0 20130407 Programmazione Avanzata e Paradigmi Ingegneria e Scienze Informatiche - UNIBO a.a 2013/2014 Lecturer: Alessandro Ricci [module 2.2] MODELING CONCURRENT PROGRAM EXECUTION 1 SUMMARY Making
More informationRACE CONDITIONS AND SYNCHRONIZATION
RACE CONDITIONS AND SYNCHRONIZATION Lecture 21 CS2110 Fall 2010 Reminder 2 A race condition arises if two threads try and share some data One updates it and the other reads it, or both update the data
More informationMidterm #1. CMSC 433: Programming Language Technologies and Paradigms. October 14, 2013
Midterm #1 CMSC 433: Programming Language Technologies and Paradigms October 14, 2013 Name Instructions Do not start until told to do so! This exam has 10 double-sided pages (including this one); make
More informationSynchronization. CS61, Lecture 18. Prof. Stephen Chong November 3, 2011
Synchronization CS61, Lecture 18 Prof. Stephen Chong November 3, 2011 Announcements Assignment 5 Tell us your group by Sunday Nov 6 Due Thursday Nov 17 Talks of interest in next two days Towards Predictable,
More informationSharing Objects Ch. 3
Sharing Objects Ch. 3 Visibility What is the source of the issue? Volatile Dekker s algorithm Publication and Escape Thread Confinement Immutability Techniques of safe publication Assignment 1 Visibility
More informationW4118: concurrency error. Instructor: Junfeng Yang
W4118: concurrency error Instructor: Junfeng Yang Goals Identify patterns of concurrency errors (so you can avoid them in your code) Learn techniques to detect concurrency errors (so you can apply these
More informationSynchronization. Announcements. Concurrent Programs. Race Conditions. Race Conditions 11/9/17. Purpose of this lecture. A8 released today, Due: 11/21
Announcements Synchronization A8 released today, Due: 11/21 Late deadline is after Thanksgiving You can use your A6/A7 solutions or ours A7 correctness scores have been posted Next week's recitation will
More informationConcurrency Control. Synchronization. Brief Preview of Scheduling. Motivating Example. Motivating Example (Cont d) Interleaved Schedules
Brief Preview of Scheduling Concurrency Control Nan Niu (nn@cs.toronto.edu) CSC309 -- Summer 2008 Multiple threads ready to run Some mechanism for switching between them Context switches Some policy for
More informationSafety SPL/2010 SPL/20 1
Safety 1 system designing for concurrent execution environments system: collection of objects and their interactions system properties: Safety - nothing bad ever happens Liveness - anything ever happens
More informationHigh-Level Small-Step Operational Semantics for Software Transactions
High-Level Small-Step Operational Semantics for Software Transactions Katherine F. Moore Dan Grossman The University of Washington Motivating Our Approach Operational Semantics Model key programming-language
More informationIntroducing Shared-Memory Concurrency
Race Conditions and Atomic Blocks November 19, 2007 Why use concurrency? Communicating between threads Concurrency in Java/C Concurrency Computation where multiple things happen at the same time is inherently
More information10/17/ Gribble, Lazowska, Levy, Zahorjan 2. 10/17/ Gribble, Lazowska, Levy, Zahorjan 4
Temporal relations CSE 451: Operating Systems Autumn 2010 Module 7 Synchronization Instructions executed by a single thread are totally ordered A < B < C < Absent synchronization, instructions executed
More informationConcurrency Control. Transaction Management. Lost Update Problem. Need for Concurrency Control. Concurrency control
Concurrency Control Process of managing simultaneous operations on the database without having them interfere with one another. Transaction Management Concurrency control Connolly & Begg. Chapter 19. Third
More information! Why is synchronization needed? ! Synchronization Language/Definitions: ! How are locks implemented? Maria Hybinette, UGA
Chapter 6: Process [& Thread] Synchronization CSCI [4 6] 730 Operating Systems Synchronization Part 1 : The Basics! Why is synchronization needed?! Synchronization Language/Definitions:» What are race
More informationDATABASE TRANSACTIONS. CS121: Relational Databases Fall 2017 Lecture 25
DATABASE TRANSACTIONS CS121: Relational Databases Fall 2017 Lecture 25 Database Transactions 2 Many situations where a sequence of database operations must be treated as a single unit A combination of
More informationGoldibear and the 3 Locks. Programming With Locks Is Tricky. More Lock Madness. And To Make It Worse. Transactional Memory: The Big Idea
Programming With Locks s Tricky Multicore processors are the way of the foreseeable future thread-level parallelism anointed as parallelism model of choice Just one problem Writing lock-based multi-threaded
More informationSynchronization via Transactions
Synchronization via Transactions 1 Concurrency Quiz If two threads execute this program concurrently, how many different final values of X are there? Initially, X == 0. Thread 1 Thread 2 void increment()
More informationThreads Questions Important Questions
Threads Questions Important Questions https://dzone.com/articles/threads-top-80-interview https://www.journaldev.com/1162/java-multithreading-concurrency-interviewquestions-answers https://www.javatpoint.com/java-multithreading-interview-questions
More informationDealing with Issues for Interprocess Communication
Dealing with Issues for Interprocess Communication Ref Section 2.3 Tanenbaum 7.1 Overview Processes frequently need to communicate with other processes. In a shell pipe the o/p of one process is passed
More informationPage 1. Challenges" Concurrency" CS162 Operating Systems and Systems Programming Lecture 4. Synchronization, Atomic operations, Locks"
CS162 Operating Systems and Systems Programming Lecture 4 Synchronization, Atomic operations, Locks" January 30, 2012 Anthony D Joseph and Ion Stoica http://insteecsberkeleyedu/~cs162 Space Shuttle Example"
More informationSynchronization Lecture 23 Fall 2017
Synchronization Lecture 23 Fall 2017 Announcements A8 released today, Due: 11/21 Late deadline is after Thanksgiving You can use your A6/A7 solutions or ours A7 correctness scores have been posted Next
More informationCOMP 322: Fundamentals of Parallel Programming
COMP 322: Fundamentals of Parallel Programming https://wiki.rice.edu/confluence/display/parprog/comp322 Lecture 30: Advanced locking in Java Vivek Sarkar Department of Computer Science Rice University
More informationJosh Bloch Charlie Garrod Darya Melicher
Principles of Software Construction: Objects, Design, and Concurrency Concurrency part 2 Synchronization, communication, and liveness Josh Bloch Charlie Garrod Darya Melicher 1 Administrivia Reading due
More informationCMSC 330: Organization of Programming Languages. Threads Classic Concurrency Problems
: Organization of Programming Languages Threads Classic Concurrency Problems The Dining Philosophers Problem Philosophers either eat or think They must have two forks to eat Can only use forks on either
More informationMore Shared Memory Programming
More Shared Memory Programming Shared data structures We want to make data structures that can be shared by threads. For example, our program to copy a file from one disk to another used a shared FIFO
More informationC. Flanagan Dynamic Analysis for Atomicity 1
1 Atomicity The method inc() is atomic if concurrent threads do not interfere with its behavior Guarantees that for every execution acq(this) x t=i y i=t+1 z rel(this) acq(this) x y t=i i=t+1 z rel(this)
More informationOperating Systems. Synchronization
Operating Systems Fall 2014 Synchronization Myungjin Lee myungjin.lee@ed.ac.uk 1 Temporal relations Instructions executed by a single thread are totally ordered A < B < C < Absent synchronization, instructions
More informationThe Dining Philosophers Problem CMSC 330: Organization of Programming Languages
The Dining Philosophers Problem CMSC 0: Organization of Programming Languages Threads Classic Concurrency Problems Philosophers either eat or think They must have two forks to eat Can only use forks on
More informationTransaction Management: Introduction (Chap. 16)
Transaction Management: Introduction (Chap. 16) CS634 Class 14 Slides based on Database Management Systems 3 rd ed, Ramakrishnan and Gehrke What are Transactions? So far, we looked at individual queries;
More informationStatic Lock Capabilities for Deadlock-Freedom
Static Lock Capabilities for Deadlock-Freedom Colin S. Gordon csgordon@cs.washington.edu University of Washington TLDI, January 28, 2012 Joint work with Michael D. Ernst and Dan Grossman Colin S. Gordon
More informationCS5460: Operating Systems
CS5460: Operating Systems Lecture 9: Implementing Synchronization (Chapter 6) Multiprocessor Memory Models Uniprocessor memory is simple Every load from a location retrieves the last value stored to that
More informationCMSC 330: Organization of Programming Languages. The Dining Philosophers Problem
CMSC 330: Organization of Programming Languages Threads Classic Concurrency Problems The Dining Philosophers Problem Philosophers either eat or think They must have two forks to eat Can only use forks
More informationCSE 451: Operating Systems Winter Lecture 7 Synchronization. Steve Gribble. Synchronization. Threads cooperate in multithreaded programs
CSE 451: Operating Systems Winter 2005 Lecture 7 Synchronization Steve Gribble Synchronization Threads cooperate in multithreaded programs to share resources, access shared data structures e.g., threads
More informationCSE 332 Winter 2018 Final Exam (closed book, closed notes, no calculators)
Name: Sample Solution Email address (UWNetID): CSE 332 Winter 2018 Final Exam (closed book, closed notes, no calculators) Instructions: Read the directions for each question carefully before answering.
More informationConcurrency & Parallelism. Threads, Concurrency, and Parallelism. Multicore Processors 11/7/17
Concurrency & Parallelism So far, our programs have been sequential: they do one thing after another, one thing at a. Let s start writing programs that do more than one thing at at a. Threads, Concurrency,
More informationMutating Object State and Implementing Equality
Mutating Object State and Implementing Equality 6.1 Mutating Object State Goals Today we touch the void... (sounds creepy right... see the movie, or read the book, to understand how scary the void can
More informationThreads, Concurrency, and Parallelism
Threads, Concurrency, and Parallelism Lecture 24 CS2110 Spring 2017 Concurrency & Parallelism So far, our programs have been sequential: they do one thing after another, one thing at a time. Let s start
More informationCSL373: Lecture 5 Deadlocks (no process runnable) + Scheduling (> 1 process runnable)
CSL373: Lecture 5 Deadlocks (no process runnable) + Scheduling (> 1 process runnable) Past & Present Have looked at two constraints: Mutual exclusion constraint between two events is a requirement that
More informationCSE 230. Concurrency: STM. Slides due to: Kathleen Fisher, Simon Peyton Jones, Satnam Singh, Don Stewart
CSE 230 Concurrency: STM Slides due to: Kathleen Fisher, Simon Peyton Jones, Satnam Singh, Don Stewart The Grand Challenge How to properly use multi-cores? Need new programming models! Parallelism vs Concurrency
More informationConcurrency in Object Oriented Programs 1. Object-Oriented Software Development COMP4001 CSE UNSW Sydney Lecturer: John Potter
Concurrency in Object Oriented Programs 1 Object-Oriented Software Development COMP4001 CSE UNSW Sydney Lecturer: John Potter Outline Concurrency: the Future of Computing Java Concurrency Thread Safety
More informationSynchronization I. Jo, Heeseung
Synchronization I Jo, Heeseung Today's Topics Synchronization problem Locks 2 Synchronization Threads cooperate in multithreaded programs To share resources, access shared data structures Also, to coordinate
More informationCSE 153 Design of Operating Systems
CSE 153 Design of Operating Systems Winter 2018 Lecture 10: Monitors Monitors A monitor is a programming language construct that controls access to shared data Synchronization code added by compiler, enforced
More informationCMSC 433 Programming Language Technologies and Paradigms. Composing Objects
CMSC 433 Programming Language Technologies and Paradigms Composing Objects Composing Objects To build systems we often need to Create thread safe objects Compose them in ways that meet requirements while
More informationThe University of Texas at Arlington
The University of Texas at Arlington Lecture 10: Threading and Parallel Programming Constraints CSE 5343/4342 Embedded d Systems II Objectives: Lab 3: Windows Threads (win32 threading API) Convert serial
More informationPage 1. Recap: ATM Bank Server" Recap: Challenge of Threads"
Recap: ATM Bank Server" CS162 Operating Systems and Systems Programming Lecture 4 Synchronization, Atomic operations, Locks" February 4, 2013 Anthony D Joseph http://insteecsberkeleyedu/~cs162 ATM server
More informationAdvanced Threads & Monitor-Style Programming 1/24
Advanced Threads & Monitor-Style Programming 1/24 First: Much of What You Know About Threads Is Wrong! // Initially x == 0 and y == 0 // Thread 1 Thread 2 x = 1; if (y == 1 && x == 0) exit(); y = 1; Can
More information