Betriebssysteme Theorie
|
|
|
- Wilhelmine Franke
- vor 10 Jahren
- Abrufe
Transkript
1 Betriebssysteme Theorie SS 2011 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz D ( ) Synchronisation Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-1
2 Einführung (1) Es gibt Prozesse (oder Threads oder Kernel- Funktionen) mit gemeinsamem Zugriff auf bestimmte Daten, z. B. Threads des gleichen Prozesses: gemeinsamer Speicher Prozesse mit gemeinsamer Memory-Mapped-Datei Prozesse / Threads öffnen die gleiche Datei zum Lesen / Schreiben SMP-System: Scheduler (je einer pro CPU) greifen auf gleiche Prozesslisten / Warteschlangen zu Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-2
3 Einführung (2) Synchronisation: Probleme mit gleichzeitigem Zugriff auf Datenstrukturen Beispiel: Zwei Prozesse erhöhen einen Zähler erhoehe_zaehler( ) { w=read(adresse); w=w+1; write(adresse,w); Ausgangssituation: w=10 P1: w=read(adresse); // 10 w=w+1; // 11 write(adresse,w); // 11!! P2: w=read(adresse); // 10 w=w+1; // 11 write(adresse,w); // 11 Ergebnis nach P1, P2: w=11 nicht 12! Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-3
4 Einführung (3) Gewünscht wäre eine der folgenden Reihenfolgen: Ausgangssituation: w=10 Ausgangssituation: w=10 P1: w=read(adr); // 10 w=w+1; // 11 write(adr,w); // 11 P2: P1: P2: w=read(adr); // 10 w=w+1; // 11 write(adr,w); // 11 w=read(adr); // 11 w=w+1; // 12 write(adr,w); // 12 w=read(adr); // 11 w=w+1; // 12 write(adr,w); // 12 Ergebnis nach P1, P2: w=12 Ergebnis nach P1, P2: w= Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-4
5 Einführung (4) Ursache: erhoehe_zaehler() arbeitet nicht atomar: Scheduler kann die Funktion unterbrechen Funktion kann auf mehreren CPUs gleichzeitig laufen Lösung: Finde alle Code-Teile, die auf gemeinsame Daten zugreifen, und stelle sicher, dass immer nur ein Prozess auf diese Daten zugreift (gegenseitiger Ausschluss, mutual exclusion) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-5
6 Einführung (5) Analoges Problem bei Datenbanken: exec sql CONNECT... exec sql SELECT kontostand INTO $var FROM KONTO WHERE kontonummer = $knr $var = $var - abhebung exec sql UPDATE Konto SET kontostand = $var WHERE kontonummer = $knr exec sql DISCONNECT Bei parallelem Zugriff auf gleichen Datensatz kann es zu Fehlern kommen Definition der (Datenbank-) Transaktion, die u.a. atomar und isoliert erfolgen muss Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-6
7 Einführung (6) Race Condition: Mehrere parallele Threads / Prozesse nutzen eine gemeinsame Ressource Zustand hängt von Reihenfolge der Ausführung ab Race: die Threads liefern sich ein Rennen um den ersten / schnellsten Zugriff Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-7
8 Einführung (7) Warum Race Conditions vermeiden? Ergebnisse von parallelen Berechnungen sind nicht eindeutig (d. h. potenziell falsch) Bei Programmtests könnte (durch Zufall) immer eine korrekte Ausführreihenfolge auftreten; später beim Praxiseinsatz dann aber gelegentlich eine falsche. Race Conditions sind auch Sicherheitslücken Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-8
9 Einführung (8) Race Condition als Sicherheitslücke Wird von Angreifern genutzt Einfaches Beispiel: read(command) f = creat ("/tmp/script") write (f,command) f.close () chmod ("/tmp/script","a+x") system ("/tmp/script") // Datei erzeugen // Befehl rein schreiben // speichern/schließen // ausführbar machen // Skript ausführen Angreifer ändert Dateiinhalt vor dem chmod; Programm läuft mit Rechten des Opfers Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-9
10 Einführung (9) Idee: Zugriff via Lock auf einen Prozess (Thread,...) beschränken: erhoehe_zaehler( ) { flag=read(lock); if (flag == LOCK_UNSET) { set(lock); /* Anfang des kritischen Bereichs */ w=read(adresse); w=w+1; write(adresse,w); /* Ende des kritischen Bereichs */ release(lock); ; Problem: Lock-Variable nicht geschützt Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-10
11 Einführung (10) Nicht alle Zugriffe sind problematisch: Gleichzeitiges Lesen von Daten stört nicht Prozesse, die disjunkt sind (d.h.: die keine gemeinsamen Daten haben) können ohne Schutz zugreifen Sobald mehrere Prozesse/Threads/... gemeinsam auf ein Objekt zugreifen und mindestens einer davon schreibend, ist das Verhalten des Gesamtsystems unvorhersehbar und nicht reproduzierbar Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-11
12 Inhaltsübersicht: Synchronisation Einführung, Race Conditions Kritische Abschnitte und gegenseitiger Ausschluss Synchronisationsmethoden Standard-Primitive: Mutexe, Semaphore, Monitore Locking Nachrichten Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-12
13 Kritische Bereiche (1) Programmteil, der auf gemeinsame Daten zugreift Müssen nicht verschiedene Programme sein: auch mehrere Instanzen des gleichen Programms! Block zwischen erstem und letztem Zugriff Nicht den Code schützen, sondern die Daten Formulierung: kritischen Bereich betreten und verlassen (enter / leave critical section) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-13
14 Kritische Bereiche (2) Anforderung an parallele Threads: Es darf maximal ein Thread gleichzeitig im kritischen Bereich sein Kein Thread, der außerhalb kritischer Bereiche ist, darf einen anderen blockieren Kein Thread soll ewig auf das Betreten eines kritischen Bereichs warten Deadlocks sollen vermieden werden (z. B.: zwei Prozesse sind in verschiedenen kritischen Bereichen und blockieren sich gegenseitig) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-14
15 Gegenseitiger Ausschluss Tritt nie mehr als ein Thread gleichzeitig in den kritischen Bereich ein, heißt das gegenseitiger Ausschluss (englisch: mutual exclusion, kurz: mutex) Es ist Aufgabe der Programmierer, diese Bedingung zu garantieren Das Betriebssystem bietet Hilfsmittel, mit denen gegenseitiger Ausschluss durchgesetzt werden kann, schützt aber nicht vor Programmierfehlern Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-15
16 Test-and-Set-Lock (TSL) (1) Maschineninstruktion (z.b. mit dem Namen TSL = Test and Set Lock), die atomar eine Lock- Variable liest und setzt, also ohne dazwischen unterbrochen werden zu können. enter: tsl register, flag ; Variablenwert in Register kopieren und ; dann Variable auf 1 setzen cmp register, 0 ; War die Variable 0? jnz enter ; Nicht 0: Lock war gesetzt, also Schleife ret leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-16
17 Test-and-Set-Lock (TSL) (2) TSL muss zwei Dinge leisten: Interrupts ausschalten, damit der Test-und-Setzen- Vorgang nicht durch einen anderen Prozess unterbrochen wird Im Falle mehrerer CPUs den Speicherbus sperren, damit kein Prozess auf einer anderen CPU (deren Interrupts nicht gesperrt sind!) auf die gleiche Variable zugreifen kann Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-17
18 Aktives / passives Warten (1) Aktives Warten (busy waiting): Ausführen einer Schleife, bis eine Variable einen bestimmten Wert annimmt. Der Thread ist bereit und belegt die CPU. Die Variable muss von einem anderen Thread gesetzt werden. (Großes) Problem, wenn der andere Thread endet. (Großes) Problem, wenn der andere Thread z. B. wegen niedriger Priorität nicht dazu kommt, die Variable zu setzen Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-18
19 Aktives / passives Warten (2) Passives Warten (sleep and wake): Ein Thread blockiert und wartet auf ein Ereignis, das ihn wieder in den Zustand bereit versetzt. Blockierter Thread verschwendet keine CPU-Zeit. Ein anderer Thread muss das Eintreten des Ereignisses bewirken. (Kleines) Problem, wenn der andere Thread endet. Bei Eintreten des Ereignisses muss der blockierte Thread geweckt werden, z. B. explizit durch einen anderen Thread, durch Mechanismen des Betriebssystems Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-19
20 Erzeuger-Verbraucher- Problem (1) Beim Erzeuger-Verbraucher-Problem (producer consumer problem, bounded buffer problem) gibt es zwei kooperierende Threads: Der Erzeuger speichert Informationen in einem beschränkten Puffer. Der Verbraucher liest Informationen aus diesem Puffer. nächste Schreib-Position Erzeuger Verbraucher nächste Lese-Position Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-20
21 Erzeuger-Verbraucher- Problem (2) Synchronisation Puffer nicht überfüllen: Wenn der Puffer voll ist, muss der Erzeuger warten, bis der Verbraucher eine Information aus dem Puffer abgeholt hat, und erst dann weiter arbeiten. Nicht aus leerem Puffer lesen: Wenn der Puffer leer ist, muss der Verbraucher warten, bis der Erzeuger eine Information im Puffer abgelegt hat, und erst dann weiter arbeiten Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-21
22 Erzeuger-Verbraucher- Problem (3) Realisierung mit passivem Warten: Eine gemeinsam benutzte Variable count zählt die belegten Positionen im Puffer. Wenn der Erzeuger eine Information einstellt und der Puffer leer war (count == 0), weckt er den Verbraucher; bei vollem Puffer blockiert er. Wenn der Verbraucher eine Information abholt und der Puffer voll war (count == max), weckt er den Erzeuger; bei leerem Puffer blockiert er Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-22
23 Erzeuger-Verbraucher-Problem mit sleep / wake #define N 100 int count = 0; producer () { while (TRUE) { produce_item (item); if (count == N) sleep(); enter_item (item); count = count + 1; if (count == 1) wake(consumer); // Anzahl der Plätze im Puffer // Anzahl der belegten Plätze im Puffer // Endlosschleife // Erzeuge etwas für den Puffer // Wenn Puffer voll: schlafen legen // In den Puffer einstellen // Zahl der belegten Plätze inkrementieren // war der Puffer vorher leer? consumer () { while (TRUE) { // Endlosschleife if (count == 0) sleep(); // Wenn Puffer leer: schlafen legen remove_item (item); // Etwas aus dem Puffer entnehmen count = count - 1; // Zahl der belegten Plätze dekrementieren if (count == N-1) wake(producer); // war der Puffer vorher voll? consume_item (item); // Verarbeiten Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-23
24 Deadlock-Problem bei sleep / wake (1) Das Programm enthält eine race condition, die zu einem Deadlock führen kann, z. B. wie folgt: Verbraucher liest Variable count, die den Wert 0 hat. Kontextwechsel zum Erzeuger. Erzeuger stellt etwas in den Puffer ein, erhöht count und weckt den Verbraucher, da count vorher 0 war. Verbraucher legt sich schlafen, da er für count noch den Wert 0 gespeichert hat (der zwischenzeitlich erhöht wurde). Erzeuger schreibt den Puffer voll und legt sich dann auch schlafen Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-24
25 Deadlock-Problem bei sleep / wake (2) Problemursache: Wakeup-Signal für einen noch nicht schlafenden Prozess wird ignoriert Falsche Reihenfolge Weckruf irgendwie für spätere Verwendung aufbewahren... VERBRAUCHER n=read(count); /* n=0 */ sleep(); ERZEUGER.. produce_item(); n=read(count); /* n=0 */ n=n+1; write(n,count); wake(verbraucher); Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-25
26 Deadlock-Problem bei sleep / wake (3) Lösungsmöglichkeit: Systemaufrufe sleep und wake verwenden ein wakeup pending bit : Bei wake() für einen nicht schlafenden Thread dessen wakeup pending bit setzen. Bei sleep() das wakeup pending bit des Threads überprüfen wenn es gesetzt ist, den Thread nicht schlafen legen. Aber: Lösung lässt sich nicht verallgemeinern (mehrere zu synchronisiernende Prozesse benötigen evtl. zusätzliche solche Bits) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-26
27 Semaphore (1) Ein Semaphor ist eine Integer- (Zähler-) Variable, die man wie folgt verwendet: Semaphor hat festgelegten Anfangswert N ( Anzahl der verfügbaren Ressourcen ). Beim Anfordern eines Semaphors (P- oder Wait-Operation): Semaphor-Wert um 1 erniedrigen, falls er >0 ist, Thread blockieren und in eine Warteschlange einreihen, wenn der Semaphor-Wert 0 ist. P = (niederl.) probeer Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-27
28 Semaphore (2) Bei Freigabe eines Semaphors (V- oder Signal-Operation): V = (niederl.) vrijgeven einen Thread aus der Warteschlange wecken, falls diese nicht leer ist, Semaphor-Wert um 1 erhöhen (wenn es keinen auf den Semaphor wartenden Thread gibt) Code sieht dann immer so aus: wait (&sem); /* Code, der die Ressource nutzt */ signal (&sem); in vielen Büchern: P(&sem), V(&sem) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-28
29 Semaphore (3) Variante: Negative Semaphor-Werte Semaphor zählt Anzahl der wartenden Threads Anfordern (WAIT): Semaphor-Wert um 1 erniedrigen Thread blockieren und in eine Warteschlange einreihen, wenn der Semaphor-Wert 0 ist. Freigabe (SIGNAL): Thread aus der Warteschlange wecken (falls nicht leer) Semaphor-Wert um 1 erhöhen Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-29
30 Semaphore (4) Pseudo-Code für Semaphor-Operationen wait (sem) { if (sem>0) sem--; else BLOCK_CALLER; signal (sem) { if (P in QUEUE(sem)) { wakeup (P); remove (P, QUEUE); else sem++; Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-30
31 Mutexe (1) Mutex: boolesche Variable (true/false), die den Zugriff auf gemeinsam genutzte Daten synchronisiert true: Zugang erlaubt false: Zugang verboten blockierend: Ein Thread, der sich Zugang verschaffen will, während ein anderer Thread Zugang hat, blockiert Warteschlange Bei Freigabe: Warteschlange enthält Threads einen wecken Warteschlange leer: Mutex auf true setzen Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-31
32 Mutexe (2) Mutex (mutual exclusion) = binärer Semaphor, also ein Semaphor, der nur die Werte 0 / 1 annehmen kann. Pseudo-Code: wait (mutex) { if (mutex==1) mutex=0; else BLOCK_CALLER; signal (mutex) { if (P in QUEUE(mutex)) { wakeup (P); remove (P, QUEUE); else mutex=1; Neue Interpretation: wait lock signal unlock Mutexe für exklusiven Zugriff (kritische Bereiche) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-32
33 Blockieren? Betriebssysteme können Mutexe und Semaphoren blockierend oder nicht-blockierend implementieren blockierend: wenn der Versuch, den Zähler zu erniedrigen, scheitert warten nicht blockierend: wenn der Versuch scheitert vielleicht etwas anderes tun Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-33
34 Atomare Operationen Bei Mutexen / Semaphoren müssen die beiden Operationen wait() und signal() atomar implementiert sein: Während der Ausführung von wait() / signal() darf kein anderer Prozess an die Reihe kommen Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-34
35 Warteschlangen Mutexe / Semaphore verwalten Warteschlangen (der Prozesse, die schlafen gelegt wurden) Beim Aufruf von signal() muss evtl. ein Prozess geweckt werden Auswahl des zu weckenden Prozesses ist ein ähnliches Problem wie die Prozess-Auswahl im Scheduler FIFO: starker Semaphor / Mutex zufällig: schwacher Semaphor / Mutex Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-35
36 Erzeuger-Verbraucher-Problem mit Semaphoren und Mutexen typedef int semaphore; semaphore mutex = 1; semaphore empty = N; semaphore full = 0; producer() { while (TRUE) { produce_item(item); wait (empty); wait (mutex); enter_item (item); signal (mutex); signal (full); consumer() { while (TRUE) { wait (full); wait (mutex); remove_item(item); signal (mutex); signal (empty); consume_entry (item); // Kontrolliert Zugriff auf Puffer // Zählt freie Plätze im Puffer // Zählt belegte Plätze im Puffer // Endlosschleife // Erzeuge etwas für den Puffer // Leere Plätze dekrementieren bzw. blockieren // Eintritt in den kritischen Bereich // In den Puffer einstellen // Kritischen Bereich verlassen // Belegte Plätze erhöhen, evtl. consumer wecken // Endlosschleife // Belegte Plätze dekrementieren bzw. blockieren // Eintritt in den kritischen Bereich // Aus dem Puffer entnehmen // Kritischen Bereich verlassen // Freie Plätze erhöhen, evtl. producer wecken // Verbrauchen Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-36
37 Monitore (1) Motivation Arbeit mit Semaphoren und Mutexen zwingt den Programmierer, vor und nach jedem kritischen Bereich wait() und signal() aufzurufen Wird dies ein einziges Mal vergessen, funktioniert die Synchronisation nicht mehr Monitor kapselt die kritischen Bereiche Monitor muss von Programmiersprache unterstützt werden (z.b. Java, Concurrent Pascal) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-37
38 Monitore (2) Monitor: Sammlung von Prozeduren, Variablen und speziellen Bedingungsvariablen: Prozesse können die Prozeduren des Monitors aufrufen, können aber nicht von außerhalb des Monitors auf dessen Datenstrukturen zugreifen. Zu jedem Zeitpunkt kann nur ein einziger Prozess aktiv im Monitor sein (d. h.: eine Monitor-Prozedur ausführen). Monitor wird durch Verlassen der Monitorprozedur frei gegeben Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-38
39 Monitore (3) Prozess 1 Prozess 2 Mutex kritischer Bereich gemeinsame Variablen kritischer Bereich Mutex Prozess 1 Prozess 2 krit_1 ( ) Monitor Monitor... krit_1(); krit_1();... kritischer Bereich krit_2 ( ) kritischer Bereich gemeinsame Variablen Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-39
40 Monitore (4) Einfaches Beispiel: Zugriff auf eine Festplatte; mit Mutex mutex disk_access = 1; wait (disk_access); // Daten von der Platte lesen signal (disk_access); wait (disk_access); // Daten auf die Platte schreiben signal (disk_access); Gleiches Beispiel, mit Monitor monitor disk { entry read (diskaddr, memaddr) { // Daten von der Platte lesen ; entry write (diskaddr, memaddr) { // Daten auf die Platte schreiben ; init () { // Gerät initialisieren ; ; disk.read (da, ma); disk.write (da, ma); Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-40
41 Monitor (5) Monitor ist ein Konstrukt, das Teil einer Programmiersprache ist Compiler und nicht der Programmierer ist für gegenseitigen Ausschluss zuständig Umsetzung (durch den Compiler) z. B. mit Semaphor/Mutex: monitor disk semaphore m_disk = 1; entry funktion () { void funktion () { /* Code */ wait (m_disk); /* Code */ signal (m_disk); disk.funktion(); funktion(); Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-41
42 Monitor (6) Monitor-Konzept erinnert an Klassen (objektorientierte Programmierung) Module (modulare Programmierung) Kapselung der Prozeduren und Variablen (außer über als public deklarierte Prozeduren kein Zugriff auf Monitor) Einfaches und übersichtliches Verfahren, um kritische Bereiche zu schützen, aber: Was tun, wenn ein Prozess im Monitor blockieren muss? Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-42
43 Monitor (7) Zustandsvariablen (condition variables) Idee: Prozess in Monitor muss darauf warten, dass eine bestimmte Bedingung (condition) erfüllt ist. Für jede Zustandsvariable Wait- und Signal- Funktionen: m_wait (var): aufrufenden Prozess sperren (er gibt den Monitor frei) m_signal (var): gesperrten Prozess entsperren (weckt einen Prozess, der den Monitor mit m_wait() verlassen hat); erfolgt unmittelbar vor Verlassen des Monitors Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-43
44 Monitore (8) Monitor Prozess 1 Prozess 2 Daten Condition- Variable cv f() g() Prozedur f() { m_wait(cv); m_wait(cv)... Zeit Prozedur g() {... m_signal(cv); m_signal(cv) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-44
45 Monitore (9) Gesperrte Prozesse landen in einer Warteschlange, die der Zustandsvariable zugeordnet ist Interne Warteschlangen haben Vorrang vor Prozessen, die von außen kommen Implementation mit Mutex/Semaphor: conditionvariable { int queuesize = 0; mutex m; semaphore waiting; wait() { m.lock(); queuesize++; m.release(); waiting.down(); signal() { m.lock(); while (queuesize > 0){ // alle wecken queuesize--; waiting.up(); m.release(); Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-45
46 Monitore (10) Erzeuger-Verbraucher-Problem mit Monitor monitor iostream { item buffer; int count; const int bufsize = 64; condition nonempty, nonfull; entry append(item x) { while (count == bufsize) m_wait(nonfull); put(buffer, x); // put ist lokale Prozedur count = 1; m_signal(nonempty); entry remove(item x) { while (count == 0) m_wait(nonempty); get(buffer, x); // get ist lokale Prozedur count = 0; m_signal(nonfull); init() { count = 0; // Initialisierung Quelle: Prof. Scheidig, Univ. Saarbrücken, WS0607/Vorlesung_Betriebssysteme/ - angepasst an C-artige Syntax Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-46
47 Java und Monitore (1) Java verwendet Monitore zur Synchronisation Schlüsselwort synchronized Klasse, in der alle Methoden synchronized sind, ist ein Monitor Keine benannten Zustandsvariablen Warteschlangen: m_wait: wait m_signal: notify (weckt einen Prozess) notifyall (weckt alle Prozesse) Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-47
48 Java und Monitore (2) class BoundedBuffer extends MyObject { private int size = 0; private double[] buf = null; private int front = 0, rear = 0, count = 0; public BoundedBuffer(int size) { this.size = size; buf = new double[size]; public synchronized void deposit(double data) { while (count == size) wait(); buf[rear] = data; rear = (rear+1) % size; count++; if (count == 1) notify(); public synchronized double fetch() { double result; while (count == 0) wait(); result = buf[front]; front = (front+1) % size; count--; if (count == size-1) notify(); return result; Quelle: ConcProgJava/Monitors/bbse.java Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-48
#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt
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)
Betriebssysteme 1 BS1-E SS Prof. Dr.-Ing. Hans-Georg Eßer Fachhochschule Südwestfalen. Foliensatz E: Synchronisation Deadlocks. v1.
BS1-E Betriebssysteme 1 SS 2016 Prof. Dr.-Ing. Hans-Georg Eßer Fachhochschule Südwestfalen Foliensatz E: Synchronisation Deadlocks v1.0, 2016/06/05 05.06.2016 Betriebssysteme 1, SS 2016, Hans-Georg Eßer
Softwarelö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]
Monitore. 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
Systeme 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
Prozeß 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
Verteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
Synchronisation in Java. Invisible Web
Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
Domä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
Synchronisation. Gliederung. Synchronisation. Einführung (1) Übersicht: 1. Einführung und Übersicht. 2. Prozesse und Threads. 3.
Gliederung 1. Einführung und Übersicht 2. Prozesse und Ths 3. Interrupts 4. Scheduling 5. 6. Interprozesskommunikation 7. Speicherverwaltung Cl. Schnörr / HM 1 Gliederung Cl. Schnörr / HM 2 Einführung
SEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
Objektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Ü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)
Betriebssystembau (BSB)
Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk [email protected] http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung
!"#$%"&''('#")" *+",$%"
4%/=>+$?/23@CB!"#$%"&''('#")" *+",$%"??4$!%% -./'01",$2345"$ 6%7890:.#+9;36%78906('7,()GH(G)'7!
Kapitel 4. Monitore und wechselseitiger Ausschluss
Seite 1 Kapitel 4 Monitore und wechselseitiger Ausschluss Prof. Dr. Rolf Hennicker 28.05.2015 4.1 Interferenzen Seite 2 Parallel ablaufende Prozesse können sich gegenseitig (störend) beeinflussen. Beispiel
Betriebssysteme. G: Parallele Prozesse. (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen)
Betriebssysteme G: Parallele Prozesse (Teil B: Klassische Problemstellungen, Mutual Exclusion, kritische Regionen) 1 Allgemeine Synchronisationsprobleme Wir verstehen ein BS als eine Menge von parallel
4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!
VO 182.711 Prüfung Betriebssysteme 8. November 2013 KNr. MNr. Zuname, Vorname Ges.)(100) 1.)(35) 2.)(20) 3.)(45) Zusatzblätter: Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! 1 Synchronisation
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Objektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
Grundlagen verteilter Systeme
Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)
Fachbericht zum Thema: Anforderungen an ein Datenbanksystem
Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank
Architektur Verteilter Systeme Teil 2: Prozesse und Threads
Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =
Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
Es kann maximal ein Prozess die Umladestelle benutzen.
SoSe 0 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung (Musterlösung) 0-06-0 bis 0-06-06 Aufgabe : Erzeuger/Verbraucher-Pattern Ein Getränkemarkt hat
Objektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.
040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl
Client-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
Programmieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
Einführung in PHP. (mit Aufgaben)
Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites
5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?
Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Einleitung 1 2 der nebenläufigen Programmierung WS 2011/12 Stand der Folien: 18. Oktober 2011 1 TIDS
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
Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.
Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
5. Abstrakte Klassen
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,
C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
icloud nicht neu, aber doch irgendwie anders
Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und
Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me
Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte
Professionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18
Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.
Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
Übung 8: Semaphore in Java (eigene Implementierung)
Übung 8: Semaphore in Java (eigene Implementierung) Ziel der Übung: Diese Übung dient dazu, eine eigene Implementierung einer Semaphore-Klasse in der Programmiersprache Java kennenzulernen. Anschließend
Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
Modellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
Zählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
Java Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
DOKUMENTATION VOGELZUCHT 2015 PLUS
DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Eine Anwendung mit InstantRails 1.7
Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen
SEMINAR Modifikation für die Nutzung des Community Builders
20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen
Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:
Einleitung Unter MacOS X hat Apple die Freigabe standardmäßig auf den "Public" Ordner eines Benutzers beschränkt. Mit SharePoints wird diese Beschränkung beseitigt. SharePoints erlaubt auch die Kontrolle
Einführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
Formular»Fragenkatalog BIM-Server«
Formular»Fragenkatalog BIM-Server«Um Ihnen so schnell wie möglich zu helfen, benötigen wir Ihre Mithilfe. Nur Sie vor Ort kennen Ihr Problem, und Ihre Installationsumgebung. Bitte füllen Sie dieses Dokument
Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
Tipps und Tricks zu Netop Vision und Vision Pro
Tipps und Tricks zu Netop Vision und Vision Pro Zulassen, filtern, sperren: Das Internet im Unterricht gezielt einsetzen Das Internet ist ein dynamisches Gebilde, das viel Potenzial für den Unterricht
Änderungsbeschreibung HWS32 SEPA Überweisungen
Änderungsbeschreibung HWS32 SEPA Überweisungen Inhaltsverzeichnis SEPA ÜBERWEISUNGEN... 2 INSTALLATION... 2 ÄNDERUNGEN IN DER ADRESSVERWALTUNG... 4 ÄNDERUNGEN IM RECHNUNGSEINGANGSBUCH... 5 DIE ÜBERWEISUNGSPROGRAMME
U08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
Grundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
Computeria Solothurn
Computeria Solothurn Seniorinnen und Senioren entdecken den Computer und das Internet Sich mit «TeamViewer» von einem Supporter helfen lassen Diese Anleitung und die Illustrationen wurden unter Mac OS
Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
Bitte geben Sie hier den Benutzer cubusadmin und das gleichnamige Passwort ein.
Nach der Installation der können Sie den Dialog noch nicht gleich nutzen, sondern müssen erst mit einem Administrator-Tool mindestens eine Benutzergruppe und einen Benutzer einrichten. Hintergrund hierfür
Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze
Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit
Tutorial - www.root13.de
Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk
Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung
Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In
Informatik 1 Tutorial
ETH Zürich, D-INFK/D-BAUG Herbstsemester 2014 Dr. Martin Hirt Christian Badertscher Informatik 1 Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so
Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.
Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine
Wie halte ich Ordnung auf meiner Festplatte?
Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,
Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
www.computeria-olten.ch Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies
www.computeria-olten.ch Monatstreff für Menschen ab 50 Merkblatt 42 Temporäre Dateien / Browserverlauf löschen / Cookies Im Internet-Explorer Extras / Browserverlauf löschen Jetzt entscheiden, was man
Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten
Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während
OPERATIONEN AUF EINER DATENBANK
Einführung 1 OPERATIONEN AUF EINER DATENBANK Ein Benutzer stellt eine Anfrage: Die Benutzer einer Datenbank können meist sowohl interaktiv als auch über Anwendungen Anfragen an eine Datenbank stellen:
Anleitung für die Formularbearbeitung
1 Allgemeines Anleitung für die Formularbearbeitung Die hier hinterlegten Formulare sind mit der Version Adobe Acrobat 7.0 erstellt worden und im Adobe-PDF Format angelegt. Damit alle hinterlegten Funktionen
! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006
!"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst
Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt
Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen
Anleitung zur Erstellung einer Batchdatei. - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart -
Anleitung zur Erstellung einer Batchdatei - für das automatisierte Verbinden mit Netzlaufwerken beim Systemstart - Mögliche Anwendungen für Batchdateien: - Mit jedem Systemstart vordefinierte Netzlaufwerke
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und
Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER
Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit
Lizenzen auschecken. Was ist zu tun?
Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.
Prozessarchitektur einer Oracle-Instanz
6. Juni 2008 Inhaltsverzeichnis Oracle Instanz 1 Oracle Instanz 2 3 Redo Log Buffer Shared Pool Java Pool & Large Pool Oracle Instanz Eine Oracle-Instanz ist Hauptbestandteil des Oracle Datenbank Management
Lehrer: Einschreibemethoden
Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder
In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.
Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
Tag 4 Inhaltsverzeichnis
Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1 Normalformen Problematik
SharePoint Demonstration
SharePoint Demonstration Was zeigt die Demonstration? Diese Demonstration soll den modernen Zugriff auf Daten und Informationen veranschaulichen und zeigen welche Vorteile sich dadurch in der Zusammenarbeit
Übung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
Whitebox-Tests: Allgemeines
-Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv
14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt
14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...
