OPERATING SYSTEMS PROCESS SYNCHRONIZATION
|
|
|
- Millicent Phelps
- 9 years ago
- Views:
Transcription
1 OPERATING SYSTEMS PROCESS Jerry Breecher 6: Process Synchronization 1
2 OPERATING SYSTEM Synchronization What Is In This Chapter? This is about getting processes to coordinate with each other. How do processes work with resources that must be shared between them? How do we go about acquiring locks to protect regions of memory? How is synchronization really used? 6: Process Synchronization 2
3 OPERATING SYSTEM Synchronization Topics Covered Background The Critical-Section Problem Peterson s Solution Synchronization Hardware Semaphores Classic Problems of Synchronization Synchronization Examples Atomic Transactions 6: Process Synchronization 3
4 The Producer Consumer Problem A producer process "produces" information "consumed" by a consumer process. Here are the variables needed to define the problem: #define BUFFER_SIZE 10 typedef struct { DATA data; } item; item buffer[buffer_size]; int in = 0; // Location of next input to buffer int out = 0; // Location of next removal from buffer int counter = 0; // Number of buffers currently full Consider the code segments on the next page: Does it work? Are all buffers utilized? 6: Process Synchronization 4
5 A producer process "produces" information "consumed" by a consumer process. item nextproduced; while (TRUE) { } producer while (counter == BUFFER_SIZE); buffer[in] = nextproduced; in = (in + 1) % BUFFER_SIZE; counter++; PRODUCER consumer The Producer Consumer Problem #define BUFFER_SIZE 10 typedef struct { DATA data; } item; item buffer[buffer_size]; int in = 0; int out = 0; int counter = 0; item nextconsumed; CONSUMER while (TRUE) { while (counter == 0); nextconsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; } 6: Process Synchronization 5
6 The Producer Consumer Problem Note that counter++; this line is NOT what it seems!! is really --> register = counter register = register + 1 counter = register At a micro level, the following scenario could occur using this code: TO; Producer Execute register1 = counter register1 = 5 T1; Producer Execute register1 = register1 + 1 register1 = 6 T2; Consumer Execute register2 = counter register2 = 5 T3; Consumer Execute register2 = register2-1 register2 = 4 T4; Producer Execute counter = register1 counter = 6 T5; Consumer Execute counter = register2 counter = 4 6: Process Synchronization 6
7 Critical Sections A section of code, common to n cooperating processes, in which the processes may be accessing common variables. A Critical Section Environment contains: Entry Section Code requesting entry into the critical section. Critical Section Code in which only one process can execute at any one time. Exit Section The end of the critical section, releasing or allowing others in. Remainder Section Rest of the code AFTER the critical section. 6: Process Synchronization 7
8 Critical Sections The critical section must ENFORCE ALL THREE of the following rules: Mutual Exclusion: No more than one process can execute in its critical section at one time. Progress: Bounded Wait: If no one is in the critical section and someone wants in, then those processes not in their remainder section must be able to decide in a finite time who should go in. All requesters must eventually be let into the critical section. 6: Process Synchronization 8
9 Two Processes Software Here s an example of a simple piece of code containing the components required in a critical section. do { while ( turn ^= i ); /* critical section */ turn = j; /* remainder section */ } while(true); Entry Section Critical Section Exit Section Remainder Section 6: Process Synchronization 9
10 Two Processes Software Here we try a succession of increasingly complicated solutions to the problem of creating valid entry sections. NOTE: In all examples, i is the current process, j the "other" process. In these examples, envision the same code running on two processors at the same time. TOGGLED ACCESS: do { while ( turn ^= i ); /* critical section */ turn = j; } while(true); /* remainder section */ Algorithm 1 Are the three Critical Section Requirements Met? 6: Process Synchronization 10
11 FLAG FOR EACH PROCESS GIVES STATE: Two Processes Software Each process maintains a flag indicating that it wants to get into the critical section. It checks the flag of the other process and doesn t enter the critical section if that other process wants to get in. Shared variables boolean flag[2]; initially flag [0] = flag [1] = false. flag [i] = truep i ready to enter its critical section Algorithm 2 do { flag[i] := true; while (flag[j]) ; critical section flag [i] = false; remainder section } while (1); Are the three Critical Section Requirements Met? 6: Process Synchronization 11
12 FLAG TO REQUEST ENTRY: Each processes sets a flag to request entry. Then each process toggles a bit to allow the other in first. This code is executed for each process i. Shared variables boolean flag[2]; initially flag [0] = flag [1] = false. flag [i] = truep i ready to enter its critical section do { flag [i]:= true; turn = j; while (flag [j] and turn == j) ; critical section flag [i] = false; remainder section } while (1); Two Processes Software Algorithm 3 Are the three Critical Section Requirements Met? This is Peterson s Solution 6: Process Synchronization 12
13 Critical Sections The hardware required to support critical sections must have (minimally): Indivisible instructions (what are they?) Atomic load, store, test instruction. For instance, if a store and test occur simultaneously, the test gets EITHER the old or the new, but not some combination. Two atomic instructions, if executed simultaneously, behave as if executed sequentially. 6: Process Synchronization 13
14 Hardware Solutions Disabling Interrupts: Works for the Uni Processor case only. WHY? Atomic test and set: Returns parameter and sets parameter to true atomically. while ( test_and_set ( lock ) ); /* critical section */ lock = false; Example of Assembler code: GET_LOCK: IF_CLEAR_THEN_SET_BIT_AND_SKIP <bit_address> BRANCH GET_LOCK /* set failed */ /* set succeeded */ Must be careful if these approaches are to satisfy a bounded wait condition - must use round robin - requires code built around the lock instructions. 6: Process Synchronization 14
15 Hardware Solutions Boolean waiting[n]; int j; /* Takes on values from 0 to N - 1 */ Boolean key; do { waiting[i] = TRUE; key = TRUE; while( waiting[i] && key ) key = test_and_set( lock ); /* Spin lock */ waiting[ i ] = FALSE; /****** CRITICAL SECTION ********/ j = ( i + 1 ) mod N; while ( ( j!= i ) && (! waiting[ j ] ) ) j = ( j + 1 ) % N; if ( j == i ) Using Hardware lock = FALSE; Test_and_set. else waiting[ j ] = FALSE; /******* REMAINDER SECTION *******/ } while (TRUE); 6: Process Synchronization 15
16 Current Hardware Dilemmas We first need to define, for multiprocessors: caches, shared memory (for storage of lock variables), write through cache, write pipes. The last software solution we did ( the one we thought was correct ) may not work on a cached multiprocessor. Why? { Hint, is the write by one processor visible immediately to all other processors?} What changes must be made to the hardware for this program to work? 6: Process Synchronization 16
17 Does the sequence below work on a cached multiprocessor? Initially, location a contains A0 and location b contains B0. Current Hardware Dilemmas a) Processor 1 writes data A1 to location a. b) Processor 1 sets b to B1 indicating data at a is valid. c) Processor 2 waits for b to take on value B1 and loops until that change occurs. d) Processor 2 reads the value from a. What value is seen by Processor 2 when it reads a? How must hardware be specified to guarantee the value seen? a: A0 b: B0 6: Process Synchronization 17
18 Current Hardware Dilemmas We need to discuss: Write Ordering: The first write by a processor will be visible before the second write is visible. This requires a write through cache. Sequential Consistency: If Processor 1 writes to Location a "before" Processor 2 writes to Location b, then a is visible to ALL processors before b is. To do this requires NOT caching shared data. The software solutions discussed earlier should be avoided since they require write ordering and/or sequential consistency. 6: Process Synchronization 18
19 Current Hardware Dilemmas Hardware test and set on a multiprocessor causes an explicit flush of the write to main memory and the update of all other processor's caches. Imagine needing to write all shared data straight through the cache. With test and set, only lock locations are written out explicitly. In not too many years, hardware will no longer support software solutions because of the performance impact of doing so. 6: Process Synchronization 19
20 PURPOSE: PROCESS Semaphores We want to be able to write more complex constructs and so need a language to do so. We thus define semaphores which we assume are atomic operations: WAIT ( S ): while ( S <= 0 ); S = S - 1; SIGNAL ( S ): S = S + 1; As given here, these are not atomic as written in "macro code". We define these operations, however, to be atomic (Protected by a hardware lock.) FORMAT: wait ( mutex ); <-- Mutual exclusion: mutex init to 1. CRITICAL SECTION signal( mutex ); REMAINDER 6: Process Synchronization 20
21 Semaphores Semaphores can be used to force synchronization ( precedence ) if the preceeder does a signal at the end, and the follower does wait at beginning. For example, here we want P1 to execute before P2. P1: P2: statement 1; wait ( synch ); signal ( synch ); statement 2; 6: Process Synchronization 21
22 Semaphores We don't want to loop on busy, so will suspend instead: Block on semaphore == False, Wakeup on signal ( semaphore becomes True), There may be numerous processes waiting for the semaphore, so keep a list of blocked processes, Wakeup one of the blocked processes upon getting a signal ( choice of who depends on strategy ). To PREVENT looping, we redefine the semaphore structure as: typedef struct { int value; struct process *list; /* linked list of PTBL waiting on S */ } SEMAPHORE; 6: Process Synchronization 22
23 typedef struct { PROCESS int value; struct process *list; /* linked list of PTBL waiting on S */ } SEMAPHORE; Semaphores SEMAPHORE s; wait(s) { s.value = s.value - 1; if ( s.value < 0 ) { add this process to s.l; block; } } SEMAPHORE s; signal(s) { s.value = s.value + 1; if ( s.value <= 0 ) { remove a process P from s.l; wakeup(p); } } It's critical that these be atomic - in uniprocessors we can disable interrupts, but in multiprocessors other mechanisms for atomicity are needed. Popular incarnations of semaphores are as "event counts" and "lock managers". (We'll talk about these in the next chapter.) 6: Process Synchronization 23
24 Semaphores DEADLOCKS: May occur when two or more processes try to get the same multiple resources at the same time. P1: P2: wait(s); wait(q); wait(q); wait(s); signal(s); signal(q); signal(q); signal(s); How can this be fixed? 6: Process Synchronization 24
25 Railways in the Andes; A Practical Problem High in the Andes mountains, there are two circular railway lines. One line is in Peru, the other in Bolivia. They share a common section of track where the lines cross a mountain pass that lies on the international border (near Lake Titicaca?). Unfortunately, the Peruvian and Bolivian trains occasionally collide when simultaneously entering the common section of track (the mountain pass). The trouble is, alas, that the drivers of the two trains are both blind and deaf, so they can neither see nor hear each other. 6: Process Synchronization 25
26 The two drivers agreed on the following method of preventing collisions. They set up a large bowl at the entrance to the pass. Before entering the pass, a driver must stop his train, walk over to the bowl, and reach into it to see it it contains a rock. If the bowl is empty, the driver finds a rock and drops it in the bowl, indicating that his train is entering the pass; once his train has cleared the pass, he must walk back to the bowl and remove his rock, indicating that the pass in no longer being used. Finally, he walks back to the train and continues down the line. If a driver arriving at the pass finds a rock in the bowl, he leaves the rock there; he repeatedly takes a siesta and rechecks the bowl until he finds it empty. Then he drops a rock in the bowl and drives his train into the pass. A smart graduate from the University of La Paz (Bolivia) claimed that subversive train schedules made up by Peruvian officials could block the train forever. Explain The Bolivian driver just laughed and said that could not be true because it never happened. Explain Unfortunately, one day the two trains crashed. Explain 6: Process Synchronization 26
27 Following the crash, the graduate was called in as a consultant to ensure that no more crashes would occur. He explained that the bowl was being used in the wrong way. The Bolivian driver must wait at the entry to the pass until the bowl is empty, drive through the pass and walk back to put a rock in the bowl. The Peruvian driver must wait at the entry until the bowl contains a rock, drive through the pass and walk back to remove the rock from the bowl. Sure enough, his method prevented crashes. Prior to this arrangement, the Peruvian train ran twice a day and the Bolivian train ran once a day. The Peruvians were very unhappy with the new arrangement. Explain The graduate was called in again and was told to prevent crashes while avoiding the problem of his previous method. He suggested that two bowls be used, one for each driver. When a driver reaches the entry, he first drops a rock in his bowl, then checks the other bowl to see if it is empty. If so, he drives his train through the pass. Stops and walks back to remove his rock. But if he finds a rock in the other bowl, he goes back to his bowl and removes his rock. Then he takes a siesta, again drops a rock in his bowl and re-checks the other bowl, and so on, until he finds the other bowl empty. This method worked fine until late in May, when the two trains were simultaneously blocked at the entry for many siestas. Explain 6: Process Synchronization 27
28 Some Interesting Problems THE BOUNDED BUFFER ( PRODUCER / CONSUMER ) PROBLEM: This is the same producer / consumer problem as before. But now we'll do it with signals and waits. Remember: a wait decreases its argument and a signal increases its argument. BINARY_SEMAPHORE mutex = 1; // Can only be 0 or 1 COUNTING_SEMAPHORE empty = n; full = 0; // Can take on any integer value producer: do { /* produce an item in nextp */ wait (empty); /* Do action */ wait (mutex); /* Buffer guard*/ /* add nextp to buffer */ signal (mutex); signal (full); } while(true); consumer: do { wait (full); wait (mutex); /* remove an item from buffer to nextc */ signal (mutex); signal (empty); /* consume an item in nextc */ } while(true); 6: Process Synchronization 28
29 Some Interesting Problems THE READERS/WRITERS PROBLEM: This is the same as the Producer / Consumer problem except - we now can have many concurrent readers and one exclusive writer. Locks: are shared (for the readers) and exclusive (for the writer). Two possible ( contradictory ) guidelines can be used: No reader is kept waiting unless a writer holds the lock (the readers have precedence). If a writer is waiting for access, no new reader gains access (writer has precedence). ( NOTE: starvation can occur on either of these rules if they are followed rigorously.) 6: Process Synchronization 29
30 THE READERS/WRITERS PROBLEM: BINARY_SEMAPHORE wrt = 1; BINARY_SEMAPHORE mutex = 1; int readcount = 0; Writer: do { Some Interesting Problems wait( wrt ); /* writing is performed */ signal( wrt ); } while(true); Reader: do { wait( mutex ); /* Allow 1 reader in entry*/ readcount = readcount + 1; if readcount == 1 then wait(wrt ); /* 1st reader locks writer */ signal( mutex ); /* reading is performed */ wait( mutex ); readcount = readcount - 1; if readcount == 0 then signal(wrt ); /*last reader frees writer */ signal( mutex ); } while(true); WAIT ( S ): while ( S <= 0 ); S = S - 1; SIGNAL ( S ): S = S + 1; 6: Process Synchronization 30
31 Some Interesting Problems THE DINING PHILOSOPHERS PROBLEM: 5 philosophers with 5 chopsticks sit around a circular table. They each want to eat at random times and must pick up the chopsticks on their right and on their left. Clearly deadlock is rampant ( and starvation possible.) Several solutions are possible: Allow only 4 philosophers to be hungry at a time. Allow pickup only if both chopsticks are available. ( Done in critical section ) Odd # philosopher always picks up left chopstick 1st, even # philosopher always picks up right chopstick 1 st. 6: Process Synchronization 31
32 Critical Regions High Level synchronization construct implemented in a programming language. A shared variable v of type T, is declared as: var v; shared T Entry Section Variable v is accessed only inside a statement: region v when B do S where B is a Boolean expression. While statement S is being executed, no other process can access variable v. Regions referring to the same shared variable exclude each other in time. Shared Data Exit Section When a process tries to execute the region statement, the Boolean expression B is evaluated. If B is true, statement S is executed. If it is false, the process is delayed until B is true and no other process is in the region associated with v. Critical Region 6: Process Synchronization 32
33 Critical Regions EXAMPLE: Bounded Buffer: Shared variables declared as: struct buffer { int pool[n]; int count, in, out; } Producer process inserts nextp into the shared buffer: region buffer when( count < n) { pool[in] = nextp; in:= (in+1) % n; count++; } Consumer process removes an item from the shared buffer and puts it in nextc. Region buffer when (count > 0) { nextc = pool[out]; out = (out+1) % n; count--; } 6: Process Synchronization 33
34 Monitors High-level synchronization construct that allows the safe sharing of an abstract data type among concurrent processes. monitor monitor-name { shared variable declarations procedure body P1 ( ) {... } procedure body P2 ( ) {... } procedure body Pn ( ) {... } { initialization code } } 6: Process Synchronization 34
35 Monitors To allow a process to wait within the monitor, a condition variable must be declared, as condition x, y; Condition variable can only be used with the operations wait and signal. The operation x.wait(); means that the process invoking this operation is suspended until another process invokes x.signal(); The x.signal operation resumes exactly one suspended process. If no process is suspended, then the signal operation has no effect. 6: Process Synchronization 35
36 Monitors Schematic View of a Monitor 6: Process Synchronization 36
37 Monitors Monitor With Condition Variables 6: Process Synchronization 37
38 monitor dp { enum {thinking, hungry, eating} state[5]; condition self[5]; } initializationcode() { for ( int i = 0; i < 5; i++ ) state[i] = thinking; } void test(int i) { if ( (state[(i + 4) % 5]!= eating) && (state[i] == hungry) && (state[(i + 1) % 5]!= eating)) { state[i] = eating; self[i].signal(); } } Monitors Dining Philosophers Example void putdown(int i) { state[i] = thinking; // test left & right neighbors test((i+4) % 5); test((i+1) % 5); } void pickup(int i) { state[i] = hungry; test[i]; if (state[i]!= eating) self[i].wait(); } 6: Process Synchronization 38
39 How Is This Really Used? 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 or semaphores. Dispatcher objects may also provide events. An event acts much like a condition variable. 6: Process Synchronization 39
40 Wrap up In this chapter we have: Looked at many incarnations of the producer consumer problem. Understood how to use critical sections and their use in semaphores. Synchronization IS used in real life. Generally programmers don t use the really primitive hardware locks, but use higher level mechanisms as we ve demonstrated. 6: Process Synchronization 40
Lecture 6: Semaphores and Monitors
HW 2 Due Tuesday 10/18 Lecture 6: Semaphores and Monitors CSE 120: Principles of Operating Systems Alex C. Snoeren Higher-Level Synchronization We looked at using locks to provide mutual exclusion Locks
Chapter 1 FUNDAMENTALS OF OPERATING SYSTEM
Chapter 1 FUNDAMENTALS OF OPERATING SYSTEM An operating system is a program that acts as an intermediary between a user of a computer and the computer hardware. The purpose of an operating system is to
Outline of this lecture G52CON: Concepts of Concurrency
Outline of this lecture G52CON: Concepts of Concurrency Lecture 10 Synchronisation in Java Natasha Alechina School of Computer Science [email protected] mutual exclusion in Java condition synchronisation
Monitors, Java, Threads and Processes
Monitors, Java, Threads and Processes 185 An object-oriented view of shared memory A semaphore can be seen as a shared object accessible through two methods: wait and signal. The idea behind the concept
Concepts of Concurrent Computation
Chair of Software Engineering Concepts of Concurrent Computation Bertrand Meyer Sebastian Nanz Lecture 3: Synchronization Algorithms Today's lecture In this lecture you will learn about: the mutual exclusion
4. Monitors. Monitors support data encapsulation and information hiding and are easily adapted to an object-oriented environment.
4. Monitors Problems with semaphores: - shared variables and the semaphores that protect them are global variables - Operations on shared variables and semaphores distributed throughout program - difficult
Resource Allocation and Deadlock Resource Allocation and Handling
Resource Allocation and Deadlock Resource Allocation and Deadlock Handling Conditions for Deadlock [Coffman-etal 1971] 4 conditions must hold simultaneously for a deadlock to occur: Mutual exclusion: only
Chapter 6: Process Synchronization. Module 6: Process Synchronization
Chapter 6: Process Synchronization Module 6: Process Synchronization Background The Critical-Section Problem Peterson s Solution Synchronization Hardware Semaphores Classic Problems of Synchronization
Last Class: Semaphores
Last Class: Semaphores A semaphore S supports two atomic operations: S Wait(): get a semaphore, wait if busy semaphore S is available. S Signal(): release the semaphore, wake up a process if one is waiting
Mutual Exclusion using Monitors
Mutual Exclusion using Monitors Some programming languages, such as Concurrent Pascal, Modula-2 and Java provide mutual exclusion facilities called monitors. They are similar to modules in languages that
Java Memory Model: Content
Java Memory Model: Content Memory Models Double Checked Locking Problem Java Memory Model: Happens Before Relation Volatile: in depth 16 March 2012 1 Java Memory Model JMM specifies guarantees given by
COMMMUNICATING COOPERATING PROCESSES
COMMMUNICATING COOPERATING PROCESSES The producer-consumer paradigm A buffer of items can be filled by the producer and emptied by the consumer. The producer and the consumer must be synchronized: the
CS4410 - Fall 2008 Homework 2 Solution Due September 23, 11:59PM
CS4410 - Fall 2008 Homework 2 Solution Due September 23, 11:59PM Q1. Explain what goes wrong in the following version of Dekker s Algorithm: CSEnter(int i) inside[i] = true; while(inside[j]) inside[i]
Chapter 6, The Operating System Machine Level
Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General
Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification
Introduction Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification Advanced Topics in Software Engineering 1 Concurrent Programs Characterized by
Thread Synchronization and the Java Monitor
Articles News Weblogs Buzz Chapters Forums Table of Contents Order the Book Print Email Screen Friendly Version Previous Next Chapter 20 of Inside the Java Virtual Machine Thread Synchronization by Bill
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
SYSTEM ecos Embedded Configurable Operating System
BELONGS TO THE CYGNUS SOLUTIONS founded about 1989 initiative connected with an idea of free software ( commercial support for the free software ). Recently merged with RedHat. CYGNUS was also the original
OPERATING SYSTEMS Internais and Design Principles
OPERATING SYSTEMS Internais and Design Principles FOURTH EDITION William Stallings, Ph.D. Prentice Hall Upper Saddle River, New Jersey 07458 CONTENTS Web Site for Operating Systems: Internais and Design
Concurrent Programming
Concurrent Programming Principles and Practice Gregory R. Andrews The University of Arizona Technische Hochschule Darmstadt FACHBEREICH INFCRMATIK BIBLIOTHEK Inventar-Nr.:..ZP.vAh... Sachgebiete:..?r.:..\).
! Past few lectures: Ø Locks: provide mutual exclusion Ø Condition variables: provide conditional synchronization
1 Synchronization Constructs! Synchronization Ø Coordinating execution of multiple threads that share data structures Semaphores and Monitors: High-level Synchronization Constructs! Past few lectures:
Facing the Challenges for Real-Time Software Development on Multi-Cores
Facing the Challenges for Real-Time Software Development on Multi-Cores Dr. Fridtjof Siebert aicas GmbH Haid-und-Neu-Str. 18 76131 Karlsruhe, Germany [email protected] Abstract Multicore systems introduce
6 Synchronization with Semaphores
32 6 Synchronization with Semaphores The too-much-milk solution is much too complicated. The problem is that the mutual exclusion mechanism was too simple-minded: it used only atomic reads and writes.
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C
Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive
Semaphores and Monitors: High-level Synchronization Constructs
Semaphores and Monitors: High-level Synchronization Constructs 1 Synchronization Constructs Synchronization Coordinating execution of multiple threads that share data structures Past few lectures: Locks:
Chapter 6 Concurrent Programming
Chapter 6 Concurrent Programming Outline 6.1 Introduction 6.2 Monitors 6.2.1 Condition Variables 6.2.2 Simple Resource Allocation with Monitors 6.2.3 Monitor Example: Circular Buffer 6.2.4 Monitor Example:
SSC - Concurrency and Multi-threading Java multithreading programming - Synchronisation (I)
SSC - Concurrency and Multi-threading Java multithreading programming - Synchronisation (I) Shan He School for Computational Science University of Birmingham Module 06-19321: SSC Outline Outline of Topics
OPERATING SYSTEMS DEADLOCKS
OPERATING SYSTEMS DEADLOCKS Jerry Breecher 7: Deadlocks OPERATING SYSTEM Deadlocks What is a deadlock? What Is In This Chapter? Staying Safe: Preventing and Avoiding Deadlocks Living Dangerously: Let the
Tasks Schedule Analysis in RTAI/Linux-GPL
Tasks Schedule Analysis in RTAI/Linux-GPL Claudio Aciti and Nelson Acosta INTIA - Depto de Computación y Sistemas - Facultad de Ciencias Exactas Universidad Nacional del Centro de la Provincia de Buenos
Paper 3F6: Software Engineering and Systems Distributed Systems Design Solutions to Examples Paper 3
Engineering Tripos Part IIA THIRD YEAR Paper 3F: Software Engineering and Systems Distributed Systems Design Solutions to Examples Paper 3 CORBA 1. (a) A typical IDL file for this application is as follows:
Distributed Systems [Fall 2012]
Distributed Systems [Fall 2012] [W4995-2] Lec 6: YFS Lab Introduction and Local Synchronization Primitives Slide acks: Jinyang Li, Dave Andersen, Randy Bryant (http://www.news.cs.nyu.edu/~jinyang/fa10/notes/ds-lec2.ppt,
W4118 Operating Systems. Instructor: Junfeng Yang
W4118 Operating Systems Instructor: Junfeng Yang Learning goals of this lecture Different flavors of synchronization primitives and when to use them, in the context of Linux kernel How synchronization
Real Time Programming: Concepts
Real Time Programming: Concepts Radek Pelánek Plan at first we will study basic concepts related to real time programming then we will have a look at specific programming languages and study how they realize
Parallel Programming
Parallel Programming 0024 Recitation Week 7 Spring Semester 2010 R 7 :: 1 0024 Spring 2010 Today s program Assignment 6 Review of semaphores Semaphores Semaphoren and (Java) monitors Semaphore implementation
CS4410 Final Exam : Solution set. while(ticket[k] && (ticket[k],k) < (ticket[i],i))
1. Bakery Algorithm after optimization: CS4410 Final Exam : Solution set 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 int ticket[n] = 0; boolean choosing[n] = false; void CSEnter(int i) { choosing[i]
CS355 Hw 3. Extended Shell with Job Control
CS355 Hw 3 Due by the end of day Tuesday, Mar 18. Design document due on Thursday, Feb 27 in class. Written supplementary problems due on Thursday, March 6. Programming Assignment: You should team up with
How To Write A Multi Threaded Software On A Single Core (Or Multi Threaded) System
Multicore Systems Challenges for the Real-Time Software Developer Dr. Fridtjof Siebert aicas GmbH Haid-und-Neu-Str. 18 76131 Karlsruhe, Germany [email protected] Abstract Multicore systems have become
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
A Comparison Of Shared Memory Parallel Programming Models. Jace A Mogill David Haglin
A Comparison Of Shared Memory Parallel Programming Models Jace A Mogill David Haglin 1 Parallel Programming Gap Not many innovations... Memory semantics unchanged for over 50 years 2010 Multi-Core x86
Gildart Haase School of Computer Sciences and Engineering
Gildart Haase School of Computer Sciences and Engineering Metropolitan Campus I. Course: CSCI 6638 Operating Systems Semester: Fall 2014 Contact Hours: 3 Credits: 3 Class Hours: W 10:00AM 12:30 PM DH1153
COS 318: Operating Systems. Semaphores, Monitors and Condition Variables
COS 318: Operating Systems Semaphores, Monitors and Condition Variables Prof. Margaret Martonosi Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall11/cos318/
An Implementation Of Multiprocessor Linux
An Implementation Of Multiprocessor Linux This document describes the implementation of a simple SMP Linux kernel extension and how to use this to develop SMP Linux kernels for architectures other than
Shared Address Space Computing: Programming
Shared Address Space Computing: Programming Alistair Rendell See Chapter 6 or Lin and Synder, Chapter 7 of Grama, Gupta, Karypis and Kumar, and Chapter 8 of Wilkinson and Allen Fork/Join Programming Model
Operating System Manual. Realtime Communication System for netx. Kernel API Function Reference. www.hilscher.com.
Operating System Manual Realtime Communication System for netx Kernel API Function Reference Language: English www.hilscher.com rcx - Kernel API Function Reference 2 Copyright Information Copyright 2005-2007
Topics. Producing Production Quality Software. Concurrent Environments. Why Use Concurrency? Models of concurrency Concurrency in Java
Topics Producing Production Quality Software Models of concurrency Concurrency in Java Lecture 12: Concurrent and Distributed Programming Prof. Arthur P. Goldberg Fall, 2005 2 Why Use Concurrency? Concurrent
Multiprocessor Scheduling and Scheduling in Linux Kernel 2.6
Multiprocessor Scheduling and Scheduling in Linux Kernel 2.6 Winter Term 2008 / 2009 Jun.-Prof. Dr. André Brinkmann [email protected] Universität Paderborn PC² Agenda Multiprocessor and
Synchronization. Todd C. Mowry CS 740 November 24, 1998. Topics. Locks Barriers
Synchronization Todd C. Mowry CS 740 November 24, 1998 Topics Locks Barriers Types of Synchronization Mutual Exclusion Locks Event Synchronization Global or group-based (barriers) Point-to-point tightly
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Priority Inversion Problem and Deadlock Situations
INTER-PROCESS COMMUNICATION AND SYNCHRONISATION: Lesson-11: Priority Inversion Problem and Deadlock Situations 1 1. Priority Inversion 2 Assume Priorities of tasks be in an order such that task I highest
A Survey of Parallel Processing in Linux
A Survey of Parallel Processing in Linux Kojiro Akasaka Computer Science Department San Jose State University San Jose, CA 95192 408 924 1000 [email protected] ABSTRACT Any kernel with parallel processing
Operating Systems 4 th Class
Operating Systems 4 th Class Lecture 1 Operating Systems Operating systems are essential part of any computer system. Therefore, a course in operating systems is an essential part of any computer science
QUEUES. Primitive Queue operations. enqueue (q, x): inserts item x at the rear of the queue q
QUEUES A queue is simply a waiting line that grows by adding elements to its end and shrinks by removing elements from the. Compared to stack, it reflects the more commonly used maxim in real-world, namely,
How to design and implement firmware for embedded systems
How to design and implement firmware for embedded systems Last changes: 17.06.2010 Author: Rico Möckel The very beginning: What should I avoid when implementing firmware for embedded systems? Writing code
3C03 Concurrency: Condition Synchronisation
3C03 Concurrency: Condition Synchronisation Mark Handley 1 Goals n Introduce concepts of Condition synchronisation Fairness Starvation n Modelling: Relationship between guarded actions and condition synchronisation?
VB.NET Programming Fundamentals
Chapter 3 Objectives Programming Fundamentals In this chapter, you will: Learn about the programming language Write a module definition Use variables and data types Compute with Write decision-making statements
Keil C51 Cross Compiler
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
Linux Scheduler. Linux Scheduler
or or Affinity Basic Interactive es 1 / 40 Reality... or or Affinity Basic Interactive es The Linux scheduler tries to be very efficient To do that, it uses some complex data structures Some of what it
Linux Process Scheduling Policy
Lecture Overview Introduction to Linux process scheduling Policy versus algorithm Linux overall process scheduling objectives Timesharing Dynamic priority Favor I/O-bound process Linux scheduling algorithm
Input / Output and I/O Strategies
The Four Major Input / Output Strategies Preliminary Definitions A Silly Example to Illustrate Basic Definitions Input / Output and I/O Strategies A Context for Advanced I/O Strategies The Four Strategies
Lesson Objectives. To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization
Lesson Objectives To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization AE3B33OSD Lesson 1 / Page 2 What is an Operating System? A
Lecture 9 verifying temporal logic
Basics of advanced software systems Lecture 9 verifying temporal logic formulae with SPIN 21/01/2013 1 Outline for today 1. Introduction: motivations for formal methods, use in industry 2. Developing models
Intel TSX (Transactional Synchronization Extensions) Mike Dai Wang and Mihai Burcea
Intel TSX (Transactional Synchronization Extensions) Mike Dai Wang and Mihai Burcea 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Example: toy banking application with RTM Code written and tested in
Operating system Dr. Shroouq J.
3 OPERATING SYSTEM STRUCTURES An operating system provides the environment within which programs are executed. The design of a new operating system is a major task. The goals of the system must be well
Exceptions in MIPS. know the exception mechanism in MIPS be able to write a simple exception handler for a MIPS machine
7 Objectives After completing this lab you will: know the exception mechanism in MIPS be able to write a simple exception handler for a MIPS machine Introduction Branches and jumps provide ways to change
Common Data Structures
Data Structures 1 Common Data Structures Arrays (single and multiple dimensional) Linked Lists Stacks Queues Trees Graphs You should already be familiar with arrays, so they will not be discussed. Trees
Lecture 6: Introduction to Monitors and Semaphores
Concurrent Programming 19530-V (WS01) Lecture 6: Introduction to Monitors and Semaphores Dr. Richard S. Hall [email protected] Concurrent programming November 27, 2001 Abstracting Locking Details
The While Loop. Objectives. Textbook. WHILE Loops
Objectives The While Loop 1E3 Topic 6 To recognise when a WHILE loop is needed. To be able to predict what a given WHILE loop will do. To be able to write a correct WHILE loop. To be able to use a WHILE
Traditional IBM Mainframe Operating Principles
C H A P T E R 1 7 Traditional IBM Mainframe Operating Principles WHEN YOU FINISH READING THIS CHAPTER YOU SHOULD BE ABLE TO: Distinguish between an absolute address and a relative address. Briefly explain
Lecture 22: C Programming 4 Embedded Systems
Lecture 22: C Programming 4 Embedded Systems Today s Goals Basic C programming process Variables and constants in C Pointers to access addresses Using a High Level Language High-level languages More human
Processes and Non-Preemptive Scheduling. Otto J. Anshus
Processes and Non-Preemptive Scheduling Otto J. Anshus 1 Concurrency and Process Challenge: Physical reality is Concurrent Smart to do concurrent software instead of sequential? At least we want to have
218 Chapter 5 CPU Scheduling
218 Chapter 5 CPU Scheduling First-come, first-served (FCFS) scheduling is the simplest scheduling algorithm, but it can cause short processes to wait for very long processes. Shortestjob-first (SJF) scheduling
Concurrent Programming
Concurrent Programming Shared Memory Passing the baton Monitors Verónica Gaspes www.hh.se/staff/vero CERES, November 2, 2007 ceres Outline 1 Recap 2 Readers & Writers Readers & writers (mutual exclusion)
Record Storage and Primary File Organization
Record Storage and Primary File Organization 1 C H A P T E R 4 Contents Introduction Secondary Storage Devices Buffering of Blocks Placing File Records on Disk Operations on Files Files of Unordered Records
6. Control Structures
- 35 - Control Structures: 6. Control Structures A program is usually not limited to a linear sequence of instructions. During its process it may bifurcate, repeat code or take decisions. For that purpose,
Bounded Cost Algorithms for Multivalued Consensus Using Binary Consensus Instances
Bounded Cost Algorithms for Multivalued Consensus Using Binary Consensus Instances Jialin Zhang Tsinghua University [email protected] Wei Chen Microsoft Research Asia [email protected] Abstract
Publishing papers in international journals
Publishing papers in international journals I B Ferguson The Horticulture & Food Research Institute of New Zealand Private Bag 92169 Auckland New Zealand [email protected] 1. Introduction There
OS OBJECTIVE QUESTIONS
OS OBJECTIVE QUESTIONS Which one of the following is Little s formula Where n is the average queue length, W is the time that a process waits 1)n=Lambda*W 2)n=Lambda/W 3)n=Lambda^W 4)n=Lambda*(W-n) Answer:1
BBC Learning English Talk about English Business Language To Go Part 1 - Interviews
BBC Learning English Business Language To Go Part 1 - Interviews This programme was first broadcast in 2001. This is not a word for word transcript of the programme This series is all about chunks of language
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
ECE 3401 Lecture 7. Concurrent Statements & Sequential Statements (Process)
ECE 3401 Lecture 7 Concurrent Statements & Sequential Statements (Process) Concurrent Statements VHDL provides four different types of concurrent statements namely: Signal Assignment Statement Simple Assignment
Session 6 Number Theory
Key Terms in This Session Session 6 Number Theory Previously Introduced counting numbers factor factor tree prime number New in This Session composite number greatest common factor least common multiple
1. The Fly In The Ointment
Arithmetic Revisited Lesson 5: Decimal Fractions or Place Value Extended Part 5: Dividing Decimal Fractions, Part 2. The Fly In The Ointment The meaning of, say, ƒ 2 doesn't depend on whether we represent
CHAPTER 18 Programming Your App to Make Decisions: Conditional Blocks
CHAPTER 18 Programming Your App to Make Decisions: Conditional Blocks Figure 18-1. Computers, even small ones like the phone in your pocket, are good at performing millions of operations in a single second.
How To Make A Correct Multiprocess Program Execute Correctly On A Multiprocedor
How to Make a Correct Multiprocess Program Execute Correctly on a Multiprocessor Leslie Lamport 1 Digital Equipment Corporation February 14, 1993 Minor revisions January 18, 1996 and September 14, 1996
Real-Time Component Software. slide credits: H. Kopetz, P. Puschner
Real-Time Component Software slide credits: H. Kopetz, P. Puschner Overview OS services Task Structure Task Interaction Input/Output Error Detection 2 Operating System and Middleware Applica3on So5ware
Operating Systems for Parallel Processing Assistent Lecturer Alecu Felician Economic Informatics Department Academy of Economic Studies Bucharest
Operating Systems for Parallel Processing Assistent Lecturer Alecu Felician Economic Informatics Department Academy of Economic Studies Bucharest 1. Introduction Few years ago, parallel computers could
Pseudo code Tutorial and Exercises Teacher s Version
Pseudo code Tutorial and Exercises Teacher s Version Pseudo-code is an informal way to express the design of a computer program or an algorithm in 1.45. The aim is to get the idea quickly and also easy
Chapter 2: OS Overview
Chapter 2: OS Overview CmSc 335 Operating Systems 1. Operating system objectives and functions Operating systems control and support the usage of computer systems. a. usage users of a computer system:
Creating Maze Games. Game Maker Tutorial. The Game Idea. A Simple Start. Written by Mark Overmars
Game Maker Tutorial Creating Maze Games Written by Mark Overmars Copyright 2007-2009 YoYo Games Ltd Last changed: December 23, 2009 Uses: Game Maker 8.0, Lite or Pro Edition, Advanced Mode Level: Beginner
Multiprocessor Cache Coherence
Multiprocessor Cache Coherence M M BUS P P P P The goal is to make sure that READ(X) returns the most recent value of the shared variable X, i.e. all valid copies of a shared variable are identical. 1.
10.04.2008. Thomas Fahrig Senior Developer Hypervisor Team. Hypervisor Architecture Terminology Goals Basics Details
Thomas Fahrig Senior Developer Hypervisor Team Hypervisor Architecture Terminology Goals Basics Details Scheduling Interval External Interrupt Handling Reserves, Weights and Caps Context Switch Waiting
Operating Systems Concepts: Chapter 7: Scheduling Strategies
Operating Systems Concepts: Chapter 7: Scheduling Strategies Olav Beckmann Huxley 449 http://www.doc.ic.ac.uk/~ob3 Acknowledgements: There are lots. See end of Chapter 1. Home Page for the course: http://www.doc.ic.ac.uk/~ob3/teaching/operatingsystemsconcepts/
Exception and Interrupt Handling in ARM
Exception and Interrupt Handling in ARM Architectures and Design Methods for Embedded Systems Summer Semester 2006 Author: Ahmed Fathy Mohammed Abdelrazek Advisor: Dominik Lücke Abstract We discuss exceptions
MonitorExplorer: A State Exploration-Based Approach to Testing Java Monitors
Department of Computer Science and Engineering University of Texas at Arlington Arlington, TX 76019 MonitorExplorer: A State Exploration-Based Approach to Testing Java Monitors Y. Lei, R. Carver, D. Kung,
