3.2 Prozessumschaltung

Ähnliche Dokumente
Algorithmen und Programmierung IV: Nichtsequentielle Programmierung. Überblick. Überblick

5.3 Prozessumlagerung (process) swapping

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

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

Theorie zu Übung 8 Implementierung in Java

2.2 Prozesse in Java

Übung zu Grundlagen der Betriebssysteme. 10. Übung

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

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH

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

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

Betriebssysteme KU - Einführungstutorium

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

5 Speicherverwaltung. bs-5.1 1

Embedded OS für ARM Cortex Microcontroller

Grundlagen der Informatik III Wintersemester 2010/2011

Welche Informatik-Kenntnisse bringen Sie mit?

public class SternchenRechteckGefuellt {

Einstieg in die Informatik mit Java

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

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

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

Verteilte Systeme CS5001

Advanced Programming in C

Einführung in die Programmierung für Wirtschaftsinformatik

II.3.1 Rekursive Algorithmen - 1 -

Ein Laufzeitsystem für hochgradig parallele Simulationen

Prozesse und Threads. Peter Puschner Institut für Technische Informatik

Technische Informatik 1

Geordnete Binärbäume

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Betriebssysteme 13/14

Java Einführung Abstrakte Klassen und Interfaces

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Objektorientierte Programmierung

Threads and Scheduling

Softwaretechnik. Prof. Tomas Bures, PhD., Dipl. Inf. Lenz Belzner, Dipl. Inf. Christian Kroiß

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Objektorientierte Programmierung

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

Mobile und Verteilte Datenbanken

Debuggen mit GDB (Gnu DeBugger) unter Eclipse

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

Domänenanalyse Threadverwaltung/Scheduling

Benutzerauthentifizierung und Zugriffsschutz mit JAAS

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester


Betriebssysteme (BTS)

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Anwendung der Aspektorientierung : Security

Parallele Programmierung in Java

Musterlösungen zur Klausur Informatik 3

Informatik II Musterlösung

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

Der Scheduler von Windows Konzepte und Strategien

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

Systemsoftware (SYS)

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

5. Threads, Serverprozesse und Benachrichtigungen

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

Embedded-Linux-Seminare. Linux als Betriebssystem

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

6 Speicherorganisation

Große Übung Praktische Informatik 1

Assembler - Einleitung

Parallele Prozesse. Prozeß wartet

Java-Schulung Grundlagen

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

Programmieren in Java

Vorlesung Programmieren

Infrastruktur und Betriebssysteme III. Martin Plümicke

Beispiel für überladene Methode

Multithreading ab Java 5: Die neuen Concurrency APIs

39 Object Request Brokers. 40 Components of an ORB Stubs and Skeletons Stub

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Java Kurs für Anfänger Einheit 5 Methoden

Windows CE. Process Control and Robotics. Fabian Garagnon

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

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

Karlsruher Institut für Technologie

E L Mo Eine visuelle Prozessorsimulation

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Arten der Synchronisation. Koordination nebenläufiger Prozesse. Koordinierung. Reihenschaltung. Einseitige Synchronisation

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

Echtzeit-Multitasking

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

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

5. Tutorium zu Programmieren

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

Prozesse und Scheduling

AuD-Tafelübung T-B5b

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

1 Polymorphie (Vielgestaltigkeit)

9. Vorlesung Betriebssysteme

Transkript:

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, und somit kann ein bereiter Prozess aktiviert werden aktiver Prozess wird vom Prozessor verdrängt zugunsten eines aufgeweckten Prozesses mit höherer Priorität bs-3.2 1

Die Bereitliste und ihre Operationen: class ReadyList implements Set<Process> {... interface Set<T> { // set of T items, initially empty public void add(t item) {... // enter item into set public T remove() {... // remove and deliver some set element, // if set not empty (else deliver null) bs-3.2 2

Prozessumschaltung, nachdem der zu deaktivierende Prozess bereits wieder in eine Prozessliste (Warteliste oder Bereitliste) eingetragen wurde: static final int timeslice =...; static void dispatch() { current.incruntime(timeslice - GETTIMER()); previous = current; current = readylist.remove(); if(current!= previous) switch(); SETTIMER(timeSlice); mit folgender Prozedur switch, die den notwendigen Kontextwechsel (context switch) bewirkt: bs-3.2 3

static void switch() { previous.status = SAVESTATUS(); LOADSTATUS(current.status);! Pseudocode switch entspricht dem resume für Koroutinen (ALP 4 ), notwendigerweise in Assembler programmiert Im einfachsten Fall (ohne Berücksichtigung von Prozessormodus, Adressraum,...) ändert sich beim Wechsel des Prozessorstatus nur der Kellerzeiger (stack pointer)! bs-3.2 4

Für diesen Fall sieht switch so aus:...; load address of current.status into EAX...; load address of previous.status into EBX MOV 0(EBX), ESP ; SAVE STACK POINTER MOV ESP, 0(EAX) ; LOAD STACK POINTER Beachte: während der Ausführung von dispatch darf der Prozessor nicht unterbrechbar sein (weil die Unterbrechungsbehandlung selbst zu einem dispatch führt! 3.5) bs-3.2 5

Prozess P (previous), noch aktiv! Prozess Q (current) P-SP Q-SP P code P stack Q stack Q code CALL dispatch CALL dispatch SP (stack pointer register) dispatch bs-3.2 6 PC (program counter register)

3.2.1 Zeitscheibenverfahren Aktiver Prozess wird vom Prozessor verdrängt zugunsten eines bereiten Prozesses: typischerweise nach Ablauf einer bestimmten, dem Prozess zugeteilten Zeit, genannt Zeitscheibe (time slice) (z.b. 10 ms), deren Ablauf gemeldet wird durch Zeitgeberunterbrechung (timer interrupt) bs-3.2 7

Zeitgeberunterbrechung bewirkt unerwarteten Prozeduraufruf (unexpected/implicit procedure call) ( 3.5.1): die Unterbrechungsbehandlung aktiviert die folgende Methode in Process: static void timesliceend() { readylist.add(current); dispatch(); (alles mit Unterbrechungsunterdrückung - vgl. S. 5) bs-3.2 8

3.2.2 Blockieren Wenn aktiver Prozess blockiert (typischerweise in einer Synchronisationsoperation), kann ein bereiter Prozess aktiviert werden: void block() { // only meant for use by active process: // Process.current.block(); blocked = true; dispatch(); (ähnelt dem sleep im Unix-Kern) (alles mit Unterbrechungsunterdrückung - vgl. S. 5) bs-3.2 9

3.2.3 Aufwecken Dabei wird der aufweckende Prozess eventuell vom Prozessor verdrängt zugunsten eines aufgeweckten Prozesses mit höherer Priorität: void wake(){ // unblock & put in ready list blocked = false; readylist.add(this); readylist.add(current); dispatch(); (alles mit Unterbrechungsunterdrückung - vgl. S. 5) bs-3.2 10

3.2.4 Mehrprozessorsysteme Symmetrische Mehrprozessorsysteme (SMP) erfordern nur leicht geänderte Verwaltung (3.1 ) der aktiven und bereiten Prozesse bei n Prozessoren so: public static Process current(){ return current[processor_id()]; static Process[] current = new Process[n]; // at system startup time: establish n idle processes: static { for(int i=0; i<n; i++) current[i] = new Process(); while(true) ; // idle Nummer des ausführenden Prozessors bs-3.2 11

Ferner: alle Process Operationen mit Sperren für wechselseitigen Ausschluss versehen: static boolean lock; // spin lock (ALP 4 ; 3.4.2) void block() { LOCK(lock); blocked = true; dispatch(); UNLOCK(lock);... und die anderen Operationen entsprechend bs-3.2 12

Achtung: Wenn ein aufgeweckter Prozess einen der n aktiven Prozesse verdrängt, wird dieser i.a. in einem anderen Prozessor laufen wie wird dann verdrängt? Hardware stellt inter-processor interrupt zur Verfügung, der ähnlich wie die Zeitgeberunterbrechung behandelt wird: static void interprocint() { LOCK(lock); readylist.enter(current()); dispatch(); UNLOCK(lock); (alles mit Unterbrechungsunterdrückung - vgl. S. 5) bs-3.2 13

Auslösung dieser Unterbrechung durch modifiziertes wake : void wake(){ LOCK(lock); blocked = false; readylist.enter(this); readylist.enter(current()); if((p=victim())!= -1) INTERRUPT(p); dispatch(); UNLOCK(lock); prüft, ob bei einem Prozessor p verdrängt werden muß (alles mit Unterbrechungsunterdrückung - vgl. S. 5) bs-3.2 14