Übung zu Grundlagen der Betriebssysteme. 9. Übung

Größe: px
Ab Seite anzeigen:

Download "Übung zu Grundlagen der Betriebssysteme. 9. Übung 11.12.2012"

Transkript

1 Übung zu Grundlagen der Betriebssysteme 9. Übung

2 Wechselseitiger Ausschluss Wechselseitiger Ausschluss: 1) Softwareansätze Dekker-Algorithmus Peterson-Algorithmus 2) Unterstützung durch Hardware Interrupt-Sperrung Spezielle Maschinenbefehle 3) Semaphore 4) Monitore

3 Wechselseitiger Ausschluss Wechselseitiger Ausschluss: 1) Softwareansätze Dekker-Algorithmus komplexe Programmierung Peterson-Algorithmus Verhungern ist möglich P1 P2 aktives Warten

4 Wechselseitiger Ausschluss 2) Unterstützung durch Hardware Interrupt-Sperrung while(true){ Funktioniert nur mit Einprozessorrechner Verhungern ist möglich /* Interrupts sperren */ /* kritischer Abschnitt*/ /* Interrupts freischalten */ /* sonstiges */ Prozessor wird eingeschränkt die Prozesse im Wec Spezielle Maschinenbefehle single atomic (non-interruptable) Auf Hardwareebene wird der Zugriff auf eine Speicherstelle verhindert, wenn bereits Zugriff auf diese Speicherstelle erfolgt. zwei Aktionen auf einer einzelnen Speicherzelle werden atomar und nur mit einem Befehlszyklus durchgeführt. (z.b.: Lesen+Schreiben, Lesen+Prüfen) test-and-set compare-and-swap aktives Warten Verhungern ist möglich es kann trotzdem noch zu Verklemmungen kommen

5 Wechselseitiger Ausschluss 3) Semaphore Zeichenträger bestehen im wesentlichen aus: - einer Zählvariable (COUNT), - Warteschlange für Prozesse, - Mechanismus des Schlafens und Aufweckens (DOWN oder P(); UP oder V()).

6 Wechselseitiger Ausschluss 3) Semaphore COUNT => gibt Wert des Semaphors an. = 0 kein Wecksignal ist zu berücksichtigen DOWN => P()-Operation Verallgemeinerung von sleep() atomare Aktion wenn COUNT > 0 wird um 1 verringert. wenn COUNT = 0 ausführender Prozess wird schlafen gelegt UP => V()-Operation Verallgemeinerung von wakup() atomare Aktion falls es schlafende Prozess gibt, wird einer ausgewählt und dessen DOWN- Operation beendet

7 Wechselseitiger Ausschluss UNIX/Linux C-Bibliotheken für Semaphore: Unter Unix/Linux gibt es zwei verschiedene System-Bibliotheken für Semaphore: POSIX und System V. Beide haben die selbe Funktion: den wechselseitigen Ausschluss ermöglichen. Die System V Variante wird von älteren Unix-basierten Systemen unterstützt. Diese Variante ist etwas komplizierter zu implementieren. Man findet Sie aber häufig in Code-Beispielen in denen mehrere Prozesse (fork) auf einen kritischen Bereich zugreifen. Aktuelle Linux-Systeme unterstützen normalerweise POSIX und System V Bibliotheken. Die POSIX-Bibliothek wird häufig in Code-Beispielen verwendet, in denen mehrere Threads eines Prozesses auf einen krititschen Bereich zugreifen wollen.

8 Wechselseitiger Ausschluss UNIX/Linux System-Bibliotheken für Semaphore: Bsp. System V Semaphor sharedmemsemsysv.c (man semget, man semop, ) #include <sys/sem.h> semget legt eine neue Semaphorengruppe an oder greift auf eine bereits bestehende Gruppe zu. semop ändert die Werte der Semaphore einer Gruppe semctl führt verschiedene Steuerungsfunktionen auf Semaphoren durch

