C Tutorium – Semaphoren –

Slides:



Advertisements
Ähnliche Präsentationen
Ausführen.
Advertisements

Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
10.2 Wechselseitiger Ausschluss in Hardware
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
C Tutorium – B*-Baum Index Manager –
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
Zusammenfassung der Vorwoche
Institut MD Universität Rostock Real-Time Linux Szenario –Board, liest (sampled) analoge Daten –produziert 8 Bit Ergebnis und gibt dieses alle 100 ms aus.
Gliederung Motivation / Grundlagen Sortierverfahren
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Kapitel 7.2 Dining philosophers problem
Gefährdung durch Viren
Java: Objektorientierte Programmierung
FH-Hof Deadlocks Richard Göbel. FH-Hof Deadlock - Definition Menge von Prozessen ist an einem Deadlock beteiligt: wenn jeder Prozess in dieser Menge auf.
Java: Dynamische Datentypen
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Vorlesung 10 Mutual Exclusion Peter B. Ladkin Sommersemester 2001 Universität Bielefeld Technische Fakultät.
DVG Klassen und Objekte
Kapitel 13: Mehrbenutzersynchronisation
Wismar Business School
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Implementierung von S2PL (1) Scheduler als Verwalter von Sperren auf Datenelementen sowie Warteschlangen für Sperren (Sperren-Verwalter). Transaktion 1Transaktion.
Synchronisation paralleler Transaktionen AIFB SS Konzept der Transaktion 4.2 Konzept der Transaktion (1/4) Eine Transaktion ist ein in sich geschlossener,
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Gerade bei Fotobearbeitungen kann es leicht zum Verlust der Dateierweiterung (file extension) kommen. Nach stundenlanger Arbeit lässt sich eine Datei nicht.
Relationale Datenbanken III
Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3.
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Effiziente Algorithmen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
WS 2012/13 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #11 Transaktionsverwaltung.
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #10 Transaktionsverwaltung.
Festschreibe-Protokoll (1) Globales Zwei-Phasen-Festschreibe-Protokoll (2- Phasen-Commit, 2PC): Phase 1: –Koordinator benachrichtigt Ressourcen, dass Commit.
Prozess-synchronisation
Thread Synchronisation in JAVA
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.

Interprozess- kommunikation (IPC)
1 Projekt1: Prozesse unter Unix Aufgabenstellung 3: Quicksort.
Übung: Transaktionale Systeme
Transaktionsverwaltung
Synchronisation paralleler Transaktionen  AIFB SS Sperrverfahren Sperrverfahren (13/18) Behandlung von Konflikten bei der Sperrvergabe.
Infor:lösungen Dokumentation zum Testdrive Lösungsnr.:RS0003_BarcodeEAN128 Titel:Barcode EAN 128 BarcodeEAN128 Testdrive.
C Tutorium – Debugging & Tracing – Knut Stolze. 2 Agenda Debugging & Debugger Tracing.
Datenbanksystementwicklung – Systemarchitektur & Prozessmodell – Knut Stolze
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
Übung Betriebssysteme, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil II Prozesse / Systemaufrufe Fehlerbehandlung.
C Tutorium – Memory Management – Knut Stolze. 2 Agenda Einführung in die Speicherverwaltung Stack vs. Heap Malloc Free Sizeof Tipps/Hinweise.
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
C++ FÜR cOMPUTERSPIELENTWICKLER
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
UNIX Portability Semaphore
 Präsentation transkript:

C Tutorium – Semaphoren – Knut Stolze

Semaphoren Mittel zur Synchronisation mehrerer Prozesse Zugriff auf Dateien, Shared Memory, … Werden vom Betriebssystem verwaltet Können zur Implementierung von Sperren verwendet werden Verschiedene Variantionen System V Semaphoren Posix Semaphoren

Semaphoren (2) Funktionalität Operationen auf Semaphoren sind atomar Setze Semaphore Warte bis Semaphore frei Warte bis Semaphore frei und dann setze Operationen auf Semaphoren sind atomar Ganz oder gar nicht ausgeführt

