Prozesszustände (1a)

Ähnliche Dokumente
Parallele Prozesse. Prozeß wartet

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

5. Threads, Serverprozesse und Benachrichtigungen

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

Übung zu Grundlagen der Betriebssysteme. 10. Übung

Nebenläufigkeit mit Java

Synchronisation in Java. Invisible Web

Verteilte Systeme CS5001

Java-Schulung Grundlagen

Musterlösungen zur Klausur Informatik 3

Einführung in die Programmierung Blockkurs Java

Einstieg in die Informatik mit Java

2.2 Prozesse in Java

Das Monitorkonzept Brinch-Hansen

Multithreading ab Java 5: Die neuen Concurrency APIs

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme

Beispiel für überladene Methode

Kapitel 5. Monitore und Synchronisationsbedingungen

2A Basistechniken: Weitere Aufgaben

Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE)

Grundlagen zur nebenläufigen Programmierung in Java

Ausgewählte Implementierungsprobleme

Thread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)

Variablen manipulieren per JDI

Java-Programmierung. Remote Method Invocation - RMI

Java - Programmierung - Objektorientierte Programmierung 1

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

Technische Informatik 1

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Schritt 1 - Ein Spielfeld

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Nebenläufige Programmierung in Java

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

LeJOS: Mindstorms in Java programmieren

Datenbankanwendungsprogrammierung Crashkurs Java

Programmieren in Java

Multi-Threading. Ralf Abramowitsch Vector Informatik GmbH

Parallele Programmierung in Java

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Nebenläufige Programmierung I

Mobile und Verteilte Datenbanken

Informatik B - Objektorientierte Programmierung in Java. Vorlesung 21: Threads 2. Inhalt

Threads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java.

5 Grundlagen der Java-Syntax

B.5 Prozessverwaltung B.5. Prozessverwaltung Prof. Dr. Rainer Manthey Informatik II 1

Nebenläufigkeit in Java

Nebenläufige und verteilte Programme CS2301

Beispiel: DB-Mock (1/7)

5.3 Prozessumlagerung (process) swapping

Programmiermethodik. Übung 13

Mobile und Verteilte Datenbanken

Beispiel Klausuraufgaben

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Betriebssysteme. Wintersemester Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

1 Fehler-Objekte: Werfen, Fangen, Behandeln

Primitive Datentypen

Echtzeit-Multitasking

Java-Implementierung der Priority-Queue und des Huffman-Algorithmus Effiziente Algorithmen SS12 Übung 4 Aufgabe 5 Johannes Hein

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

1. Der Einstieg in Java. Was heißt Programmieren?

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 2011 / 2012

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr.

PROGRAMMIERUNG IN JAVA

Probeklausur: Programmierung WS04/05

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

Remote Method Invocation

1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.5 Was sind Variablen im Kontext der Programmierung?

Programme werden durch den Ablauf eines oder mehrerer Prozesse (engl.: process, task) von einem Rechner abgearbeitet.

Infrastruktur und Betriebssysteme III. Martin Plümicke

Prozesse und Scheduling

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Pragmatik von Programmiersprachen

Objektorientierte Programmierung

Selbsteinstufungstest Vorkurs Programmieren

Dämon-Prozesse ( deamon )

6. Tutorium zu Softwaretechnik I

Themen. Web Service - Clients. Kommunikation zw. Web Services

Betriebssysteme Kapitel E : Prozesse

Remote Method Invocation

IT in der Arztpraxis Technisches Handbuch zum Kodierassistenten

6 Speicherorganisation

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006

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

Transkript:

Prozesszustände (1a) NOT EXISTING DELETED CREATED Meta-Zustand (Theoretische Bedeutung)

Prozesszustände Multiuser Umfeld (1c) Hintergrund-Prozess - der Prozess startet im Hintergrund - my-commandbin & - der Prozess läuft dann im Vordergrund Er wird im Betrieb mit CTRL-Z gestoppt und kann danach in der Shell mit bg (background) in den Hintergrund geschickt werden (fg - foreground) nice, renice setzt Prozess-Prioritäten nice - - 20 important_jobbin (Priorität erhöhen) nice - + 19 my_fancy_screensaverbin (Priorität senken) my-commandbin while kill STOP %%; do sleep 4; kill CONT %%; sleep 1;done

