Foliensatz 5: Synchronisation. Hans-Georg Eßer, Hochschule München Betriebssysteme I, Sommersemester Folie 3. Foliensatz 5: Synchronisation

Größe: px
Ab Seite anzeigen:

Download "Foliensatz 5: Synchronisation. Hans-Georg Eßer, Hochschule München Betriebssysteme I, Sommersemester Folie 3. Foliensatz 5: Synchronisation"

Transkript

1 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff: port Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 20 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 02:00:01 amd64 /usr/sbin/cron[30103]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 20 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 12:46:44 amd64 sshd[6516]: Accepted rsa for esser from ::ffff: port Sep 20 12:46:44 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 12:48:41 amd64 sshd[6609]: Accepted rsa for esser from ::ffff: port Sep 20 12:54:44 amd64 sshd[6694]: Accepted rsa for esser from ::ffff: port Sep 20 15:27:35 amd64 sshd[9077]: Accepted rsa for esser from ::ffff: port Sep 20 15:27:35 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 16:37:11 amd64 sshd[10102]: Accepted rsa for esser from ::ffff: port Sep 20 16:37:11 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 16:38:10 amd64 sshd[10140]: Accepted rsa for esser from ::ffff: port Sep 21 01:00:01 amd64 /usr/sbin/cron[17055]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 21 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 02:00:01 amd64 /usr/sbin/cron[17878]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 21 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 17:43:26 amd64 sshd[31088]: Accepted rsa for esser from ::ffff: port Sep 21 17:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 17:53:39 amd64 sshd[31269]: Accepted rsa for esser from ::ffff: port Sep 21 18:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 19:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 01:00:01 amd64 /usr/sbin/cron[4674]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 22 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 02:00:01 amd64 /usr/sbin/cron[5499]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 22 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 20:23:21 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 01:00:01 amd64 /usr/sbin/cron[24739]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 23 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 02:00:01 amd64 /usr/sbin/cron[25555]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 23 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 18:04:05 amd64 sshd[6554]: Accepted publickey for esser from ::ffff: port ssh2 Sep 23 18:04:05 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 18:04:34 amd64 sshd[6606]: Accepted rsa for esser from ::ffff: port Sep 24 01:00:01 amd64 /usr/sbin/cron[12436]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 24 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 02:00:01 amd64 /usr/sbin/cron[13253]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 24 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 11:15:48 amd64 sshd[20998]: Accepted rsa for esser from ::ffff: port Sep 24 11:15:48 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 13:49:08 amd64 sshd[23197]: Accepted rsa for esser from ::ffff: port Sep 24 13:49:08 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 15:42:07 amd64 kernel: snd_seq_midi_event: unsupported module, tainting kernel. Sep 24 15:42:07 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 15:42:07 amd64 kernel: snd_seq_oss: unsupported module, tainting kernel. Sep 24 20:25:31 amd64 sshd[29399]: Accepted rsa for esser from ::ffff: port Sep 24 20:25:31 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 01:00:02 amd64 /usr/sbin/cron[662]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 25 01:00:02 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 02:00:01 amd64 /usr/sbin/cron[1484]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 25 02:00:02 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 10:59:25 amd64 sshd[8889]: Accepted rsa for esser from ::ffff: port Sep 25 10:59:25 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 10:59:47 amd64 sshd[8921]: Accepted rsa for esser from ::ffff: port Sep 25 11:30:02 amd64 sshd[9372]: Accepted rsa for esser from ::ffff: port Sep 25 11:59:25 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 14:05:37 amd64 sshd[11554]: Accepted rsa for esser from ::ffff: port Sep 25 14:05:37 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 14:06:10 amd64 sshd[11586]: Accepted rsa for esser from ::ffff: port Sep 25 14:07:17 amd64 sshd[11608]: Accepted rsa for esser from ::ffff: port Sep 25 14:08:33 amd64 sshd[11630]: Accepted rsa for esser from ::ffff: port Sep 25 15:25:33 amd64 sshd[12930]: Accepted rsa for esser from ::ffff: port Folie 3 Folie 2 Folie 4

2 erhoehe_zaehler() Folie 5 Folie 7 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 Folie 6 Folie 8

3 read(command) f=open("/tmp/script","w") write(f,command) f.close() chmod("/tmp/script","a+x") system("/tmp/script") Folie 9 Folie 11 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); ; Folie 10 Folie 12