Erzeugen von Semaphoren Ein Prozess legt Set (Menge) von Semaphoren an int semget(key, num_sems, flags) key: Schlüssel für den Semaphoren-Set; üblicherweise mittels “ftok” generiert; Auch IPC_PRIVATE möglich num_sems: Anzahl der Semaphoren im Set flags: IPC_CREAT – Set erzeugen IPC_EXCL – zu erzeugender Set darf noch nicht existieren; sonst Fehler Zugriffsrechte auf Set (wie bei Dateien) Ergebnis: ID des Semaphoren-Set (oder –1 bei Fehler)

Modifizieren von Semaphoren Ändern des Zustandes einer oder mehrerer Semaphoren eines Sets atomar int semop(id, ops, num_ops) id: ID des Semaphoren-Sets (von “semget”) ops: Array mit den Operationen auf dem Semaphoren-Set Jedes Element im Array beschreibt eine Operation, z.B. “test auf 0” num_ops: Anzahl der Elemente in “ops”

semop Beschreibung einer einzelnen Operation: sem_num: Nummer der Semaphore im Semaphoren-Set (Start bei 0) sem_op: > 0  erhöhe Zähler der Semaphore um angegebenen Wert; Prozess wird nie geblockt < 0  reduziere Zähler der Semaphore um angegebenen Wert; Prozess wartet gegebenenfalls bis Zähler der Semaphore >= dem angegebenen Wert ist = 0  Prozess wartet bis Zähler der Semaphore 0 wird

semop (2) sem_flg: SEM_UNDO: Änderungen des aktuellen Prozesses auf der Semaphore werden beim Ende des Prozesses zurückgesetzt SEM_NOWAIT: Sofortiger Fehler falls die Operation nicht ausgeführt werden kann (kein Blockieren des Prozesses)

Implementierung einer Sperre 3 Semaphoren in einem Set Zähler für Leser (S-Sperre) Flag für Schreiber (X-Sperre) Blockieren neuer Leser, wenn ein anderer Prozess bereits eine X-Sperre angefordert hat Starvation verhindern

Implementierung einer Sperre (2) Initialisierung: Zähler für Lese- und Schreibsemaphore auf 0 Flag für Blockieren neuer Leser auf 1 Inverse Logik Schreibsperre anfordern: Zähler für “blockierte Leser” um 1 reduzieren (warten bis Zähler > 0) damit keine neuen Leser oder Schreiber hinzukommen können Zähler für Schreiber muss 0 sein Zähler für Leser muss 0 sein Zähler für Schreiber 1 erhöhen

Implementierung einer Sperre (3) Lesesperre anfordern: Zähler für blockierte Leser um 1 reduzieren (warten bis Zähler > 0) Zähler für Leser um 1 erhöhen Zähler für blockierte Leser um 1 erhöhen (Rücksetzen von Schritt 1) Zähler für Schreiber muss 0 sein (redundant mit Schritt 1 + 3)

Implementierung einer Sperre (4) Schreibsperre freigeben: Zähler für blockierte Leser um 1 erhöhen (Leser oder neue Schreiber zugelassen) Zähler für Schreiber um 1 reduzieren Lesesperre freigeben: Zähler für Leser um 1 reduzieren

Semaphoren zerstören Semaphoren-Set wird zerstört int semctl(id, semnum, cmd, …) id: ID des Semaphoren-Set (Ergebnis von “semget”) Cmd: Kommando auf dem Semaphoren-Set IPC_RMID – Set zerstören IPC_STAT – Informationen über Set zurückgeben IPC_SET – Setze Semaphore GETALL – Gib Zähler aller Semaphoren des Sets zurück …

Probleme bei Semaphoren Erzeugen (“semget”) und Initialisieren (“semctl”) von Semaphoren ist nicht atomar Konkurrierendes Erzeugen von Semaphoren kann ein Problem sein dedizierter Prozess zum Anlegen der Semaphoren hilfreich

Kommandozeile (Unix) Liste alle IPC-Resources (Message Queues, Semaphore, Shared Memors Segmente) $ ipcs Lösche eine IPC-Resource $ ipcrm Beispiel um alle Resources des aktuellen Nutzers zu löschen: $ ipcs | grep `user` | awk ‘{ print “ipcrm –”$1,$2 } | sh -e