9 Wechselseitiger Ausschluss UNIX/Linux System-Bibliotheken für Semaphore: Bsp. POSIX Semaphor sharedmemsemposix.c (man sem_overview, man sem_open, man sem_init, ) sem_t legt ein semaphor an #include <semaphore.h> #include <fcntl.h> sem_open (named semaphores) liefert einen systemweiten Semaphor zurück auf den mehrere Prozesse zugreifen können. sem_init (unamed semaphores) initialisiert einen prozesseigenen Semaphor auf den die Threads eines Prozesses zugreifen können. sem_wait dekrementiert (lock) den übergebenen semaphor sem_post inkrementiert (unlock) den übergebenen Semaphor sem_destroy löscht unamed semaphores sem_close schließt named semaphores sem_unlink löscht unamed semaphores aus dem System

10 Shared Memory Systembefehle für Shared Memory #include <sys/shm.h> shmget (allocates shared memory) legt ein neues Segment an bzw. greift auf ein bestehendes Segment zu. shmat (shared memory attach) hängt ein Shared Memory-Segment an den Adressraum eines Prozesses an. shmdt (shared memory detach) entfernt ein Shared Memory-Segment aus dem Adressraum des aufrufenden Prozesses. shmctl (shared memory control) führt Steuerungsfunktionen auf einem Shared Memory-Segment durch.

11 Monitore Bisherige Synchronisationskonstrukte fordern die Einhaltung der Ablauffolge der Systembefehle. Systembefehle müssen an der richtigen Stelle im Programm stehen sonst Fehleranfällig Sichere Programmierung von Nebenläufigkeit erfordert, dass typische Entwurfsmusster erkannt werden und nach Möglichkeit höhere Bibliothekskonstrukte und Frameworks genutzt werden.

12 Monitore Monitore bestehen aus Prozeduren, Variablen und Datenstrukturen, die als Modul zusammengefasst sind und besitzen die folgenden Eigenschaften: Prozesse können Prozeduren des Monitors aufrufen, aber sie können nicht auf die interne Datenstruktur eines Monitors zugreifen. Nur ein Prozess kann zur selben Zeit in einem Monitor aktiv sein. Monitore sind Konstrukte einer Programmiersprache Höhere Synchronisationsmechanismen Compiler kann mit Monitorprozeduren umgehen und wechselseitigen Ausschluss garantieren! Programmierer muss dafür sorgen das kritische Bereiche in Monitorprozeduren eingebettet sind.

