Nicht-blockierende Synchronisation für Echtzeitsysteme
|
|
- Thomas Kaufman
- vor 6 Jahren
- Abrufe
Transkript
1 Nicht-blockierende Synchronisation für Echtzeitsysteme Seminar Mobile Systeme Florian Schricker 15. März 2005 Seminarleiter: Prof. Dr. Dieter Zöbel 1
2 INHALTSVERZEICHNIS INHALTSVERZEICHNIS Inhaltsverzeichnis 1 Einleitung 3 2 Synchronisation Multi-Threading Mutual Exclusion Deadlocks[2] Synchronisation und Echtzeitsysteme Mutual Exclusion und Echtzeitsysteme Fazit: Anforderungen an Synchronisation in Echtzeitsystemen 6 4 Nicht-blockierende Synchronisation für Echtzeitsysteme Wait-free Synchronization Lock-free Synchronisation CAS
3 1 Einleitung 1 EINLEITUNG In letzter Zeit haben nicht-blockierende Synchronisationstechniken in der Forschung und der praktischen Anwendung Einzug gehalten. Dabei gibt es zwei Herangehensweisen: Entweder werden Algorithmen in nicht-blockierende Algorithmen transformiert oder es wird versucht eziente Datenstrukturen zu entwerfen, die sich ohne Blockierung synchronisieren lassen. Basierend auf ezienten, nicht-blockierenden Datenstrukturen stellt [1] eine Vorgehensweise vor, ein nicht-blockierendes Echtzeitsystem zu bauen: den Fiasco Mikrokernel. Grundlage dieser Ausarbeitung ist die Dissertation von Michael Hohmuth, Pragmatic nonblocking synchronization for real-time systems [1]. Es wird zuerst beschrieben, was Synchronisation im Zusammenhang mit Betriebssystemen generell bedeutet, um nicht-blockierende Synchronisation einordnen zu können (Kapitel 2). Im Anschluss daran wird Synchronisation allgemein bei Echtzeit-Systemen (Kapitel 3) und die nicht-blockierende Synchronisation im Speziellen (Kapitel 4) vorgestellt. 3
4 2 SYNCHRONISATION 2 Synchronisation Moderne Betriebssysteme sind aufgeteilt in eine Reihe von Prozessen, die von einem Scheduler zur Ausführung gebracht werden. Um die Illusion einer gleichzeitigen Ausführung mehrerer Prozesse auf einem Ein-Prozessor- System zu erreichen, müssen Prozesse jederzeit vom Scheduler unterbrochen werden können. Dies wird als präemptives Multi-Tasking bezeichnet. 2.1 Multi-Threading Prozesse selbst bestehen aus mindestens einem, meist aber mehreren Threads, die ebenfalls dem Scheduler zur Ausführung übergeben werden - das sogenannte Multi-Threading. Die Threads eines Prozesses arbeiten zusammen auf demselben (virtuellen) Speicher, der dem Prozess vom System zur Verfügung gestellt wurde. Dieser gemeinsam genutzte Speicher muss vor ungewolltem Zugri der Threads geschützt werden, der Zugri also synchronisiert werden, da sonst Inkonsistenzen auftreten können. Synchronisation wird erreicht, indem der Zugri auf eine gemeinsam verwendete Ressource nur einem der beteiligten Threads exklusiv ermöglicht wird. Ein Thread, der exklusiven Zugri auf eine gemeinsame Ressource erhalten hat, bendet sich in seinem kritischen Bereich. Kritisch in dem Sinne, dass der exklusive Zugri nicht durch andere Threads unterbrochen werden darf. 2.2 Mutual Exclusion Die herkömmliche Technik zur Synchronisation von Threads ist die Mutual Exclusion 1. Kritische Bereiche werden bei der Mutual Exclusion durch Locks 2 geschützt. Will ein Thread X auf eine Ressource zugreifen, so versucht er, das zur Ressource gehörende Lock zu besetzen. Ist das Lock frei, erhält X das Lock und somit exklusiven Zugri auf die Ressource. Nach dem Zugri gibt X die Ressource wieder frei, indem er das Lock freigibt. Andere Threads, die auf das Lock zugreifen wollen und das Lock ihrerseits erhalten wollen, während X exklusivem Zugang gewährt wird, warten auf die Freigabe durch X. Ein Vorteil dessen ist, dass wartende Threads vom Scheduler deaktiviert werden können, um andere Threads auszuführen. 1 Mutual Exclusion: gegenseitiges Ausschlieÿen 2 Lock: Schloss, Semaphore 4
5 2.3 Deadlocks[2] 2 SYNCHRONISATION 2.3 Deadlocks[2] Deadlocks sind ein klassischer Problemfall der Mutual Exclusion, bei der Threads auf die Freigabe einer Ressource warten, möglicherweise ohne sie jemals zu erhalten [ref:en.wikipedia.org/wiki/deadlock]. Da es keinen generellen Ansatz zur Vermeidung von Deadlocks bei Mutual Exclusion gibt, ist es immer Aufgabe des Entwicklers, Deadlocks zu vermeiden. Kondition für Deadlocks 1. Durch Mutual Exclusion geschützte Ressourcen sind nur von einem Thread zugreifbar. 2. Threads warten auf die Freigabe von Ressourcen, haben aber bereits selbst exklusiv Ressourcen erhalten Nur der Thread, der das Lock auf eine Ressource erhalten hat, kann diese auch wieder freigeben. 4. Zirkuläres Deadlock; zwei Threads warten gegenseitig auf die Freigabe einer Ressource, die der andere Thread hält. 3 Hold and wait 5
6 3 SYNCHRONISATION UND ECHTZEITSYSTEME 3 Synchronisation und Echtzeitsysteme Das obige Kapitel erklärt, dass die Synchronisation gemeinsam genutzter Ressourcen in einer Multi-Threading-Umgebung unbedingt notwendig ist. In klassischen Echtzeit-Scheduling-Methoden wurde Synchronisation aber bisher ignoriert. EDF 4 und RMS 5 erlaubten keine gemeinsam genutzten Ressourcen. 3.1 Mutual Exclusion und Echtzeitsysteme Echtzeitsysteme mit klassischen Schedulern wie EDF oder RMS sind Prioritätenbasiert. Durch Prioritäten wird sichergestellt, dass wichtige Prozesse, insbesondere Event-Handler 6, vom Scheduler schnellstmöglich ausgeführt werden. Diese wichtige Anforderung kann durch die klassische Synchronisation, der Mutual Exclusion, nicht erfüllt werden. Werden gemeinsam verwendete Ressourcen durch Mutual Exclusion gesichert, kann die sogenannte Priority- Inversion auftreten. Priority-Inversion Priority-Inversion tritt immer dann auf, wenn ein Thread Y mit niedriger Priorität eine Ressource belegt, die von einem Thread X mit höherer Priorität benötigt wird. In diesem Fall ist die hohe Priorität von X eektiv invertiert auf die niedrige Priorität von Y, denn X kann nicht zur Ausführung gebracht werden. Das Problem der Priority-Inversion steigert sich weiter, wenn ein Thread Z mittlerer Priorität anstelle von X vom Scheduler zur Ausführung gebracht wird. Dies könnte geschehen, wenn zum Beispiel die Ausführungszeit von Y abgelaufen ist. 3.2 Fazit: Anforderungen an Synchronisation in Echtzeitsystemen Es ist es wichtig, dass hoch-priorisierte Threads vom Scheduler eines Echtzeitsystems möglichst schnell zur Ausführung gebracht werden können. Diese wichtige Anforderung kann für die Synchronistion nur erfüllt sein, wenn sie voll präemptiv ist und Priority-Inversion verhindert. Beides wird von der Synchronisation durch Mutual Exclusion nicht erfüllt. 4 EDF: Earliest Deadline First 5 RMS: Rate-Monotonic Scheduling 6 Zum Beispiel könnte ein Event-Handler die Auslösung eines Airbags veranlassen. 6
7 4 NICHT-BLOCKIERENDE SYNCHRONISATION FÜR ECHTZEITSYSTEME 4 Nicht-blockierende Synchronisation für Echtzeitsysteme Unter nicht-blockierender Synchronisation versteht man Protokolle zur gemeinsamen Verwendung von Ressourcen. Sie verhindert, dass beim Zugri Blockierungen auftreten. Nicht-blockierende Synchronisation ist voll präemptiv und es tritt keine Priority-Inversion auf. Es gibt zwei Arten von nicht-blockierender Synchronisation: Wait-free und Lock-free Synchronisation, die im Folgenden vorgestellt werden. 4.1 Wait-free Synchronization Bei dieser Art nicht-blockierender Synchronisation blockieren Threads nicht beim Zugri auf eine belegte Ressource, sondern unterstützen den Blocker. Jede Ressource wird zu diesem Zweck über einen Helfer-Stack gesichert. Ablauf beim Zugri auf eine gemeinsam verwendete Ressource Wenn ein hoch-priorisierter Thread X beim Zugri auf eine gemeinsam verwendete Ressource erkennt, dass diese von einem niedrig-priorisierten Thread Y gehalten wird, hilft X dem Thread Y. Das heisst: 1. X fügt sich dem Helfer-Stack der Ressource zu. 2. Anstatt zu warten gibt X seine CPU-Zeit an Y weiter, um schnellstmöglich Zugri auf die Ressource zu erlangen. Das bedeutet eektiv, dass X seine Priorität an Y überträgt. Durch die vorübergehende Erhöhung der Priorität von Y ist sichergestellt, dass kein anderer Thread vom Scheduler zur Ausführung gebracht wird. Diese Vorgehensweise wird als Priority-Inheritance bezeichnet. 3. Wenn Y seinen Zugri auf die Ressource beendet hat Der Helfer-Stack hat einen entscheidenden Vorteil: Da bei einem Echtzeitsystem der Scheduler Threads Prioritäten-basiert zur Ausführung bringt, ist der höchst-priorisierte Thread immer der erste im Helfer-Stack. Niederpriorisierte Threads können nicht davor gestellt werden und die CPU erhalten; somit ist auch das Problem der Priority-Inversion bei der Wait-free Synchronisation gelöst. 7
8 4 NICHT-BLOCKIERENDE SYNCHRONISATION FÜR 4.2 Lock-free Synchronisation ECHTZEITSYSTEME 4.2 Lock-free Synchronisation Lock-free Synchronisation funktioniert ohne die Notwendigkeit, gemeinsam genutzte Ressourcen durch Locks zu sichern. Dies wird ermöglicht, indem Threads das Berechnungsergebnis ihrer kritischen Bereichs vorbereiten und anschlieÿend versuchen, das Ergebnis in einem Schritt zu übertragen. Ermöglicht wird Lock-free Synchronisation durch den atomaren Maschinenbefehl CAS - Compare-And-Swap. Durch CAS, anschlieÿend im Detail vorgestellt, können Konikte erkannt werden, wenn zwei Threads gleichzeitig versuchen, eine Speicheradresse zu verändern. Durch Compare wird sichergestellt, dass an der Speicheradresse der erwartete Wert vorliegt. Ist dies der Fall, wird das Berechnungsergebnis übertragen - Swap. Hat sich die Speicheradresse in der Zwischenzeit, zum Beispiel durch einen anderen Thread, geändert, so schlägt Compare fehl und die Operation wird neu gestartet (Retry-Loop). Lock-free Synchronisation mit CAS hat folgende Vorteile: Ohne Locks kann es nie zu Deadlocks kommen. Threads sind besser voneinander isoliert, weil keine Locks auf Ressourcen von gecrashten Threads gehalten werden können. Daraus folgt eine bessere Fehlertoleranz und Robustheit des Systems. Lock-free Synchronisation eignet sich gut für Multi-Prozessor-Systeme. 4.3 CAS CAS ist eine Vorbedingung für die Lock-free Synchronisation und arbeitet auf typ-sicherem Speicher [ref:usenix7]. Durch CAS werden eine Reihe von Datenstrukturen ermöglicht, die dadurch Lock-free synchronisiert werden. Diese sind Zähler Stacks FIFO Queue Liste (single-linked) Um komplexere Datenstrukturen zu ermöglichen, wird das sogenannte MW- CAS (Multi-Word-Compare-And-Swap) benötigt. Bei MWCAS werden zwei Speicherstellen gleichzeitig überprüft und gegebenenfalls neu gesetzt. MW- CAS ist kein atomarer Prozessorbefehl der x86-familie und muss deshalb als 8
9 4.3 CAS 4 NICHT-BLOCKIERENDE SYNCHRONISATION FÜR ECHTZEITSYSTEME Software-Implementation bereitgestellt werden. In dieser Ausarbeitung wird MWCAS nicht behandelt. Im Folgenden wird CAS in Form einer C-Beispielimplementation vorgestellt und eine Lock-free Stack-Implementation damit realisiert. CAS in C bool CAS(int* address, int old_val, int new_val) if (*address == old_val) *address == new_val; return TRUE; } else return FALSE; } Lock-free Stack mit CAS in C Ein Stack stellt die Operationen push (füge dem Stack ein neues Element hinzu) und pop (entferne das oberste Element vom Stack und gebe es zurück) zur Verfügung. Die Datenstruktur des Stacks ist ein struct: struct StackElement int value; struct StackElement* next; } Push-Operation Bei der Push-Operation wird eine Endlos-Schleife ausgeführt. In dieser Schleife wird der next-pointer des neuen Stack-Elements auf das oberstes Stack-Element (top) gesetzt. Eine CAS-Operation überprüft anschlieÿend, ob das oberste Stackelement verändert wurde. Ist dies nicht der Fall, so wird das neue Stackelement als top gesetzt und die Schleife verlassen. Wurde top, zum Beispiel durch einen anderen Thread, verändert, so wird die Schleife neu gestartet und der next-pointer auf das neue, oberste Stack-Element gesetzt. 9
10 4.3 CAS 4 NICHT-BLOCKIERENDE SYNCHRONISATION FÜR ECHTZEITSYSTEME void push(stackelement* top, StackElement* new) do ADDR a = ⊤ new->next = *top; } while (!CAS(&top, a, &(new->next))); Pop-Operation Die Pop-Operation verläuft ähnlich der Push-Operation. Dabei wird die Adresse des top-elementes sowie die Adresse des neuen top- Elementes lokal gespeichert. Die CAS-Operation überprüft, ob sich das top- Element in der Zwischenzeit verändert hat und setzt das next-element von top als neues, oberstes Stackelement. Schlägt der Vergleich fehl, so wird die Operation neu gestartet. StackElement* pop(stackelement* top) if (top->next!= NULL) ADDR topaddr, next; do topaddr = ⊤ next = &(top->next); } while(!cas(&(top->next), next, next)); *top = next; return topaddr; } else return NULL; } Fazit Lock-free Synchronisation Obwohl die Lock-free Synchronisation wichtige Vorteile bietet (keine Priority-Inversion, keine Deadlocks) und sich so generell gut für Echtzeitsysteme zu eignen scheint, gibt es doch Schwierigkeiten. Diese müssen beim Einsatz der Lock-free Synchronisation berücksichtigt werden: CAS muss als Maschinenbefehl vorhanden sein. 10
11 4.3 CAS 4 NICHT-BLOCKIERENDE SYNCHRONISATION FÜR ECHTZEITSYSTEME MWCAS ist oft (z.b. bei der x86-familie) nicht als atomarer Prozessorbefehl vorhanden und muss aufwändig als Software-Lösung bereitgestellt werden. Schlägt das Compare fehl, so muss das Ergebnis in einem Retry-Loop neu berechnet werden. Für höchst-priorisierte Threads eines Echtzeitsystems ist dies zwar nur maximal einmal notwendig, es kann aber keine generelle Aussage für nieder-priorisierte Threads getroen werden (aktuelle Forschungen versuchen dieses Problem zu lösen [ref]). Lock-free Synchronisation funktioniert nur durch CAS- / MWCAS- Datenstrukturen. Komplexere Algorithmen müssen dahingehend angepasst werden oder gänzlich neu entwickelt werden. 11
12 LITERATUR LITERATUR Literatur [1] Michael Hohmuth: Pragmatic nonblocking synchronization for real-time systems, Dresden University of Technology, 10/2002 [2] Wikipedia.org - Deadlocks, 12
Technische Informatik II
Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen
MehrBetriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion
Betriebssysteme Vorlesung im Herbstsemester 2010 Universität Mannheim Kapitel 6: Speicherbasierte Prozessinteraktion Felix C. Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung
MehrUniversität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Übung 5: Semaphoren
Universität Stuttgart Prof. Dr.-Ing. Dr. h. c. P. Göhner Aufgabe 5.1: Übung 5: Semaphoren Semaphor-Operationen In Bild 5.1.1 ist die Anordnung von Semaphor-Operationen am Anfang und am e der asks A,B,C
MehrLinked Lists The Role of Locking
Clara Lüling, Stephan Bittner Linked Lists The Role of Locking Verkettete Liste - Die Rolle des Sperrens Gliederung Linked Lists The Role of Locking 1. Verkettete Listen 2. Algorithmen 1. Coarse-Grained
Mehr13. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen
MehrRTOS Einführung. Version: Datum: Autor: Werner Dichler
RTOS Einführung Version: 0.0.1 Datum: 20.07.2013 Autor: Werner Dichler Inhalt Inhalt... 2 RTOS... 3 Definition... 3 Anforderungen... 3 Aufgaben... 3 Eigenschaften... 4 Einteilung der Betriebssysteme...
MehrLock-free Datenstrukturen
Lock-free Datenstrukturen Eine Einführung in die lock-free Programmierung Burak Ok Friedrich-Alexander Universität Erlangen-Nürnberg (FAU) 24. Januar 2017 burak.ok@fau.de Lock-free Datenstrukturen (24.
Mehr2. Aufgabenblatt Threads
Fakultät Informatik Institut für Systemarchitektur, Professur für Betriebssysteme Betriebssysteme und Sicherheit, WS 2016/17 2. Aufgabenblatt Threads Geplante Bearbeitungszeit: drei Wochen TEIL A THREADS
MehrArten der Synchronisation. Koordination nebenläufiger Prozesse. Koordinierung. Reihenschaltung. Einseitige Synchronisation
Koordination nebenläufiger Prozesse Arten der Synchronisation Systemaufrufe Programmverwaltung Zugriffskontrolle Dateiverwaltung Ein /Auslagerung Vernetzung Ein /Ausgabe Fadenverwaltung Koordination Prozesseinplanung
MehrProgrammierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume)
Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen,
MehrAusnahmebehandlung in Java
Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard
Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
MehrPraxis der Programmierung
Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen
MehrÜbung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012
Übung zu Grundlagen der Betriebssysteme 10. Übung 18.12.2012 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
Mehr12. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty
MehrOperating System Kernels
Operating System Kernels von Patrick Bitterling 1 Themenübersicht -Eine Einleitung über Kernel -Begriffserklärung, Architekturen -Kernel Subsysteme -Prozess-Scheduling, Speichermanagement,... -Der Networking
MehrDie Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden.
7 Parallelität und Nebenläufigkeit Mehrere Prozessen oder Threads Parallelität Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit
MehrBeispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
MehrBitte verwenden Sie nur dokumentenechtes Schreibmaterial!
VO 182.713 Prüfung Echtzeitsysteme 27. März 2015 KNr. MNr. Zuname, Vorname Ges.)(100) 1.)(35) 2.)(25) 3.)(15) 4.)(25) Zusatzblätter: Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! 1 Grundlagen
Mehr2.3 Prozessverwaltung
Realisierung eines Semaphors: Einem Semaphor liegt genau genommen die Datenstruktur Tupel zugrunde Speziell speichert ein Semaphor zwei Informationen: Der Wert des Semaphors (0 oder 1 bei einem binären
MehrCounting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
MehrKlausur. Betriebssysteme SS
Klausur FB Informatik und Mathematik Prof. R. Brause Betriebssysteme SS 2011 14.7.2011 Vorname: Nachname: Matrikelnummer: Geburtsdatum: Studiengang: Bitte tragen Sie auf jeder Seite Ihre Matrikelnummer
MehrLiteratur. Betriebssysteme - WS 2015/16 - Teil 13/Scheduling 2
Literatur [13-1] Quade, Jürgen; Mächtel, Michael: Moderne Realzeitsysteme kompakt. dpunkt, 2012 [13-2] Quade, Jürgen: Embedded Linux lernen mit dem Raspberry Pi. dpunkt, 2014 [13-3] Eißenlöffel, Thomas:
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Mehr6. Juni VO Prüfung Betriebssysteme. Ges.)(100) 1.)(35) 2.)(20) 3.)(45) Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!
VO 8. Prüfung Betriebssysteme. Juni KNr. MNr. Zuname, Vorname Ges.)().)().)().)() Zusatzblätter: Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! Synchronisation mit Semaphoren () Eine Parkgarage
Mehr6. Verkettete Strukturen: Listen
6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)
MehrDomänenmodell: Fadenkommunikation und -synchronisation
Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4
MehrGegenseitiger Ausschluss 102
Gegenseitiger Ausschluss 102 MX = M (P 1... P n ) M = (lock unlock M) P i = (lock begin_critical_region i end_critical_region i unlock private_work i P i ) n Prozesse P 1... P n wollen konkurrierend auf
MehrSchnittstellen, Stack und Queue
Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In
MehrGraphdurchmusterung, Breiten- und Tiefensuche
Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrWiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute
Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert
MehrEinfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).
Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 64 2 / 64 Motivation Hauptteil dieser Vorlesung sind die so genannten. Zur Motivation (und als Vorbereitung der Datencontainer-Klassen
MehrProzesse und Scheduling
Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen
MehrBetriebssystembau (BSB)
Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk olaf.spinczyk@tu-.de http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 13.11.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
Mehrlibrtipc - Bibliothek für echtzeitfähige Interprozesskommunikation
librtipc - Bibliothek für echtzeitfähige Interprozesskommunikation Josef Raschen Diplomarbeit: Hardwareunabhängige Interprozesskommunikation für Echtzeitanwendungen Lehrstuhl für Betriebssysteme RWTH Aachen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
Mehr9. Vorlesung Betriebssysteme
Dr. Christian Baun 9. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/39 9. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik wolkenrechnen@gmail.com Dr. Christian
MehrTafelübung zu BSRvS1. 3. Philosophen. Fortsetzung Grundlagen C-Programmierung
Tafelübung zu BSRvS1 3. Philosophen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/
Mehr3. Philosophen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund
Tafelübung zu BSRvS1 3. Philosophen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/
MehrLock-freie Konzepte für parallele Software. Ein Überblick. Klaus Kusche, September 2014
Lock-freie Konzepte für parallele Software Ein Überblick Klaus Kusche, September 2014 Mein Bezug zum Thema Ich habe Lock-freie Algorithmen und Datenstrukturen als zentrale Komponente eines Betriebssystems
MehrProzesszustände (1a)
Prozesszustände (1a) NOT EXISTING DELETED CREATED Meta-Zustand (Theoretische Bedeutung) Prozesszustände Multiuser Umfeld (1c) Hintergrund-Prozess - der Prozess startet im Hintergrund - my-commandbin &
MehrJava Concurrency Utilities
Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),
MehrScheduling in Echtzeitbetriebssystemen. Prof. Dr. Margarita Esponda Freie Universität Berlin
Scheduling in Echtzeitbetriebssystemen Prof. Dr. Margarita Esponda Freie Universität Berlin Echtzeitsysteme Korrekte Ergebnisse zum richtigen Zeitpunkt Hart Echtzeitsysteme Eine verspätete Antwort ist
MehrVorlesung 5: Interrupts
Universität Bielefeld Technische Fakultät AG Rechnernetze und verteilte Systeme Vorlesung 5: Interrupts Peter B. Ladkin Kommunikation über den Bus CPU läuft zu einer Taktfrequenz I/O Geräte laufen zu anderen
MehrProgrammieren I. Kapitel 13. Listen
Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen
MehrKlausur zum Kurs Betriebssysteme (1802) am 18. September 2010
Fakultät für Mathematik und Informatik Lehrgebiet Kooperative Systeme Prof. Dr. Jörg M. Haake Klausur zum Kurs Betriebssysteme (1802) am 18. September 2010 Klausurort: Vorname Name: Adresse: Matrikelnummer:
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrPOSIX Echtzeit: Kernel 2.6 und Preempt-RT
POSIX Echtzeit: Kernel 2.6 und Preempt-RT Slide 1 - http://www.pengutronix.de - 21.01.2007 Echtzeit-Systemplanung Wenn das zeitliche Verhalten spezifiziert ist, kann auch spezifiziert werden, welche Applikationsteile
MehrMonitore. Klicken bearbeiten
Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition
MehrKapitel 4. Kontrollstrukturen
Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen
MehrNebenläufige Programme mit Python
Nebenläufige Programme mit Python PyCon DE 2012 Stefan Schwarzer, SSchwarzer.com info@sschwarzer.com Leipzig, Deutschland, 2012-10-30 Nebenläufige Programme mit Python Stefan Schwarzer, info@sschwarzer.com
MehrOSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme
OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme Wilhelm Haas Wilhelm.Haas@informatik.stud.uni-erlangen.de Friedrich-Alexander-Universität Erlangen-Nürnberg Institut für Informatik Lehrstuhl 4
MehrEchtzeitscheduling (1)
Echtzeitscheduling (1) Scheduling in Betriebssystemen Ressourcenausteilung (CPU, Speicher, Kommunikation) Faire Ressourcenvergabe, insbesondere CPU Hohe Interaktivität / kurze Reaktionszeit für interaktive
MehrAusgewählte Kapitel eingebetteter Systeme
Ausgewählte Kapitel eingebetteter Systeme Echtzeitfähige Ereignisgetriebene Scheduling-Strategien Friedrich-Alexander-Universität Erlangen-Nürnberg 08.06.2005 Übersicht Problemdefinition Scheduling-Strategien
MehrTechnische Informatik II
Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Hinweis: Weitere ufgaben zu diesem Thema finden sie in den egleitbüchern zur Vorlesung.
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
Mehre) Welche Aussage zu Speicherzuteilungsverfahren ist falsch?
Aufgabe 1: (1) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort eindeutig anzukreuzen. Auf die richtige Antwort gibt es die angegebene Punktzahl. Wollen Sie eine Multiple-Choice-Antwort
MehrParallele Prozesse. Prozeß wartet
Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:
MehrC++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.
MehrInformatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest
MehrThreads and Scheduling
Vorlesung Betriebssysteme WS 2010, fbi.h-da.de Threads and Scheduling Jürgen Saala 1. Threads 2. Scheduling 2 1. Threads 3 Prozesse mit je 1 Adressraum 1 Ausführungsfaden d.h. Unabhängiger Adressraum mit
MehrPrüfung Informatik D-MATH/D-PHYS :00 17:00
Prüfung Informatik D-MATH/D-PHYS 9. 8. 0 5:00 7:00 Prof. Bernd Gartner Kandidat/in: Name:. Vorname:. Stud.-Nr.:. Ich bezeuge mit meiner Unterschrift, dass ich die Prufung unter regularen Bedingungen ablegen
MehrTask A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003
Task! evt. parallel zu bearbeitende Ausführungseinheit! Beispiel: Task A Zündung Task B Einspritzung Task C Erfassung Pedalwert Zeit t J. Schäuffele, Th. Zurawka:, Vieweg, 2003 Echtzeitbetriebssysteme
MehrAdvanced Programming in C
Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer
MehrInformatik II Übung, Woche 14
Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation
MehrMusterlösung Prüfung WS 01/02
Musterlösung Prüfung WS 01/02 Fach: I3 Software-Technik (SEE, GRS, BTS) Teilprüfung: Betriebssysteme Tag: 29.01.2002 10:45 14.45 Raum: 1006 Bearbeitungszeit: 4 Stunden Name:... Matr.Nr.:... Punkte:...
MehrMusterlösung zur KLAUSUR
Johann Wolfgang Goethe-Universität Frankfurt am Main FB 15 Institut für Informatik Praktische Informatik PD Dr. R. Brause Musterlösung zur KLAUSUR zur Vorlesung Betriebssysteme I WS 2003/04 Name Vorname
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
MehrMulti-Threading wie in C++11
Multi-Threading wie in C++11 Franco Chiappori Embedded Computing Conference 2013 Reiseroute Guards Lock-Free Data Structures Futures Promises Atomic Types Memory Barriers Compiler / Prozessor Compiler
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen VO 708.031 Um was geht es? Datenstrukturen Algorithmen Algorithmus Versuch einer Erklärung: Ein Algorithmus nimmt bestimmte Daten als Input und transformiert diese nach festen
MehrNachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.
Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende
MehrInstitut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September
MehrDeadlocks. Christoph Lindemann. Betriebssysteme. Betriebssysteme WS 2004/05. Fahrplan. Inhalt. Das Deadlock Problem
Betriebssysteme WS 2004/05 Deadlocks Christoph Lindemann Fahrplan 14.10. Organisation der Vorlesung, Einführung in Betriebssysteme 21.10. Strukturen von Betriebssystemen 28.10. Prozesse und Threads 4.11.
MehrBetriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)
Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen) 1 Prozesse Bei Betriebssystemen stoßen wir des öfteren auf den Begriff Prozess als wahrscheinlich am häufigsten verwendeter und am unklarsten
MehrGrundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
MehrÜbersicht. Nebenläufige Programmierung: Praxis und Semantik. Synchronisation (5) Bisher. Jetzt. Aktuelle Themen zu Informatik der Systeme: WS 2011/12
Stand der Folien: 15. November 2011 Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Synchronisation (5) 1 Übersicht über die Operationen Mutual-Exclusion
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 OpenMP-Programmierung Teil III Multikern-Praktikum Wintersemester 06-07 Inhalt Was ist OpenMP? Parallele Regionen Konstrukte zur Arbeitsteilung
Mehr(b.) Welche Möglichkeit gibt es, die Methode run so zu verändern, dass Bora Bora IMMER zuletzt ausgegeben wird?
Threads - Seite 1 Threads (1.) (a.) Nehmen Sie das Beispiel 2 von der Folie und ändern Sie dies ab, so dass sie z.b. ein Array von 100 Threads starten können! Testen Sie aber zunächst ihren Kode mit einem
MehrSoftwarelösungen: Versuch 4
Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]
MehrSysteme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
MehrKlausur. Betriebssysteme SS 2007
Matrikelnummer: 9999999 Klausur FB Informatik und Mathematik Prof. R. Brause Betriebssysteme SS 2007 Vorname: Nachname: Matrikelnummer: Geburtsdatum: Studiengang: Bitte tragen Sie auf jeder Seite Ihre
MehrProzeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen
Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik
Mehr(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?
SoSe 2014 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung 2 2014-04-28 bis 2014-05-02 Aufgabe 1: Unterbrechungen (a) Wie unterscheiden sich synchrone
Mehr3.2 Prozessumschaltung
3.2 Prozessumschaltung (dispatching) deaktiviert einen Prozess und aktiviert einen anderen. Wann? aktiver Prozess wird vom Prozessor verdrängt zugunsten eines bereiten Prozesses aktiver Prozess blockiert,
MehrAlgorithmen implementieren. Implementieren von Algorithmen
Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente
MehrThreads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015
Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)
Mehr( Faire ) Zuteilung eines Prozesses an den Prozessor (Entscheidung über Swapping) Wartende Prozesse in einer (FIFO-) Warteschlange organisieren
22 2.2 Prozesse Prozess-Scheduling Scheduler: ( Faire ) Zuteilung eines Prozesses an den Prozessor (Entscheidung über Swapping) Scheduling-Verfahren Round Robin (einfach und häufig verwendet) Wartende
MehrKlausur zur Vorlesung Grundlagen Betriebssysteme und Systemsoftware
Klausur zur Vorlesung Grundlagen Betriebssysteme und Systemsoftware (Prof. Dr. J. Schlichter, Dr. W. Wörndl, WS 2011/12) Die Bearbeitungsdauer beträgt 90 Minuten. Es sind keine Hilfsmittel zugelassen.
MehrInformatik II Prüfungsvorbereitungskurs
Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrKlausur zur Vorlesung Grundlagen der Betriebssysteme WS 2010 / 2011
Name: Matrikelnummer: Studiengang: INF CV IM Lehramt BSc MSc BEd MEd Diplom Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 2010 / 2011 Montag, den 21. Februar 2011, 14:15 Uhr 15:45 Uhr Prof. Dr.
MehrInhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation
Inhaltsverzeichnis Systemprogrammierung - Kapitel 2 Prozessverwaltung 1/21 2.1 Was ist ein Prozess? Definition Prozesszustände Prozesskontrollblöcke 2.4 Thread-Systeme Sinn und Zweck Thread-Arten Thread-Management
MehrVorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 17. JAVA Kommunikation von Threads 1 Motivation
Mehr1.4 Die Ackermannfunktion
a : N 2 N : Beispiele: a(0, y) = y + 1, a(x, 0) = a(x 1, 1), x > 0, a(x, y) = a(x 1, a(x, y 1)), x, y > 0. Beh.: a(1, y) = y + 2 Bew. durch Induktion über y: a(1, 0) = a(0, 1) = 2 = 0+2. a(1, y + 1) =
Mehr