4 Folie 13 Folie 15 while ( lock ) { /* warten */ ; lock=true; kritischer_bereich(); lock=false; Folie 14 Folie 16

5 Folie 17 while (true) { while (true) { C1=true; C2=true; while (C2) { while (C1) { if (turn!= 1) { if (turn!= 2) { C1=false; C2=false; while (turn!= 1) { while (turn!= 2) { /* wait */ /* wait */ ; ; C1=true; C2=true; ; ; ; ; kritischer_bereich(); kritischer_bereich(); turn=2; turn=1; C1=false; C2=false; Folie 19 while (true) { while (true) { C1=true; C2=true; while (C2) { while (C1) { /* wait */ /* wait */ ; ; kritischer_bereich(); kritischer_bereich(); C1=false; C2=false; C1=true; C2=true; turn=2; turn=1; while (C2 && turn==2) while (C1 && turn==1) /* warten */; /* warten */; kritischer_abschnitt(); kritischer_abschnitt(); C1=false; C2=false; Folie 18 Folie 20

6 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 ret ; 0 in flag speichern: Lock freigeben Folie 21 Folie 23 Folie 22 Folie 24

7 nächste Schreib-Position Folie 25 nächste Lese-Position Folie 27 Folie 26 Folie 28

8 Folie 29 Folie 31 #define N 100 int count = 0; // Anzahl der Plätze im Puffer // Anzahl der belegten Plätze im Puffer producer () { while (TRUE) { // Endlosschleife produce_item (item); // Erzeuge etwas für den Puffer if (count == N) sleep(); // Wenn Puffer voll: schlafen legen enter_item (item); // In den Puffer einstellen count = count + 1; // Zahl der belegten Plätze inkrementieren if (count == 1) wake(consumer); // 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 Folie 30 VERBRAUCHER n=read(count); /* n=0 */ sleep(); ERZEUGER.. produce_item(); n=read(count); /* n=0 */ n=n+1; write(n,count); wake(verbraucher);.... Folie 32

9 wait (&sem); /* Code, der die Ressource nutzt */ signal (&sem); Folie 33 Folie 35 Folie 34 Folie 36

10 wait (sem) { if (sem>0) sem--; else BLOCK_CALLER; wait (sem) { if (sem<1) BLOCK_CALLER; sem--; signal (sem) { if (P in QUEUE(sem)) { wakeup (P); remove (P, QUEUE); else sem++; signal (sem) { if (P in QUEUE(sem)) { wakeup (P); remove (P, QUEUE); sem++; 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; Folie 37 Folie 39 Folie 38 Folie 40

11 Folie 41 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); // 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 consumer() { while (TRUE) { // Endlosschleife wait (full); // Belegte Plätze dekrementieren bzw. blockieren wait (mutex); // Eintritt in den kritischen Bereich remove_item(item); // Aus dem Puffer entnehmen signal (mutex); // Kritischen Bereich verlassen signal (empty); // Freie Plätze erhöhen, evtl. producer wecken consume_entry (item); // Verbrauchen Folie 43 Folie 42 Folie 44

12 Folie 45 mutex disk_access = 1; monitor disk { entry read (diskaddr, memaddr) { // Daten von der Platte lesen ; entry write (diskaddr, memaddr) { // Daten auf die Platte schreiben ; init () { // Gerät initialisieren ; ; wait (disk_access); // Daten von der Platte lesen signal (disk_access); wait (disk_access); // Daten auf die Platte schreiben signal (disk_access); disk.read (da, ma); disk.write (da, ma); Folie krit_1(); krit_1();... entry funktion () { void funktion () { /* Code */ wait (m_disk); /* Code */ signal (m_disk); disk.funktion(); funktion(); Folie 46 Folie 48

13 Folie 49 f() m_wait(cv) g() m_signal(cv) Zeit Folie 51 Folie 50 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(); Folie 52

14 Erzeuger- Verbraucher- Problem mit Monitor Quelle: Prof. Scheidig, Univ. Saarbrücken, WS0607/Vorlesung_Betriebssysteme/ - angepasst an C-artige Syntax 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 Folie 53 Quelle: ConcProgJava/Monitors/bbse.java 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; Folie 55 Folie 54 Folie 56

15 send (destination, &message); receive (source, &message); Folie 57 Folie 59 Folie 58 Folie 60

16 Folie 61 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff: port Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 20 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 02:00:01 amd64 /usr/sbin/cron[30103]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 20 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 12:46:44 amd64 sshd[6516]: Accepted rsa for esser from ::ffff: port Sep 20 12:46:44 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 12:48:41 amd64 sshd[6609]: Accepted rsa for esser from ::ffff: port Sep 20 12:54:44 amd64 sshd[6694]: Accepted rsa for esser from ::ffff: port Sep 20 15:27:35 amd64 sshd[9077]: Accepted rsa for esser from ::ffff: port Sep 20 15:27:35 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 16:37:11 amd64 sshd[10102]: Accepted rsa for esser from ::ffff: port Sep 20 16:37:11 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 16:38:10 amd64 sshd[10140]: Accepted rsa for esser from ::ffff: port Sep 21 01:00:01 amd64 /usr/sbin/cron[17055]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 21 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 02:00:01 amd64 /usr/sbin/cron[17878]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 21 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 17:43:26 amd64 sshd[31088]: Accepted rsa for esser from ::ffff: port Sep 21 17:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 17:53:39 amd64 sshd[31269]: Accepted rsa for esser from ::ffff: port Sep 21 18:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 19:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 01:00:01 amd64 /usr/sbin/cron[4674]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 22 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 02:00:01 amd64 /usr/sbin/cron[5499]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 22 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 20:23:21 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 01:00:01 amd64 /usr/sbin/cron[24739]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 23 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 02:00:01 amd64 /usr/sbin/cron[25555]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 23 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 18:04:05 amd64 sshd[6554]: Accepted publickey for esser from ::ffff: port ssh2 Sep 23 18:04:05 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 18:04:34 amd64 sshd[6606]: Accepted rsa for esser from ::ffff: port Sep 24 01:00:01 amd64 /usr/sbin/cron[12436]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 24 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 02:00:01 amd64 /usr/sbin/cron[13253]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 24 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 11:15:48 amd64 sshd[20998]: Accepted rsa for esser from ::ffff: port Sep 24 11:15:48 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 13:49:08 amd64 sshd[23197]: Accepted rsa for esser from ::ffff: port Sep 24 13:49:08 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 15:42:07 amd64 kernel: snd_seq_midi_event: unsupported module, tainting kernel. Sep 24 15:42:07 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 15:42:07 amd64 kernel: snd_seq_oss: unsupported module, tainting kernel. Sep 24 20:25:31 amd64 sshd[29399]: Accepted rsa for esser from ::ffff: port Sep 24 20:25:31 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 01:00:02 amd64 /usr/sbin/cron[662]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 25 01:00:02 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 02:00:01 amd64 /usr/sbin/cron[1484]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 25 02:00:02 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 10:59:25 amd64 sshd[8889]: Accepted rsa for esser from ::ffff: port Sep 25 10:59:25 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 10:59:47 amd64 sshd[8921]: Accepted rsa for esser from ::ffff: port Sep 25 11:30:02 amd64 sshd[9372]: Accepted rsa for esser from ::ffff: port Sep 25 11:59:25 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 14:05:37 amd64 sshd[11554]: Accepted rsa for esser from ::ffff: port Sep 25 14:05:37 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 14:06:10 amd64 sshd[11586]: Accepted rsa for esser from ::ffff: port Sep 25 14:07:17 amd64 sshd[11608]: Accepted rsa for esser from ::ffff: port Sep 25 14:08:33 amd64 sshd[11630]: Accepted rsa for esser from ::ffff: port Sep 25 15:25:33 amd64 sshd[12930]: Accepted rsa for esser from ::ffff: port void funktion (int id) { int otherid = 1 id; char message[10] = ""; // ein Prozess darf zuerst; ID 0 if (id==0) { message = "go"; // unkritische Befehle while message!= "go" { receive (otherid, &message); // kritischer Bereich send (otherid, "go"); message = ""; // mehr unkritische Befehle Folie 62 Folie 64

17 Folie 65 Folie 67 Folie 66 Folie 68

18 spinlock_t xy_lock = SPIN_LOCK_UNLOCKED unsigned long flags; spin_lock_irqsave (&xy_lock, flags); /* kritischer Abschnitt */ spin_unlock_irqrestore (&xy_lock, flags); Folie 69 Folie 71 spinlock_t xy_lock = SPIN_LOCK_UNLOCKED spin_lock (&xy_lock); /* kritischer Abschnitt */ spin_unlock (&xy_lock); Folie 70 spinlock_t xy_lock = SPIN_LOCK_UNLOCKED spin_lock_irq (&xy_lock); /* kritischer Abschnitt */ spin_unlock_irq (&xy_lock); Folie 72

19 read_lock(&lck) write_lock(&lck) if ( spin_try_lock (&xy_lock) ) { /* kritischer Abschnitt */ spin_unlock (&xy_lock); else { /* durfte nicht in den kritischen Abschnitt */ Folie 73 Folie 75 rwlock_t xy_rwlock = RW_LOCK_UNLOCKED; read_lock (&xy_rwlock) ) { /* kritischer Abschnitt, read-only */ read_unlock (&xy_rwlock); write_lock (&xy_rwlock) ) { /* kritischer Abschnitt, read & write */ write_unlock (&xy_rwlock); Folie 74 Folie 76

20 Folie 77 Folie 79 static DECLARE_SEMAPHORE_GENERIC (name, count); static DECLARE_MUTEX (name); /* count=1 */ sema_init (&sem,count); init_mutex (&sem); /* count=1 */ down (&sem); /* kritischer Abschnitt */ up (&sem); Folie 78 /* Auszug aus /usr/src/linux/kernel/printk.c */ if (!down_trylock(&console_sem)) { console_locked = 1; /* * We own the drivers. We can drop the spinlock and let * release_console_sem() print the text */ spin_unlock_irqrestore(&logbuf_lock, flags); console_may_schedule = 0; release_console_sem(); /* Funktion release_console_sem() führt up(&console_sem); aus */ else { /* * Someone else owns the drivers. We drop the spinlock, which * allows the semaphore holder to proceed and to call the * console drivers with the output which we just produced. */ spin_unlock_irqrestore(&logbuf_lock, flags); Folie 80

21 static DECLARE_RWSEM (name); init_rwsem (&sem); Folie 81 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff: port Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 20 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 02:00:01 amd64 /usr/sbin/cron[30103]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 20 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 12:46:44 amd64 sshd[6516]: Accepted rsa for esser from ::ffff: port Sep 20 12:46:44 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 12:48:41 amd64 sshd[6609]: Accepted rsa for esser from ::ffff: port Sep 20 12:54:44 amd64 sshd[6694]: Accepted rsa for esser from ::ffff: port Sep 20 15:27:35 amd64 sshd[9077]: Accepted rsa for esser from ::ffff: port Sep 20 15:27:35 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 16:37:11 amd64 sshd[10102]: Accepted rsa for esser from ::ffff: port Sep 20 16:37:11 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 16:38:10 amd64 sshd[10140]: Accepted rsa for esser from ::ffff: port Sep 21 01:00:01 amd64 /usr/sbin/cron[17055]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 21 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 02:00:01 amd64 /usr/sbin/cron[17878]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 21 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 17:43:26 amd64 sshd[31088]: Accepted rsa for esser from ::ffff: port Sep 21 17:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 17:53:39 amd64 sshd[31269]: Accepted rsa for esser from ::ffff: port Sep 21 18:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 21 19:43:26 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 01:00:01 amd64 /usr/sbin/cron[4674]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 22 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 02:00:01 amd64 /usr/sbin/cron[5499]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 22 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 22 20:23:21 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 01:00:01 amd64 /usr/sbin/cron[24739]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 23 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 02:00:01 amd64 /usr/sbin/cron[25555]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 23 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 18:04:05 amd64 sshd[6554]: Accepted publickey for esser from ::ffff: port ssh2 Sep 23 18:04:05 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 23 18:04:34 amd64 sshd[6606]: Accepted rsa for esser from ::ffff: port Sep 24 01:00:01 amd64 /usr/sbin/cron[12436]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 24 01:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 02:00:01 amd64 /usr/sbin/cron[13253]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 24 02:00:01 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 11:15:48 amd64 sshd[20998]: Accepted rsa for esser from ::ffff: port Sep 24 11:15:48 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 13:49:08 amd64 sshd[23197]: Accepted rsa for esser from ::ffff: port Sep 24 13:49:08 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 15:42:07 amd64 kernel: snd_seq_midi_event: unsupported module, tainting kernel. Sep 24 15:42:07 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 24 15:42:07 amd64 kernel: snd_seq_oss: unsupported module, tainting kernel. Sep 24 20:25:31 amd64 sshd[29399]: Accepted rsa for esser from ::ffff: port Sep 24 20:25:31 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 01:00:02 amd64 /usr/sbin/cron[662]: (root) CMD (/sbin/evlogmgr -c "severity=debug") Sep 25 01:00:02 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 02:00:01 amd64 /usr/sbin/cron[1484]: (root) CMD (/sbin/evlogmgr -c 'age > "30d"') Sep 25 02:00:02 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 10:59:25 amd64 sshd[8889]: Accepted rsa for esser from ::ffff: port Sep 25 10:59:25 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 10:59:47 amd64 sshd[8921]: Accepted rsa for esser from ::ffff: port Sep 25 11:30:02 amd64 sshd[9372]: Accepted rsa for esser from ::ffff: port Sep 25 11:59:25 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 14:05:37 amd64 sshd[11554]: Accepted rsa for esser from ::ffff: port Sep 25 14:05:37 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 25 14:06:10 amd64 sshd[11586]: Accepted rsa for esser from ::ffff: port Sep 25 14:07:17 amd64 sshd[11608]: Accepted rsa for esser from ::ffff: port Sep 25 14:08:33 amd64 sshd[11630]: Accepted rsa for esser from ::ffff: port Sep 25 15:25:33 amd64 sshd[12930]: Accepted rsa for esser from ::ffff: port static DECLARE_RWSEM (xy_rwsem); down_read (&xy_rwsem) ) { /* kritischer Abschnitt, read-only */ up_read (&xy_rwsem); down_write (&xy_rwsem) ) { /* kritischer Abschnitt, lesen und schreiben */ up_write (&xy_rwsem); down_read(&sem) down_write(&sem) Folie 82 Folie 84

22 Folie 85 Folie 87 Folie 86 Folie 88

23 Q: wagen_4 () { lock(b); lock(c); go(); unlock(b); unlock(c); wagen_3 () { lock(a); lock(b); go(); unlock(a); unlock(b); wagen_1 () { lock(c); lock(d); go(); unlock(c); unlock(d); wagen_2 () { lock(d); lock(a); go(); unlock(d); unlock(a); lock (B); lock (A); /* krit. Bereich */ unlock (B); unlock (A); unlock(a) unlock(b) lock(a) lock(b) Folie 89 Folie 91 lock (A); lock (B); /* krit. Bereich */ unlock (A); unlock (B); lock (B); lock (A); /* krit. Bereich */ unlock (B); unlock (A); Programmverzahnungen, die zwangsläufig in den Deadlock führen: oberer roter Weg: Q: lock(b) P: lock(a) unterer roter Weg: P: lock(a) Q: lock(b) Folie 90 Folie 92

24 lock (A); /* krit. Bereich */ unlock (A); lock (B); /* krit. Bereich */ unlock (B); lock (B); lock (A); /* krit. Bereich */ unlock (B); unlock (A); Folie 93 Folie 95 Q: lock (B); lock (A); /* krit. Bereich */ unlock (B); unlock (A); unlock(a) unlock(b) lock(a) lock(b) Folie 94 Folie 96

25 Folie 97 Folie 99 Folie 98 Folie 100

26 Folie 101 Folie 103 Folie 102 Folie 104

27 Folie 105 Folie 107 Folie 106 Folie 108

28 Folie 109 Folie 111 Folie 110 Folie 112

29 Folie 113 Folie 115 Folie 114 Folie 116

30 Folie 117 Folie 119 Folie 118 Folie 120

31 1 E = ( ) C' = A' = ( ) R' = E = ( ) C' = A' = ( ) R' = E = ( ) C' = A' = ( ) R' = E = ( ) C' = A' = ( ) R' = Folie E = ( ) C' = R' = A' = ( ) E = ( ) C' = A' = ( ) R' = Folie 123 C = E = ( ) => A = ( ) Max = C' = E = ( ) => A' = ( ) R' = R=Max-C = Folie 122 Folie 124

32 Folie 125 Folie 127 Folie 126 lock (S); lock (R); Folie 128

33 Folie 129

Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS Synchronisation (1) Folie 3

Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS Synchronisation (1) Folie 3 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

#define N 5 // Anzahl der Philosophen. while (TRUE) { // Der Philosoph denkt

#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)

Mehr

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret

leave: mov flag, 0 ; 0 in flag speichern: Lock freigeben ret 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

Betriebssysteme I SS 2008 Hans-Georg Eßer, Hochschule München Zusammenfassung Seite 1

Betriebssysteme I SS 2008 Hans-Georg Eßer, Hochschule München Zusammenfassung Seite 1 /home/esser/daten/dozent/hs-muenchen-2008/folien/bs-ss2008-esser-14.odp 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]:

Mehr

!"#$%"&''('#")" *+",$%"

!#$%&''('#) *+,$% 4%/=>+$?/23@CB!"#$%"&''('#")" *+",$%"??4$!%% -./'01",$2345"$ 6%7890:.#+9;36%78906('7,()GH(G)'7!

Mehr

Betriebssysteme Theorie

Betriebssysteme Theorie Betriebssysteme Theorie SS 2011 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz D (05.05.2011) Synchronisation 05.05.2011 Betriebssysteme-Theorie, Hans-Georg Eßer Folie D-1 Einführung (1) Es gibt

Mehr

Hans-Georg Eßer, Hochschule München, Betriebssysteme I, SS Speicherverwaltung 1

Hans-Georg Eßer, Hochschule München, Betriebssysteme I, SS Speicherverwaltung 1 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

Threads. Foliensatz 8: Threads Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Threads. 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

9.3 Virtuelle FS Linux VFS Windows IFS 9.4 Dateizugriff in Linux-Programmen

9.3 Virtuelle FS Linux VFS Windows IFS 9.4 Dateizugriff in Linux-Programmen 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

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014

Projekt: Web-Server. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2014 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

Synchronisation. Gliederung. Synchronisation. Einführung (1) Übersicht: 1. Einführung und Übersicht. 2. Prozesse und Threads. 3.

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

Mehr

! ! !

! ! ! 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

Fortgeschrittene I/O

Fortgeschrittene I/O 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

fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4

fork () Hans-Georg Eßer, Hochschule München Betriebssysteme I, SS 2008 2. Prozesse (2/2) Folie 4 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]: SAS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

Betriebssystem-Entwicklung mit Literate Programming

Betriebssystem-Entwicklung mit Literate Programming Betriebssystem-Entwicklung mit Literate Programming Wintersemester 2015/16 Dr. Hans-Georg Eßer v1.2, 04.10.2015 http://ohm.hgesser.de/ Folie 1 Hans-Georg Eßer Dipl.-Math. (RWTH Aachen, 1997) Dipl.-Inform.

Mehr

.... pid = fork(); if ( pid

Mehr

Betriebssysteme I. Hochschule München Fakultät für Informatik und Mathematik Sommersemester Hans-Georg Eßer

Betriebssysteme I. Hochschule München Fakultät für Informatik und Mathematik Sommersemester Hans-Georg Eßer Betriebssysteme I Hochschule München Fakultät für Informatik und Mathematik Sommersemester 2011 Hans-Georg Eßer hans-georg.esser@hm.edu http://hm.hgesser.de/ Folie 1 Zur Vorlesung (1) Termine Betriebssysteme

Mehr

Infrastruktur und Betriebssysteme III. Martin Plümicke

Infrastruktur und Betriebssysteme III. Martin Plümicke Infrastruktur und Betriebssysteme III Martin Plümicke 25. Februar 2002 Inhaltsverzeichnis 1 Einführung in Betriebssysteme 3 2 Überblick 7 2.1 Systemkomponenten.................................. 7 2.1.1

Mehr

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Projekt: Web-Proxy. Foliensatz 9: Projekt 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

Verteilte Systeme CS5001

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,

Mehr

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss Maren Bennewitz Version 18.12.2013 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung,

Mehr

Foliensatz 2: Prozesse und Threads. Hans-Georg Eßer, Hochschule München Betriebssysteme I, Sommersemester Folie 3

Foliensatz 2: Prozesse und Threads. Hans-Georg Eßer, Hochschule München Betriebssysteme I, Sommersemester Folie 3 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

JJ Prozesse und Nebenläufigkeit

JJ Prozesse und Nebenläufigkeit 1 Wiederholung: Algorithmus von Peterson boolean ready0=false, ready1=false; int turn=0; JJ Prozesse und Nebenläufigkeit (Auszug aus der Vorlesung) while( 1 ) Prozess 0 ready0 = true; turn = 1; while(

Mehr

ggf. page fault virtuelle Adresse physikalische Adresse Hauptspeicher Seitenrahmen Register Seitentabelle logical address page number frame number

ggf. page fault virtuelle Adresse physikalische Adresse Hauptspeicher Seitenrahmen Register Seitentabelle logical address page number frame number Se 19 14:20:18 amd64 sshd[20494]: Acceted rsa or esser rom :::87.234.201.207 ort 61557 Se 19 14:27:41 amd64 syslog-ng[7653]: STATS: droed 0 Se 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root) CMD (/sbin/evlogmgr

Mehr

Verzeichnisse. Foliensatz 5: Dateien und Verzeichnisse Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Verzeichnisse. Foliensatz 5: Dateien und Verzeichnisse 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

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012

Ü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)

Mehr

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 5 Nebenläufigkeit und wechselseitiger Ausschluss Maren Bennewitz Version 12.12.2012 1 Nachtrag zu letzter Vorlesung Hauptspeicher reicht nur für begrenzte Anzahl von

Mehr

Betriebssysteme G: Parallele Prozesse ( Teil C: SpinLock, Semaphore, Monitore)

Betriebssysteme G: Parallele Prozesse ( Teil C: SpinLock, Semaphore, Monitore) Betriebssysteme G: Parallele Prozesse ( Teil C: SpinLock, Semaphore, Monitore) 1 Hardwareunterstützung Uniprozessor-System Verbiete Interrupts während des Aufenthalts in einer CR disable interrupt CR(bzw:

Mehr

Kritischer Abschnitt. Beispiel: Geld abbuchen. Problem: Wettläufe zwischen den Threads race conditions

Kritischer Abschnitt. Beispiel: Geld abbuchen. Problem: Wettläufe zwischen den Threads race conditions Beispiel: Geld abbuchen Kritischer Abschnitt Problem: Wettläufe zwischen den Threads race conditions Den Programmteil, in dem auf gemeinsamem Speicher gearbeitet wird, nennt man Kritischer Abschnitt int

Mehr

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Prof. Dr. Th. Letschert CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Vorlesung 7 Th Letschert FH Gießen-Friedberg Ressourcen Verwaltung passive Ressourcen aktive Ressourcen

Mehr

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert

Mehr

3. Interrupts. Betriebssysteme I Hochschule München Hans-Georg Eßer SS Foliensatz 3 Interrupts

3. Interrupts. Betriebssysteme I Hochschule München Hans-Georg Eßer SS Foliensatz 3 Interrupts 19 19 22 22 22 22 22 14::18 14:27:41 1::1 1::1 12:46:44 12:46:44 12:48:41 12:54:44 15:27:35 15:27:35 16:37:11 16:37:11 16:38:1 1::1 1::1 17:43:26 17:43:26 17:53:39 18:43:26 19:43:26 1::1 1::1 :: 1::1 1::1

Mehr

Softwarelösungen: Versuch 4

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]

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Die Anweisungen zweier Prozesse werden parallel bearbeitet, wenn die Anweisungen unabhängig voneinander zur gleichen Zeit ausgeführt werden.

Die 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

Mehr

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger Netzwerk - Programmierung Threads Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Jan Krüger jkrueger@cebitec.uni-bielefeld.de Übersicht Probleme mit fork Threads Perl threads API Shared Data Mutexes

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation 09.05.15 1 Literatur [6-1] http://php.net/manual/de/book.sockets.php [6-2] http://de.wikipedia.org/wiki/socket_(software) [6-3] http://php.net/manual/de/book.network.php

Mehr

Betriebssysteme BS-H WS 2014/15. Hans-Georg Eßer. Foliensatz H: Zusammenfassung. Dipl.-Math., Dipl.-Inform. v1.0, 2015/01/10

Betriebssysteme BS-H WS 2014/15. Hans-Georg Eßer. Foliensatz H: Zusammenfassung. Dipl.-Math., Dipl.-Inform. v1.0, 2015/01/10 BS-H Betriebssysteme WS 2014/15 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz H: Zusammenfassung v1.0, 2015/01/10 10.01.2015 Betriebssysteme, WS 2014/15, Hans-Georg Eßer Folie H-1 Übersicht: BS

Mehr

Nebenläufigkeit mit Java

Nebenläufigkeit mit Java Nebenläufigkeit mit Java Einheit 03: Synchronisation Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Synchronisation von Threads Locks Java Monitor-Konzept Lock Freigabe Zusammenspiel

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Betriebssysteme 2013/2014

Betriebssysteme 2013/2014 Betriebssysteme 2013/2014 Synchronisation 2. Oktober 2013 1/98 Gleichzeitigkeit Moderne Computer machen mehrere Dinge gleichzeitig - Multithreading Beispiel: Textverarbeitung Benutzereingaben verarbeiten

Mehr

3.2 Prozessumschaltung

3.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,

Mehr

Operating Systems Principles C11

Operating Systems Principles C11 Humboldt University Computer Science Department Operating Systems Principles C11 Lab 0 - Auswertung Make Das Unix-Tool make bietet die Möglichkeit mehrere, voneinander unabhängige Jobs (z.b. das Übersetzen

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Nebenläufige und verteilte Programme CS2301

Nebenläufige und verteilte Programme CS2301 Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Netze mit aktiven und reaktiven Knoten Produzent Konsument: aktiv / passiv / reaktiv

Mehr

Foliensatz 3: System Calls Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Foliensatz 3: System Calls 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

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 28 Kritische Bereiche bei Threads Deadlocks Conditions/Semaphore 2 / 28 Beispiel aus der letzten Vorlesung

Mehr

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer Kapitel 4.1 bis 4.3 1. zu bearbeitende Aufgaben: 4.1 4.1: done 2. Was verstehen Sie unter einem "Java-Package"? Erweiterungen verschiedener Klassen welche in Java benutzt werden können. 3. Sie möchten

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Versuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3.

Versuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3. Hochschule Harz 3. Labor Threads FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem Versuchsziele Vertiefung im Verständnis der Thread- und Semaphor-Programmierung. Grundlagen

Mehr

Betriebssysteme Teil 11: Interprozess-Kommunikation

Betriebssysteme Teil 11: Interprozess-Kommunikation Betriebssysteme Teil 11: Interprozess-Kommunikation 19.12.15 1 Übersicht Grundbegriffe Shared Memory Pipelines Messages Ports Sockets 2 Grundbegriffe Interprocess-Kommunikation = Austausch von Daten über

Mehr

Parallele Prozesse. Prozeß wartet

Parallele 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:

Mehr

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen Kommunikationsnetze Gliederung 1. Socket-Programmierung unter C 2. Socket-Programmierung unter Java Gliederung Berkeley Sockets (Erste freie TCP/IP-Implementierung in Berkeley UNIX): SOCKET: Erzeugen eines

Mehr

Angewandte IT-Sicherheit

Angewandte IT-Sicherheit Angewandte IT-Sicherheit Johannes Stüttgen Lehrstuhl für praktische Informatik I 30.11.2010 Lehrstuhl für praktische Informatik I Angewandte IT-Sicherheit 1 / 28 Aufgabe 1 Betrachten sie folgendes Programm:

Mehr

Prozeßverwaltung. die Prozeßtabelle enthält die Prozeßleitblöcke

Prozeßverwaltung. die Prozeßtabelle enthält die Prozeßleitblöcke Prozeßverwaltung Komponente eines Betriebssystems, die für die Zuteilung von Betriebsmitteln an wartende Prozesse zuständig ist alle für die Prozeßverwaltung ( process management ) wichtigen Informationen

Mehr

Das Monitorkonzept Brinch-Hansen

Das Monitorkonzept Brinch-Hansen Das Monitorkonzept (nach Hoare/Brinch Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger Ausschluss, mutual exclusion. Geschützte

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung 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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

11: Echtzeitbetriebssystem ucos-ii

11: Echtzeitbetriebssystem ucos-ii 11: Echtzeitbetriebssystem ucos-ii Sie lernen anhand aufeinander aufbauender Übungen, welche Möglichkeiten ein Echtzeitbetriebssystem wie das ucosii bietet und wie sich damit MC-Applikationen realisieren

Mehr

Prozesse und Threads. wissen leben WWU Münster

Prozesse und Threads. wissen leben WWU Münster Münster Multi Threading in C++ 1 /19 Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message

Mehr

2. Aufgabenblatt Threads

2. 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

Mehr

Speicherverwaltung. Foliensatz 7: Speicherverwaltung Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2013

Speicherverwaltung. Foliensatz 7: Speicherverwaltung Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2013 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

Verbessertes Konzept: Monitore

Verbessertes Konzept: Monitore Verbessertes Konzept: Monitore Ein Nachteil von Semaphoren ist die Notwendigkeit zur expliziten Anforderung P und Freigabe V des kritischen Bereiches durch den Programmierer Vergißt der Entwickler z.b.

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 11 F. Forster,

Mehr

HelvePic32 Breadboard. Internet Data Logger

HelvePic32 Breadboard. Internet Data Logger 2016/04/03 21:14 1/10 HelvePic32 Breadboard Alle Beispiele, welche beim Helvepic32 angegeben sind, können unverändert natürlich auch beim HelvePic32 Breadboard verwendet werden. Daher nutzen wir die Gelegenheit,

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus

Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus 2. November 2012 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

Mehr

Betriebssysteme (BTS)

Betriebssysteme (BTS) 13.Vorlesung Betriebssysteme (BTS) Christian Baun cray@unix-ag.uni-kl.de Hochschule Mannheim Fakultät für Informatik Institut für Betriebssysteme 31.5.2007 Wiederholung vom letzten Mal Deadlocks und Verhungern

Mehr

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory

Mehr

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt Klassen und Objekte Klassen sind Vorlagen für Objekte. Objekte haben Attribute Konstruktoren Methoden Aus einer Klasse kann man beliebig viele Objekte herstellen. Attribute bestimmen die Eigenschaften

Mehr

Synchrone Botschaften

Synchrone Botschaften Synchrone Botschaften PPJ-84 Prozesse kommunizieren und synchronisieren sich direkt miteinander, bzw. über Kanäle, die höchstens eine Botschaft aufnehmen. Operationen: send (b): receive (v): blockiert

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

7.0 Arbeiten mit Objekten und Klassen

7.0 Arbeiten mit Objekten und Klassen 252-0027 Einführung in die Programmierung I 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013. and Thomas Gross 2016 All rights reserved.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for

Mehr

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Thread-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

Mehr

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore. Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung

Mehr

Standardkonstrukte in Java

Standardkonstrukte in Java Robert Buchholz, Sven Schneider JavaKurs 2006 1. Tag Freitagsrunde / Tutoren 03. April 2006 Was lernen wir heute noch kennen? 1 Methoden Definition einer Methode Aufruf einer Methode 2 Datenstruktur Array

Mehr

Synchronisation in Java. Invisible Web

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

Mehr

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 4213 Variablen 17.834 float Flugzeug 36812736294 I write code Hund long String Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 3 + 4 1 Variablen sind wie Becher. Sie speichern etwas. // Variablen

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Programmier-Befehle - Woche 10

Programmier-Befehle - Woche 10 Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten

Mehr

Java I Vorlesung Nebenläufigkeit

Java I Vorlesung Nebenläufigkeit Java I Vorlesung 10 Nebenläufigkeit 28.6.2004 Threads Synchronisation Deadlocks Thread-Kommunikation Innere Klassen Anonyme Klassen Nebenläufigkeit http://java.sun.com/docs/books/tutorial/essential/threads/

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

class ListElement { int value; ListElement next; ListElement() { next=null; value=0;

class ListElement { int value; ListElement next; ListElement() { next=null; value=0; Listenimplementierung Übung 1, Aufgabe 4. c 2004 Evgeny Matusov, Thomas Deselaers Zunächst definieren wir die Basisklasse für die Listenelemente, die gleichzeitig einen Verweis auf weitere Listenelemente

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Klasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code

Klasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code Klasse Label class Label { Code code; List fixuplist; // code positions to patch int adr; // address of label in code // inserts offset to label at current void put (); // defines label to be

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance 5. November 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Repetition

Mehr

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P)

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P) Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 26.11. Foliensatz 5 Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren

Mehr

7.1 Gegenseitiger Ausschluss. 7.1 Gegenseitiger Ausschluss (3) 7.1 Gegenseitiger Ausschluss (3) 7.1 Gegenseitiger Ausschluss (2) Semaphor

7.1 Gegenseitiger Ausschluss. 7.1 Gegenseitiger Ausschluss (3) 7.1 Gegenseitiger Ausschluss (3) 7.1 Gegenseitiger Ausschluss (2) Semaphor 7.1 Gegenseitiger Ausschluss 7.1 Gegenseitiger Ausschluss (3) Semaphor eigentlich reicht ein Semaphor mit zwei Zuständen: binärer Semaphor void P( int *s ) { while( *s == 0 ); *s= 0; atomare Funktion Problem

Mehr

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic THE GO PROGRAMMING LANGUAGE Part 1: Michael Karnutsch & Marko Sulejic Gliederung Geschichte / Motivation Compiler Formatierung, Semikolons Variablen, eigene Typen Kontrollstrukturen Funktionen, Methoden

Mehr

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt

Mehr

Vorlesung Informatik II

Vorlesung 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

Mehr

Monitore. Klicken bearbeiten

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

Mehr