13 Monitore Ein Java-Monitor ist ein Objekt, das einerseits mittels einer Sperre (lock) den Schutz kritischer Gebiete ermöglicht, und andererseits über eine oder mehrere Wartelisten das Warten auf Bedingungen (condition) ermöglicht. Das Warten auf eine Bedingung ist im Monitor immer mit der Sperre koordiniert: Während des wartens wird die Sperre freigegeben und muss anschließend wieder erlangt werden. Synchronisationsprimitive in Java synchronized(monitorobject){ geschützter Bereich nur ein einziger Thread darf mit einem Monitorobjekt den mit synchronized geschützten Bereich betreten!

14 Monitore Ein wartender Thread, der aufgeweckt wurde ist noch nicht ausführungsbereit Er kann erst dann fortgesetzt werden, wenn die durch wait() abgegebene Sperre wieder verfügbar ist. Synchronisationsprimitive in Java synchronized(monitorobject){ geschützter Bereich Für das Warten auf Ereignisse definiert die Klasse Object die Methoden Wait, notify und notifyall obj.wait() die Sperre wird freigegeben und der Thread geht in einen Wartezustand obj.notify() weckt einen im Wartezustand befindlichen Thread (falls vorhanden) obj.notifyall() weckt alle Threads

15 Monitore

16 Monitore

17 Monitore Ein Java-Monitor ist ein Objekt, das einerseits mittels einer Sperre (lock) den Schutz kritischer Abschnitte ermöglicht, und andererseits über eine oder mehrere Wartelisten auf Bedingungen (condition) ermöglicht. Das Warten auf eine Bedingung ist im Monitor immer mit der Sperre koordiniert: Während des Wartens wird die Sperre freigegeben und muss anschließend wieder erlangt werden. public synchronized void put (E x) throws InterruptException while(data.size() == maxcount){ wait(); data.add(x) notifyall(); public synchronized E take throws InterruptException while(data.size() == 0){ wait(); notifyall(); data.remove(0)

18 Monitore wait( ): Suspendierung der Ausführung des aufrufenden Prozesses auf der Grundlage der gesetzten Bedingung. Der Montior steht anschließend anderen Prozessen zur Verfügung. send( ): Wiederaufnahme der Ausführung eines Prozesses, der im Anschluss an die Funktion wait() durch dieselbe Bedingung suspendiert wurde. Wenn es mehrere Prozesse dieser Art gibt, wird einer von ihnen ausgewählt. Gibt es hingegen keinen derartigen Prozess, dann wird nichts unternommen.

19 Monitore wait(); Wenn ein Thread für irgendein Objekt x die Methode wait x.wait () aufruft, dann wird er in eine dem Objekt x zugeordnete wait-warteschlange gestellt (wait Set). Außerdem wird der kritische Bereich freigegeben, d.h. der Thread gibt sein Lock auf das Objekt x ab (d.h. der Monitor wird verlassen). notify(); Wenn ein anderer Thread x.notify () aufruft, dann wird ein Thread aus der wait- Warteschlange von x entfernt und wieder lauffähig. Dieser Thread muss sich aber nun um ein Lock für das Objekt x bemühen, um den kritischen Bereich weiter zu durchlaufen. Er muss also mindestens solange warten, bis der notifizierende Thread das Objekt freigegeben hat (d.h. den Monitor verlassen hat). (Bemerkung: Mit der Thread-Instanzmethode interrupt () kann ein spezifischer Thread aus der wait- Warteschlange geholt werden, wobei allerdings die InterruptedException geworfen wird.

20 Monitore notifyall (); Es werden alle Threads aus der wait-warteschlange von x entfernt und wieder lauffähig. Diese Threads müssen sich aber nun um ein Lock für das Objekt x bemühen, um den kritischen Bereich weiter zu durchlaufen. Ein Objekt mit kritischen Bereichen hat also konzeptionell zwei Warteschlangen: eine für den Monitor (d.h. die kritischen Bereiche) (Entry Set) und eine für das wait (Wait Set).

21 Monitore Unterscheidung wait()/send() des Monitorkonzeptes zu P(s)/V(s) des Semaphore-Konzeptes: Ein Monitor unterstützt die Synchronisierung durch die Verwendung von Bedingungsvariablen, die im Monitor enthalten sind und auf die nur von Methoden innerhalb des Monitors zugegriffen werden kann. die beiden Funktionen wait() und send() wirken auf die Bedingungsvariablen. gibt ein Prozess im Monitor ein Signal (send()) ab, so geht das Signal verloren wenn es keine Aufgabe auf der Grundlage der Bedingungsvariable im Wartezustand gibt.

22 Monitore import java.util.arraylist: public class BlockingQueu<E>{ private final ArrayList<E> data = new ArrayList<E>(); private final int maxcount; public BlockingQueue(int maxcount){ this.maxcount = maxcount; public void put(e x) throws InterruptedException{ synchronized(this){ while (data.size() == maxcount) this.wait(); data.add(x); this.notifyall(); public E take() throws InterruptedException{ synchronized(this){ while(data.size==0) this.wait(); this.notifyall(); return data.remove();

23 Monitore import java.util.arraylist: public class BlockingQueu<E>{ private final ArrayList<E> data = new ArrayList<E>(); private final int maxcount; public BlockingQueue(int maxcount){ this.maxcount = maxcount; public synchronized void put(e x) throws InterruptedException{ while (data.size() == maxcount) wait(); data.add(x); notifyall(); public synchronized E take() throws InterruptedException{ while(data.size==0) wait(); notifyall(); return data.remove(); synchronized vor einer Methode erklärt die ganze Methode zum geschützten Bereich (kritisches Gebiet).

24 Monitore Nachbildung eines Original-Monitors mit Java Sprachregeln von Java erlauben es, Klassen zu schreiben, die exakt dem original Monitorkonzept entsprechen Folgende Regeln sind zu beachten: - Alle Instanzvariablen sind privat und nicht von außen zugänglich - Der Körper von allen öffentlichen Methoden ist mit dem this-objekt geschützt (synchronized) - Innerhalb einer Klasse werden nur this.wait() und this.notifyall() aufgerufen. Zusätzlich wird beim Warten innerhalb einer while-schleife das Vorliegender erwarteten Bedingung geprüft. Das Java-Programm auf der vorherigen Folie erfüllt all diesen Punkte!

25 Monitore nested Monitor verschachtelte Monitore void synchronized method(){ /* Anweisungen */ otherobject.synchronizedmethod(); /*weitere Anweisungen */

26 Monitore nested Monitor verschachtelte Monitore void synchronized method(){ /* Anweisungen */ otherobject.synchronizedmethod(); /*weitere Anweisungen */ Thread muss für Ausführung von synchronizedmethod() 2 Objektsperren erhalten Gefahr des Deadlocks Wartet synchronizedmethod() mittels wait(), dann wird zwar die Sperre von otherobject freigegeben, Die Sperre von method() wird von dem wartenden Thread aber festgehalten. Blockierung Bessere Lösung: void method(){ synchronized(this){ /* Anweisungen */ otherobject.synchronizedmethod(); synchronized(this){ /*weitere Anweisungen */

27 wechselseitiger Ausschluss in Java Concurrency-Bibliothek von Java! beinhaltet: einfache atomare Operationen auf Objekten Synchronisationsprimitive (Semaphore, Barrier, Read-Write-Lock, Reentrant-Lock) Mechanismen zur Erzeugung von Threads Mechanismen für die Steuerung der Thread-Bearbeitung - ähnelt der Umsetzung in POSIX-C Bibliothek - kann sehr genau an die jeweiligen Bedürfnisse angepasst werden import java.util.arraylist: Import java.util.concurrent.lock.*; public class BlockingQueu<E>{ private final ArrayList<E> data = new ArrayList<E>(); private final int maxcount; private Lock lock = new ReentrantLock(); private Condition notempty = lock.newcondition(); private Condition notfull = lock.newcondition(); public BlockingQueue(int maxcount){ this.maxcount = maxcount;

28 wechselseitiger Ausschluss in Java public E take() throws InterruptedException{ lock.lock(); try{ while(data.size==0) notempty.await(); notfull.signal(); return data.remove(); finally{ lock.unlock(); Concurrency-Bibliothek von Java public void put(e x) throws InterruptedException{ lock.lock(); try{ while (data.size() == maxcount) notfull.await(); data.add(x); notempty.signal(); finally{ Lock.unlock();

29 Barrieren Synchronisationsmechanismus gestattet mehreren kooperierenden Prozessen, gemeinsam einen konsistenten Zustand zu erreichen. Bsp.: Prozesse erarbeiten Teilergebnisse, die dann von einem weiterführenden Prozess zusammengefügt werden müssen (1) Prozess A und C erreichen die Barriere und werden suspendiert! (2) Prozess B erreicht als letzter die Barriere, woraufhin A und C wieder freigegeben werden. Sperren kritischer Bereiche in Zukunft gerichtet Prozess muss warten bis andere den Bereich verlassen haben. Barrieren in Vergangenheit gerichtet Prozess wartet bis nachfolgende aufgeschlossen haben. Bsp.: Führung durch ein Museum der nächste Ausstellungsraum wird erst betreten wenn alle Teilnehmer der Führung versammelt sind.

30 Barrieren pthreads can participate in a barrier to synchronize to some point in time. Before a barrier can be called, a pthread barrier object must be initialized first: int pthread_barrier_init(pthread_barrier_t *barrier, pthread_barrierattr_t *barrier_attr, unsigned int count); pthread_barrier_t barrier = PTHREAD_BARRIER_INITIALIZER(count); Barrier objects are initialized like mutexes or condition variables, except there is one additional parameter, count. The count variable defines the number threads that must join the barrier for the barrier to reach completion and unblock all threads waiting at the barrier. If default barrier attributes are used (i.e. NULL for the second parameter), one can use the initializer macro with the specified count. int pthread_barrier_wait(pthread_barrier_t *barrier); This function would be inside thread code where the barrier is to take place. Once count number of threads have called pthread_barrier_wait() then the barrier condition is met and all threads are unblocked and progress continues.

31 Synchronisation Notwendige Bedingungen! (Design-Entscheidung des BS) 1) Wechselseitiger Ausschluss (Mutual Exklusion) Zu einem gegebenen Zeitpunkt kann immer jeweils nur ein Prozess eine Ressource nutzen. 2) Besitzen und Warten (Hold & Wait) Ein Prozess kann auf die Zuteilung weiterer Ressourcen warten und darf dabei bereits Ressource besitzen. 3) Kein Ressourcenentzug (Non-Preemption) Ein Prozess, der im Besitz einer Ressource ist, kann diese nicht gewaltsam entzogen werden. Hinreichende Bedingung! (Situation) 4) Zyklisches Warten (Circular Wait) Es existiert eine geschlossene Kette von Prozessen, bei der jeder Prozess mindestens eine Ressource besitzt, die vom nächsten Prozess in der Kette benötigt wird!

32 Synchronisation 1) Wechselseitiger Ausschluss (Mutual Exclusion) Zu einem gegebenen Zeitpunkt kann immer jeweils nur ein Prozess eine Ressource nutzen. Kann im Allgemeinen nicht ausgeschlossen/verhindert werden, da Ressourcen existieren, die nur einen exklusiven Zugriff erlauben. Bsp.: Schreibrecht auf Dateien.

33 Synchronisation 2) Besitzen und Warten (Hold & Wait) Ein Prozess kann auf die Zuteilung weiterer Ressourcen warten und darf dabei bereits Ressource besitzen. Kann dadurch verhindert werden, dass ein Prozess alle von ihm benötigten Ressourcen gleichzeitig anfordern muss. Der Prozess wird solange blockiert bis ihm alle Ressourcen zugeteilt werden können. Wenig effizient ein Prozess blockiert auf längere Zeit Ressourcen ohne diese wirklich zu nutzen. praktisches Problem: in modularer Programmierung + Multithreading-Struktur: Kann ein Prozess wirklich alle je benötigten Ressourcen kennen?

34 Synchronisation 3) Kein Ressourcenentzug (Non-Preemption) Ein Prozess, der im Besitz einer Ressource ist, kann diese nicht gewaltsam entzogen werden. Kann auf mehrere Arten verhindert werden: 1. Wird einem Prozess die Zuweisung einer Ressource verweigert, so muss der Prozess alle Ressourcen in seinem Besitz freigeben und sofern notwendig alle Ressourcen erneut anfordern. 2. Das Betriebssystem unterbricht den zweiten Prozess, der die angeforderte Ressource hält und zwingt ihn zur Freigabe. fordert Priorisierung der Prozesse und die konkurrierenden Prozesse dürfen nicht die gleiche Priorität besitzen. funktioniert nur mit Ressourcen, deren Zustand gesichert und wiederhergestellt werden kann.

35 Synchronisation 4) Zyklisches Warten (Circular Wait) Es existiert eine geschlossene Kette von Prozessen, bei der jeder Prozess mindestens eine Ressource besitzt, die vom nächsten Prozess in der Kette benötigt wird! Kann dadurch verhindert werden, dass eine lineare Ordnung der Ressourcentypen festgelegt wird. Wenn einem Prozess Ressourcen des Typs R zugeteilt wurden, kann er nachfolgend nur Ressourcen eines Typs anfordern, der in der Ordnung auf R folgt. Bsp.: R i steht vor R j in der Reihenfolge (es gilt i < j). Angenommen zwei Prozess P1 und P2 sind verklemmt, da P1 die Ressource R i und P2 R j besitzt. P1 fordert zusätzlich R j an und P2 R i. Dieser Zustand ist ungültig: P2 hätte zuerst R i und dann R j anfordern müssen.

36 Synchronisation Wettstreit um Ressourcen zwischen Prozessen wechselseitiger Ausschluss zwei Steuerungsprobleme bei der Durchsetzung des wechselseitigen Ausschlusses. Deadlock (Verklemmung) Starvation (Verhungern)

37 Starvation (Verhungern) Beispiel: 3 Prozesse P1, P2, P3 greifen auf die Ressource R zu. P1 bekommt nun R zugewiesen und führt seine Aufgabe aus. Nach verlassen des kritischen Gebiets um R, bekommt P3 Zugriff auf R. Noch bevor P3 das kritischen Gebiet verlassen hat benötigt P1 erneut R. Das Betriebssystem entscheidet (womöglich aufgrund des Ergebnisses von P3) das P1 erneut R zugewiesen bekommt. Das Verhalten von P1 und P3 wiederholt sich nun beliebig oft und führt zu jeweils gleichen Entscheidungen des Betriebssystems. P2 bleibt der Zugriff auf R auf unbestimmte Zeit verweigert. Es liegt kein Deadlock vor! P1 und P3 können ihre Aufgabe bearbeiten! nur P2 ist verklemmt und kann nicht weiterarbeiten.

38 Livelock - ebenfalls eine Form der Verklemmung im Gegensatz zum Deadlock verharren die Prozesse nicht in einem Zustand, sondern wechseln ständig zwischen verschiedenen Zuständen. Zustände verharren nicht im Wait-Zustand, sondern sind weiterhin aktiv und wechseln zwischen mehreren Zuständen, können ihre eigentliche Aufgabe aber dennoch nicht bearbeiten. anschaulisches Beispiel: 2 Personen treffen auf einem Gehweg aufeinander und wollen aneinander vorbei gehen. Beide wechseln jedoch immer gleichzeitig die Gehwegseite und blockieren sich so weiterhin gegenseitig. Die beiden Personen sind zwar weiterhin in Bewegung, können sich aber nicht in ihrer eigentlich angestrebten Richtung fortbewegen.

39 Beispiel./twothreads Thread 1 ist nicht im kritischen Gebiet Thread 2 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet ---1 Thread 2 betritt kritisches Gebiet Thread 2 ist im kritischen Gebiet Thread 2 verlaesst kritisches Gebiet --- Thread 2 ist nicht im kritischen Gebiet Thread 2 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet ---1 Thread 2 betritt kritisches Gebiet Thread 2 ist im kritischen Gebiet Thread 2 verlaesst kritisches Gebiet --- Thread 2 ist nicht im kritischen Gebiet Thread 2 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++

40 Beispiel Kritisches Gebiet Funktion criticalarea(...) void criticalarea(char* icon, int thread){ printf("%s1 Thread %d betritt kritisches Gebiet %s \n", icon,thread,icon); sleep(1); printf("%s2 Thread %d ist im kritischen Gebiet %s \n", icon,thread,icon); sleep(1); printf("%s3 Thread %d verlaesst kritisches Gebiet %s \n", icon,thread,icon); Definition: kritisches Gebiet / Bereich / Abschnitt Teil eines Prozesses, der auf gemeinsam benutzte Betriebsmittel zugreift.

41 Beispiel 2 Threads greifen beide auf die Funktion criticalarea zu (kritisches Gebiet) void* Thread1(void* a){ while(true){ flag[0] = true; turn = 1; printf("thread 1 ist nicht im kritischen Gebiet\n"); while(flag[1]==true && turn==1){sleep(1); criticalarea("+++",1); //betreten des kritischen Gebietes printf("thread 1 ist nicht im kritischen Gebiet\n"); flag[0]=false; int main(){ //Thread2 //... while(true){ flag[1] = true; turn = 0; printf("thread 2 ist nicht im kritischen Gebiet\n"); while(flag[0]==1 && turn==0){rnd=(rand()%4);sleep(rnd); criticalarea("---",2); //betreten des kritischen Gebietes printf("thread 2 ist nicht im kritischen Gebiet\n"); flag[1]=false;

42 Beispiel 1) Nur ein Prozess (Thread) darf im kritischen Gebiet sein. (Korrektheitseigenschaft). Thread1: flag[0] = true; turn = 1; while(flag[1]==true && turn==1){... criticalarea("+++",1); Thread2: flag[1] = true; turn = 0; while(flag[0]==true && turn==0){... criticalarea("---",2);

43 Beispiel 2) Ein einzelner Prozess, der sich um das kritische Gebiet bewirbt, soll auch hineingelangen. flag[0] = false; flag[1] = false; Thread1: flag[0] = true; turn = 1; while(flag[1]==true && turn==1){... criticalarea("+++",1); Thread2: flag[1] = true; turn = 0; while(flag[0]==true && turn==0){... criticalarea("---",2);

44 Beispiel 3) Bei mehreren Bewerbern um das kritische Gebiet soll schließlich einer hineingelangen. flag[0] = false; flag[1] = false; Thread1: flag[0] = true; turn = 1; while(flag[1]==true && turn==1){... criticalarea("+++",1); flag[0] = false; Thread2: flag[1] = true; turn = 0; while(flag[0]==true && turn==0){... criticalarea("---",2); flag[1] = false;

45 Beispiel 4) Die Ablaufgeschwindigkeiten einzelner Prozesse sollen keinen Einfluss auf obige Bedingungen haben. Thread1: while(flag[1]==true && turn==1){sleep(1); criticalarea("+++",1); //betreten des kritischen Gebietes Thread2: while(flag[0]==1 && turn==0){rnd=(rand()%4);sleep(rnd); criticalarea("---",2); //betreten des kritischen Gebietes

46 Beispiel 5) Keine Aktion von auserhalb hat Einfluss auf das Betreten und Verlassen des kritischen Gebietes.

47 Beispiel Ausgabe:./twothreadsfail Thread 1 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet +++ Thread 2 ist nicht im kritischen Gebiet ---1 Thread 2 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 2 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet ---3 Thread 2 verlaesst kritisches Gebiet --- Thread 2 ist nicht im kritischen Gebiet +++1 Thread 1 betritt kritisches Gebiet Thread 1 ist im kritischen Gebiet Thread 1 verlaesst kritisches Gebiet +++ Thread 1 ist nicht im kritischen Gebiet Thread 1 ist nicht im kritischen Gebiet

48 Peterson für N Prozesse #define draussen 0 #define N 100 common int marke[n]; common int interessiert[n+1]; P k : betrete_gebiet(int prozess){ int i,j; Lösung für N Prozesse (./manythreads) for (i=1;i<n;i++){ interessiert[prozess]=i; marke[i]=prozess; for(j=1;j<=n;j++){ if(j==prozess) continue; while(interessiert[j] >= i && turn[i]==prozess){ /*kritisches Gebiet*/ verlasse_gebiet(int prozess){ interessiert[prozess]=draussen;

Ü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

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

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

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

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

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

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

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer

Mehr

Domänenmodell: Fadenkommunikation und -synchronisation

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

Mehr

Übung zu Grundlagen der Betriebssysteme. 11. Übung

Übung zu Grundlagen der Betriebssysteme. 11. Übung Übung zu Grundlagen der Betriebssysteme 11. Übung 08.01.2012 Organisation Anmeldung zur Klausur Klausur Grundlagen der Betriebssysteme Datum: 05.02.2013 Raum F414 (steht aber noch nicht sicher fest) Anmeldung

Mehr

Programmierkurs Java

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

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

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

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

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

Mehr

Objektorientierte Programmierung

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

Mehr

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Einführung in die Programmierung

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

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

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.

Mehr

Zählen von Objekten einer bestimmten Klasse

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

Mehr

Kapitel 4. Monitore und wechselseitiger Ausschluss

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

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

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

Mehr

Es kann maximal ein Prozess die Umladestelle benutzen.

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

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

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

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

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

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk olaf.spinczyk@tu-.de http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

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/

Mehr

Lizenzen auschecken. Was ist zu tun?

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.

Mehr

Lizenzierung von System Center 2012

Lizenzierung von System Center 2012 Lizenzierung von System Center 2012 Mit den Microsoft System Center-Produkten lassen sich Endgeräte wie Server, Clients und mobile Geräte mit unterschiedlichen Betriebssystemen verwalten. Verwalten im

Mehr

Nebenläufige Programmierung

Nebenläufige Programmierung Nebenläufige Programmierung Perspektiven der Informatik 27. Januar 2003 Gert Smolka Telefon-Szenario Eine Telefonzelle Mehrere Personen wollen telefonieren Immer nur eine Person kann telefonieren Ressource

Mehr

Übung 8: Semaphore in Java (eigene Implementierung)

Ü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

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Grundlagen verteilter Systeme

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)

Mehr

SEP 114. Design by Contract

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

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:

Mehr

Grundlagen von Python

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

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

4D Server v12 64-bit Version BETA VERSION

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

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

C++ Tutorial: Timer 1

C++ Tutorial: Timer 1 C++ Tutorial: Timer 1 Timer v1.0 Einleitung Raum und Zeit sind spätestens seit der kopernikanischen Wende wichtige Gegenstände des Denkens geworden. In einem Programm bestimmt die Zeit die Abläufe und

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

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

Mehr

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

Mehr

Dokumentation für das Spiel Pong

Dokumentation für das Spiel Pong Dokumentation für das Spiel Pong BwInf - Turnierserver Didaktik der nformatik BWINF KI Wettbewerbs-Plattform Stand: 02.09.2014 Grundlagen In diesem KI-Turnier programmiert ihr einen Schläger für das Retro-Spiel

Mehr

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

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

9 Verteilte Verklemmungserkennung

9 Verteilte Verklemmungserkennung 9 Verteilte Verklemmungserkennung 9.1 Grundlagen Für die Existenz einer Verklemmung notwendige Bedingungen Exklusive Betriebsmittelbelegung Betriebsmittel können nachgefordert werden Betriebsmittel können

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.NET Code schützen. Projekt.NET. Version 1.0 .NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Allgemeines: Bitte lesen Sie sich diese Anleitung zuerst einmal komplett durch. Am Besten, Sie drucken sich diese Anleitung

Mehr

Lehrer: Einschreibemethoden

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

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Das können wir Ihnen versprechen: An der neuen Taskleiste in Windows 7 werden Sie sehr viel Freude haben. Denn diese sorgt

Mehr

Inventur. Bemerkung. / Inventur

Inventur. Bemerkung. / Inventur Inventur Die beliebige Aufteilung des Artikelstamms nach Artikeln, Lieferanten, Warengruppen, Lagerorten, etc. ermöglicht es Ihnen, Ihre Inventur in mehreren Abschnitten durchzuführen. Bemerkung Zwischen

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Internet Explorer Version 6

Internet Explorer Version 6 Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster

Mehr

Benutzerverwaltung Business- & Company-Paket

Benutzerverwaltung Business- & Company-Paket Benutzerverwaltung Business- & Company-Paket Gemeinsames Arbeiten mit der easyfeedback Umfragesoftware. Inhaltsübersicht Freischaltung des Business- oder Company-Paketes... 3 Benutzerverwaltung Business-Paket...

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person dranzuhängen, Sie sind persönlich verantwortlich für Ihren Lernerfolg. 1 2 3 4 Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg. Gerade beim Einstig in der Programmierung muss kontinuierlich

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9 Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9 Prof. Dr. W. Conen Version 1.0c Januar 2009 Genereller Ablauf der Suche Gegeben: Variablen X, Domains D, Constraints R (explizit

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)

Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag) Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll Lösungsvorschläge der Klausur zu Einführung in die Informatik II Aufgabe 1 Transferfragen (Lösungsvorschlag)

Mehr

Vorkurs C++ Programmierung

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:

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

Print2CAD 2017, 8th Generation. Netzwerkversionen

Print2CAD 2017, 8th Generation. Netzwerkversionen Installation der Netzwerkversion Kazmierczak Software Print2CAD 2017, 8th Generation Print2CAD 2017, 8th Generation Netzwerkversionen Einführung Installationshinweise Die Programme von Kazmierczak Software

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

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

Mehr

LPT1 Anschluss mit PCMCIA Karte

LPT1 Anschluss mit PCMCIA Karte 1. Allgemeines LPT1 Anschluss mit PCMCIA Karte verwendete Hardware: Lenze PC Systembusadapter EMF 2173-V003 PCMCIA Karte Firma QUATECH Typ SPP-100 Auf die Installation der PCMCIA Karte wird hier nicht

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

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

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

Mehr

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten 1. Einschränkung für Mac-User ohne Office 365 Mac-User ohne Office 365 müssen die Dateien herunterladen; sie können die Dateien nicht direkt öffnen und bearbeiten. Wenn die Datei heruntergeladen wurde,

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

Mobile App Development. - Alarm -

Mobile App Development. - Alarm - Mobile App Development - Alarm - Inhalt Alarme AlarmManger Wake locks 2 Alarm Alarm Oft ist es notwendig eine App zu starten, auch wenn der Benutzer nicht mit ihr interagiert Starten von Activities zu

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

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

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

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

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen Um die maximale Sicherheit für das Betriebssystem und Ihre persönlichen Daten zu gewährleisten, können Sie Programme von Drittherstellern

Mehr

Programmieren in Java

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

Mehr

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem 20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem Autor Susanne Albers, Universität Freiburg Swen Schmelzer, Universität Freiburg In diesem Jahr möchte

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

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

Mehr

S7-Hantierungsbausteine für R355, R6000 und R2700

S7-Hantierungsbausteine für R355, R6000 und R2700 S7-Hantierungsbausteine für R355, R6000 und R2700 1. FB90, Zyklus_R/W Dieser Baustein dient zur zentralen Kommunikation zwischen Anwenderprogramm und dem Modul R355 sowie den Geräten R6000 und R2700 über

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

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

Mehr

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

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

Mehr