Prozessverwaltung (2a) Programm: der Programmtext als installiertes Binary Prozess: Ressource des Betriebssystems in der eine Instanz eines Programms läuft Ein einmalig vorliegendes Programm kann mehrfach, dh in mehreren Prozessen ausgeführt werden Task/Job: Begriff um einen Prozess zu beschreiben, der von einer bestimmten Shell aus gestartet wurde und von BS eindeutig identifizierbar ist Task ist mit jeweils einem Prozess assoziiert Job kann mehrere Prozesse bezeichnen, die im demselben Kontext laufen, zb eine Anwendung Kernel-Level-Thread: Ressource des Betriebssystems, dh der Kern kümmert sich um die Ressourcen-Vergabe und das präemptive Scheduling User-Level-Thread: ein per Programmbibliothek eingebundener Scheduler ermöglicht einem Prozess selber mehrere Threads zu verwalten Das Programm muss zur Unterbrechung der Threads und zum Wechsel der Kontrolle geeignete Maßnahmen ergreifen und ein kooperatives Scheduling selbst durchführen Mischformen: LWPs unter Solaris bilden ohne den Overhead vollwertiger und damit schwergewichtiger Prozesse User-Level-Threads auf einen Pool von Kernel-Level-Threads ab Dies vereint das einfache Management der User-Level- Threads mit den, einem Betriebssystem vorbehaltenen, präemptiven Fähigkeiten

Prozessverwaltung Kernel/User Mode (2b): Stabilität Datenschutz Abstraction/Management Kernel-Prozesse / Benutzer-Prozesse Schutz (2c): Prozessor / MMU Unterstützung Trennung von Segmente/Pages in unterschiedlichen Bereichen Privilegierung Flags 4 Stufen 3 Normal; (0-2) Superuser Assembler Sonderbefehle Prozesswechsel (2d): Interrupts Prozessorunterstützung!!! Parameteraustausch zw Kernel und User Speicher nur durch Kopien

Wechsel zum Kernel-Mode Call-Gates (2d) 0 2: 3: CallGate auf Seg 2, Offset Funk 24 4: Segment-Deskriptor-Tabelle Korrekte Einsprungspunkte Segment 2, PL0, Kernel Longjump über CallGate LONG JMP 3: Segment 4, PL3, User MAX Beliebiges Longjump - FALSCH

Speicherverwaltung (3a) Logischer Speicher (Benutzer Sicht) Physikalischer Speicher Segment Page Logischer Speicher = 1 Segment Flat Segmentation

Speicherverwaltung (3b) Segment Logischer Speicher (Benutzer Sicht) Physikalischer Speicher Page Proz A Proz B

Koordinierung konkurrierender Zugriff (4a) public class Count extends Thread { static int value=0; //gezählte Wert boolean reader=false; //Unterscheidung zw Leser und Schreiber static Object barrier = new Object(); //Semaphor-Rolle Count(boolean reader) { thisreader=reader; public void run() { while(true) { synchronized(barrier) { //warten an der Barriere, synchronized = kritischen Bereich if (reader) { //Ist das der Leser Thread? Systemoutprintln("value is "+value); value=0; else value++;//wenn das der Schreiber ist //Der Leser schläft, um den Schreiber Zeit zum schreiben zu geben if (reader) try {sleep(1000); catch(interruptedexception e) { eprintstacktrace(); public final static void main(string[] args) throws Exception { new Count(true)start(); //Leser Thread new Count(false)start(); //Schreiber Thread synchronized(barrier) {barrierwait(); //Objekt mit Semaphor-Rolle

public class Semaphore { boolean s; //Semaphor Variable Java Semaphor 1 (4c) public Semaphore { // Semaphor Variable wird über Semaphore -Objekt gesteuert s = true; // Semaphor Eingang synchronized public void P() { while (s == false){ try { wait(); catch (InterruptedException e) { s = false; // Semaphor Ausgang synchronized public void V() { s = true; notify(); //weckt alle wartenden Prozesse

Java Semaphor 2 (4c) public class Semaphore { int s; public Semaphore { s = 1; synchronized public void P() { while (s <= 0){ try { wait(); catch (InterruptedException e) { s = s - 1; synchronized public void V() { s = s + 1; notify();//weckt einen, der wartenden Prozesse

Java PV-Semaphor (4c) public class ChunkSemaphore { int s; //Semaphor Variable public ChunkSemaphore(int initial) { s = initial; // Semaphor Eingang synchronized public void P(int k) throws InterruptedException { while (s - k <= 0) wait(); // Semaphor ist komplett besetzt - warten s = s - k; // Semaphor dekrementieren // Semaphor Ausgang synchronized public void V(int k) { s = s + k; // Semaphor inkrementieren notifyall();// weckt alle wartenden Prozesse