Ein einzelnes Programm kann i.d.r. einen Prozessor nicht sinnvoll auslasten

Ähnliche Dokumente
Proseminar Nichtsequentielle Programmiersprachen - alt und neu Einführung

Datentechnik. => Das Rechenergebnis ist nur dann sinnvoll, wenn es rechtzeitig vorliegt. Die Zeit muß daher beim Programmdesign berücksichtigt werden.

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

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

Inhaltsverzeichnis. 2.4 Thread-Systeme. 2.1 Was ist ein Prozess? 2.2 Scheduling. 2.3 Interprozesskommunikation

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Parallele Programmierung in Java

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

Systemprogramme bezeichnen alle Programme, die bestimmte Aufgaben unterstützen, die unabhängig von einer konkreten Anwendung sind

Die Ausführung geschieht über die sequentielle Abarbeitung der Instruktionen.

Projektseminar Parallele Programmierung

9 Multithreading. 1 Idee des Multithreading

6.Vorlesung Betriebssysteme Hochschule Mannheim

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Was machen wir heute? Betriebssysteme Tutorium 2. Organisatorisches. Frage 2.1.a. Theorieblätter Abgabe. Antwort. Probleme mit OS/161?

Softwarelösungen: Versuch 4

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

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Nebenläufige Programmierung

Ein Laufzeitsystem für hochgradig parallele Simulationen

Entwurf von Algorithmen - Kontrollstrukturen

Das Prinzip an einem alltäglichen Beispiel

Thread-Erzeugung kostengünstiger als Prozesserzeugung Thread-Umschaltung kostengünstiger als Prozessumschaltung

Musterlösung Prüfung SS 2002

Domänenanalyse Threadverwaltung/Scheduling

5 Speicherverwaltung. bs-5.1 1

Betriebssysteme (BTS)

Kurz: Stimme meinen Vorrednern zu: Angenehme Atmosphäre. Eher ein Fachgespräch als eine Prüfung. Eindeutig zu empfehlen

Systemsoftware (SYS)

Dämon-Prozesse ( deamon )

Die Programmiersprache C

U6-1 Organisatories. U6-2 Motivation von Threads. U6-3 Vergleich von Thread-Konzepten. Organisatorisches

Kontrollstrukturen - Universität Köln

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

BPMN Kategorien und Elementgruppen. Flussobjekte

Motivation. Motivation

Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 2011 / 2012

Vorlesung Betriebssysteme Hochschule Niederrhein, Prof. Pohle-Fröhlich, SS 2015

SurefireKernel ÜBERSICHT SPEZIFIKATION. Sicherheitskernel DATASHEET

Prüfungsprotokoll der mündlichen Prüfung Verteilte Systeme 1678 (Bachelor Informatik)

Moderne Betriebssysteme. Kapitel 8. Kapitel 8. Folie: 1. Multiprozessorsysteme. Autor: Andrew S. Tanenbaum

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

bereit (oder Zombie genannt). Normales Ende (exit) und synchrone und asynchrone Signal-Ereignisse, z.b.

KV Betriebssysteme (Peter René Dietmüller, Michael Sonntag) Synchronisation

Besprechung Aufgabe 5 (crawl) POSIX-Threads. Problem: UNIX-Prozesskonzept ist für viele heutige Anwendungen unzureichend

Grundlagen der Informatik für Ingenieure I

Rechnernutzung in der Physik. Betriebssysteme

Objektorientierte Programmiersprachen

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Monitore. Klicken bearbeiten

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

Objektorientierte Programmierung

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003

13. Übung mit Musterlösung

2.2 Prozesse in Java

Hochschule Augsburg. Herzlich willkommen! Hochschule Augsburg / Fakultät Elektrotechnik, Prof. F. Haunstetter 1

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

2 Grundlagen der Programmierung

B.4. B.4 Betriebssysteme Prof. Dr. Rainer Manthey Informatik II 1

Operating System Kernels

Kapitel 2: Betriebssysteme

Betriebssysteme it-akademie Bayern z/os und OS/390 Lehrgang 2008 Prof. Dr.-Ing. Wilhelm G. Spruth Teil 5 Prozessverwaltung

Rechnerarchitekturen und Betriebssysteme (CS201): Intro Betriebssysteme, SW Interrupts, Supervisory Call

5 Zugriffskontrolle 5.1 Systemmodell Grundmodell Grundmodell zur Beschreibung der VorgŠnge in einem IVS:

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

1 Einleitung. 1.1 Aufgaben und Grobstruktur. Was ist ein Betriebssystem?

Parallelrechner (1) Anwendungen: Simulation von komplexen physikalischen oder biochemischen Vorgängen Entwurfsunterstützung virtuelle Realität

Round-Robin Scheduling (RR)

Grundlagen der Parallelisierung

VBA-Programmierung: Zusammenfassung

Neues vom STRIP Forth-Prozessor

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation

Prozessor (CPU, Central Processing Unit)

CONCURRENCY MODELS. Auf der Suche nach dem heiligen Gral der ManyCores Peter Sturm. (c) Peter Sturm, Universität Trier

OSEK-OS. Oliver Botschkowski. PG AutoLab Seminarwochenende Oktober AutoLab

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Domänenmodell: Fadenkommunikation und -synchronisation

Parallelverarbeitung. Parallelverarbeitung. 2. Grundlagen. 2. Grundlagen. 2.1 Parallelität

Kapitel 2: Betriebssysteme

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Vortrag zum Seminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Bruno Kleinert 20. Juni 2007

2. Hintergrundverarbeitung in Android: Services und Notifications

Kapitel III. Prozessverwaltung. VO Betriebssysteme

Programmierkurs: Delphi: Einstieg

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Verteilte Systeme SS Universität Siegen Tel.: 0271/ , Büro: H-B Stand: 7.

SC18IM700-Tester v Einleitung

3 Programmiermodelle für parallele und verteilte Systeme

Konzepte von Betriebssystem Komponenten. Aufbau eines Modernen Betriebssystems (Windows NT 5.0)

Verbessertes Konzept: Monitore

RTEMS- Echtzeitbetriebssystem

Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München

Enterprise Computing

Ausarbeitung im Rahmen der PG Autolab zum Thema: OSEK 1 -OS. geschrieben von Oliver Botschkowski

Software ubiquitärer Systeme

Kapitel I Betriebssysteme: Aufgaben und Überblick Betriebssysteme: VO Betriebssysteme 2

Datenbanken: Transaktionskonzept und Concurrency Control

Transkript:

2 NebenlŠufigkeit und Prozesse 2.1 Prozesse und Module Prozess GerŠt 1 GerŠt 2 GerŠt 3 1 Ein einzelnes Programm kann i.d.r. einen Prozessor nicht sinnvoll auslasten Auch im Einprozessorsystem ist daher der verzahnte Ablauf mehrerer AktivitŠten sinnvoll, um Leerzeiten des Prozessors zu vermeiden. 2-1

Module Grš ere Softwaresysteme bestehen aus einer Menge kleinerer Komponenten, die wir Module nennen. Ein Modul stellt an seiner Schnittstelle eine Reihe von Operationen zur VerfŸgung, wšhrend die Implementierung dieser Funktionen vor dem Benutzer verborgen bleiben sollte. Schnittstelle Operation 1 Operation 2 Operation n Interne Prozeduren und Daten Die Gesamtfunktion wird durch gegenseitigen Aufruf dieser Schnittstellenoperationen erbracht 2-2

Betriebssystemkern als Modul Auch einen Betriebssystemkern kann man als Modul auffassen: Er hat zwei Schnittstellen: - fÿr die Systemaufrufe (system calls) - zur Hardwareinteraktion (Unterbrechungen) Kernschnittstelle fÿr Anwendungs- und Systemprogramme Kernop 1 Kernop 2 Kernop 2 Kernop n Interne Prozeduren und Datenstrukturen Interrupt routine 1 Interrupt routine 2 Interrupt routine m Hardwareschnittstelle 2-3

Prozesse Ein Prozess durchlšuft mehrere Module: Modul Modul Modul Modul Modul Jeder Modul ist ein einzelner Prozess: Modul Modul Modul Modul Modul 2-4

Prozesse Ein Prozess (process, task, thread) ist die AusfŸhrung eines sequentiellen Programms (lineare Folge von Befehlen). Eingabedaten Ausgabedaten Prozeß Programm Daten Er kann Ÿber Ein- und Ausgabedaten (Parameter) sowie Ÿber interne Daten verfÿgen 2-5

2.2 Prozesse in Betriebssystemen Prozesse wurden eingefÿhrt, um mehrere Benutzerprogramme quasiparallel ausfÿhren zu kšnnen (Mehrprogrammbetrieb, Time-Sharing) Die AusfŸhrung eines Benutzerprogamms ist als Prozess organisiert. Ein Benutzer kann in der Regel mehrere Programme, d.h. Prozesse gleichzeitig laufen lassen Das Betriebssystem selbst stellt viele Funktionen in Form von Systemprozessen zur VerfŸgung (Unix: ps liefert eine Liste aktiver Prozesse) Zu ihrer Verwaltung unterhšlt das BS interne Datenstrukturen (Prozesskontrollblšcke) Prozesse sind nicht nur AktivitŠtstrŠger, sondern auch die Instanzen, die Betriebsmittel anfordern und belegen kšnnen 2-6

Prozesse und Programme Mehrere Prozesse kšnnen dasselbe Programm ausfÿhren. Beispiel: logischer Adressraum Prozess A privater Bereich physikalischer Speicher logischer Adressraum Prozess B privater Bereich gleichzeitige bersetzung zweier Quellprogramme: Daten von B Der Code des bersetzers ist nur einmal im Speicher vorhanden Shared Code Shared Code Daten von A Shared Code 2-7

Prozeduren und Prozesse Im Gegensatz zu Prozeduren kšnnen Prozesse parallel zueinander ausgefÿhrt werden Prozeduren Prozesse Prozesse 1 Prozessor 3 Prozessoren 1 Prozessor 2-8

NebenlŠufigkeit und ParallelitŠt NebenlŠufigkeit (concurrency) VorgŠnge hei en nebenlšufig, wenn sie parallel oder verzahnt ablaufen kšnnen (potentielle ParallelitŠt) ParallelitŠt (parallelism) VorgŠnge hei en parallel, wenn sie tatsšchlich simultan ablaufen (echte ParallelitŠt) Echte ParallelitŠt gibt es nur, wenn mehrere aktive Hardware-Komponenten vorhanden sind: Prozessoren oder E/A-GerŠte 2-9

Verzahnte AusfŸhrung von Prozessen Auf Einprozessormaschinen mÿssen die Prozesse verzahnt ausgefÿhrt werden: Der Prozessor bearbeitet die Prozesse abschnittsweise in kleinen ãhšppchenò Die Verzahnung verfolgt zwei Ziele: Prozessor auslasten: Wartet ein Prozess auf die Fertigstellung eines E/A-Auftrags, so kann wšhrenddessen ein StŸck eines anderen Prozesses bearbeitet werden. Nach au en den Eindruck der Gleichzeitigkeit erwecken: Alle Prozesse kommen gleichmš ig voran (Prozess als virtueller Prozessor) P1 P2 P3 2-10

Prozesse und AdressrŠume Ein (logischer) Adressraum eines Prozesses ist die Gesamtheit seiner gÿltigen Adressen, auf die er zugreifen kann. Moderne Prozessoren ermšglichen nicht nur relative Adressierung (Basisregister), sondern stellen eine Speicherabbildungsfunktion (memory management unit, MMU) zur VerfŸgung. Damit kšnnen (beliebig) viele logische AdressrŠume gebildet werden, die automatisch und ggf. gestreut auf den physikalischen Speicher abgebildet werden. Dadurch sind die AdressrŠume gegenseitig geschÿtzt. GrundsŠtzlich sind AdressrŠume unabhšngig von Prozessen zu sehen. Zwar benštigt jeder Prozess zu jedem Zeitpunkt einen Adressraum, ansonsten sind aber mehrere Relationen mšglich: Ein Prozess besitzt genau einen eigenen Adressraum (Unix-Prozess) Mehrere Prozesse teilen sich einen Adressraum (Threads) Ein Prozess wechselt von einem Adressraum zum andern 2-11

Hinweis BezŸglich der Terminologie in der einschlšgigen Literatur ist Vorsicht geboten: Ein Prozess (process, task) wird hšufig im Sinne eines Unix-Prozesses verstanden als ein Prozess mit einem eigenen Adressraum. Die meisten neueren Betriebssysteme ( auch neuere UNIX-Varianten) bieten dagegen die Mšglichkeit an, mehrere Prozesse in einem gemeinsamen Adressraum ablaufen zu lassen. Man nennt sie Leichtgewichtsprozesse (lightweight process) oder Threads. In modernen Unix-Varianten (z.b. Solaris) gibt es einerseits die ursprÿnglichen Unix- Prozesse (tasks), die aber aus vielen Threads bestehen kšnnen. Ein Unix-Prozess ist daher ein Adressraum, der mindestens einen Thread enthšlt. FŸr WindowsNT gilt die gleiche Sprechweise. FŸr eine Gruppe von Threads im selben Adressraum finden sich auch die Begriffe Team (System V) oder Actor (Chorus) 2-12

bersicht Ÿber die Bezeichnungen in verschiedenen BS Betriebssystem Einheit der AusfŸhrung bergreifende Einheit Mach thread task Chorus thread actor Mayflower lightweight process domain V thread team Amoeba thread cluster Cosy process adress space Solaris thread process NT thread process 2-13

Prozessumschaltung (Prozesswechsel, process switching) Prozessumschaltung bedeutet, dass der Prozessor die Bearbeitung des aktuellen Prozesses unterbricht und stattdessen die Bearbeitung eines anderen Prozesses fortfÿhrt. Prozesswechsel bedeutet also einen bergang von einer Befehlsfolge in eine andere. Arten der Prozessumschaltung: Explizit: Der aktive Prozess initiiert selbst die Umschaltung Unbedingt: Bedingt: Automatisch: Der aktive Prozess Ÿbergibt die Kontrolle entweder gezielt an einen anderen Prozess oder er ŸberlŠsst die Auswahl einer Ÿbergeordneten Instanz (Scheduler) Der Prozess kann nicht weiterarbeiten, solange eine Bedingung nicht erfÿllt ist Die Prozessumschaltung wird durch ein Šu eres Ereignis (Interrupt) ausgelšst 2-14

Implementierung der Prozessumschaltung im Betriebssystem 2-15 Au er dem BefehlszŠhler enthšlt der Prozessor in seinen Registern eine Menge weiterer prozessspezifischer Daten: Inhalte von Rechenregistern, Indexregistern etc., die den Zustand der Programmbearbeitung, also des Prozesses, repršsentieren. Inhalte von Adressregistern, Segmenttabellen, Unterbrechungsmasken, Zugriffskontrollinformation etc, die die Ablaufumgebung des Prozesses darstellen. Alles zusammen, also die gesamte im Prozessor abgelegte prozessspezifische Information wird als Kontext des Prozesses (process context) bezeichnet. Dieser Prozesskontext muss im Rahmen des Umschaltens gerettet werden und beim Fortsetzen des Prozesses wieder restauriert werden. Prozesswechsel ist dann relativ schnell, wenn nur die Rechenregister umgeladen werden mÿssen, also die Adressierungsumgebung dieselbe bleibt. (Prozesswechsel innerhalb eines Adressraums, Leichtgewichtsprozesse, Threads)

Auswahl des nšchsten Prozesses Bisher gingen wir implizit davon aus, dass feststeht, auf welchen Prozess umgeschaltet wird. Meistens ist dieser Prozess nicht konstant, sondern wird zum Zeitpunkt des Umschaltens ausgewšhlt: Kriterien: Nummer des Prozesses (zyklisches Umschalten) Ankunftsreihenfolge Fairness PrioritŠt (Dringlichkeit) - konstant - veršnderlich Einhalten von Fertigstellungszeitpunkten Die Auswahl des nšchsten Prozesses beeinflusst die Verteilung der Prozessorleistung auf die Prozesse. Auf die verschiedenen Umschaltstrategien wird noch eingegangen (Scheduling) 2-16

ProzesszustŠnde Beim Umschalten muss in der Regel ein nšchster Prozess ausgewšhlt werden. Da jedoch einige Prozesse auf das Eintreten eines Ereignisses oder das ErfŸlltsein einer Bedingung warten, kommen diese nicht in Frage. Sie sind z. Zt. nicht fortsetzbar. Prozesse, die fortsetzbar sind, werden zu einer Menge zusammengefasst, ebenso diejenigen, die gerade nicht fortsetzbar sind. Die Zugehšrigkeit zu diesen Mengen wird auch als Zustand des Prozesses bezeichnet. Nimmt man die gerade rechnenden Prozesse hinzu, so gelangt man zunšchst zu drei ZustŠnden Zustand ãrechnendò (running): Prozesse, die gerade auf einem Prozessor bearbeitet werden Zustand ãbereitò (ready) Prozesse, die zwar fortsetzbar sind, aber gerade nicht bearbeitet werden Zustand ãwartendò (waiting) Prozesse, die nicht fortsetzbar sind, weil sie auf das Eintreten einer Bedingung warten 2-17

ProzesszustŠnde (process states) und ihre bergšnge Wartend (waiting, blocked) DEBLOCKIEREN (deblock) BLOCKIEREN (block) AUFGEBEN (relinquish, yield) Bereit (ready) Rechnend (running) ZUORDNEN (assign) 2-18

2.3 Ausdrucksformen fÿr ParallelitŠt in Programmiersprache Explizite NebenlŠufigkeit In sequentiellen, imperativen Programmiersprachen findet man die folgenden elementaren Kontrollstrukturen : Sequenz Einzelschritte werden in der Reihenfolge der Aufschreibung ausgefÿhrt. Wiederholung (Iteration) Einzelschritte oder Sequenzen von Einzelschritten werden wiederholt ausgefÿhrt. Verzweigung bzw. Auswahl AbhŠngig von einer Bedingung werden unterschiedliche Schritte durchgefÿhrt. Einschub (Prozedur) Eine in sich geschlossene Teilaufgabe, die an anderer Stelle als Programm formuliert ist, wird als eine Art komplexe Operation in die Anweisungsfolge eingeschoben. Wie sich im folgenden herausstellen wird, kann man allen vier Kontrollstrukturen eine parallele Variante gegenÿberstellen, die sich aus ihrem sequentiellen GegenstŸck herausentwickelt hat. Mit dem Begriff explizit soll deutlich gemacht werden, dass der Programmierer bewusst und gezielt nebenlšufige KontrollflŸsse vorsieht. 2-19

Prozesse WŠhrend eine Prozedur keine ParallelitŠt zum Aufrufer besitzt - der Aufrufer wird angehalten, bis die Prozedur beendet ist -, findet beim Prozess eine parallele Bearbeitung von Aufrufer oder Erzeuger und aufgerufenen Prozess statt. Der Prozess kann daher als zur ParallelitŠt fšhiges GegenstŸck zur Prozedur angesehen werden. Da diese Prozesse an einer gemeinsamen Aufgabe arbeiten, mÿssen sie interagieren Nach der Art ihrer Interaktion unterscheiden wir Kooperation (Shared-Memory Programmiermodell, gemeinsamer Speicher) Die Prozesse lesen und schreiben gemeinsame Variable Beispiele: Concurrent Pascal, Ada, Java, Modula-2 Kommunikation (Message Passing Programmiermodell, getrennter Speicher) Die Prozesse senden sich gegenseitig Nachrichten) Beispiele: Occam, diverse C-Derivate Die Verwaltung dieser Prozesse wird vom Laufzeitsystem der Sprache vorgenommen. 2-20

BS-Prozesse und Programmiersprachliche Prozesse Klassischer Mehrprogrammbetrieb: UnabhŠngige Prozesse in eigenen AdressrŠumen Ein Programm ein Prozess Laufzeitsystem Ein Programm ein Prozess Laufzeitsystem Betriebssystemkern Thread-Konzept in einer Programmiersprache ohne BS-UnterstŸtzung: Ein Programm viele Prozesse Ein Programm viele Prozesse Umschaltung der Prozesse durch Laufzeitsystem. FŸr das Betriebssystem sind die Prozesse nicht sichtbar. Es behandelt das gesamte Programm als einen Prozess Laufzeitsystem Laufzeitsystem Betriebssystemkern 2-21

BS-Prozesse und Programmiersprachliche Prozesse Ein Programm viele Prozesse Ein Programm viele Prozesse Programmiersprachliche Prozesse werden 1:1 auf BS-Prozesse abgebildet Laufzeitsystem Laufzeitsystem Betriebssystemkern Die Programmiersprache unterstÿtzt keine Prozesse Das parallele Programm besteht aus BS-Prozessen, die sich einen Adressraum teilen (z.b. Pthreads) Ein Programm viele Prozesse Ein Programm viele Prozesse Betriebssystemkern 2-22

Paralleles Verzweigen Die nebenlšufige Variante zum Verzweigen ist das: fork/join. Forkbedeutet das parallele Verzweigen zu einem anderen Programmteil, wšhrend das bisher aktive, das fork aufrufende Programm weiterlšuft. Jedes fork korrespondiert eindeutig mit einem joinbei dem die beiden Zweige wieder zusammengefÿhrt werden. A fork f B fork g C join f D join g E end f: F end g: G end F A B C D E G 2-23

Parallele Anweisungen In einigen Programmiersprachen wird das Paar parbeginparend oder auch cobegin/coend benutzt, um dadurch anzudeuten, dass die Reihenfolge nacheinander aufgeschriebenen Anweisungen unerheblich ist, mithin ihre AusfŸhrung auch parallel durchgefÿhrt werden kann.. A; parbegin A B; begin C C; parbegin B G D; D E E; parend; F F end; G; H parend; H; 2-24

Parallele Schleifen Sind die einzelnen SchleifendurchlŠufe unabhšngig voneinander, kann statt einer n- fachen Repetition des Schleifenkšrpers eine n-fache ParalleldurchfŸhrung stattfinden. Die Ÿblicherweise verwendeten SchlŸsselwšrter zur Kennzeichnung paralleler Schleifen hei en pardodoall, forall oder doacross A A; pardo i:=1 to n B(i); pardo j:=1 to i C(i,j); parend; D(i); parend; E; C(1,1) B(1) B(2) B(3) B(n) C(2,1) C(2,2) C(n,1) D(1) D(2) D(3) D(n) E C(n,n) 2-25

Impliziter Parallelismus ParallelitŠt kann auch implizit und stattfinden: Moderne Prozessoren besitzen die FŠhigkeit, mehrere Operationen Ÿberlappend und/oder simultan auszufÿhren. Dies kann aber nur genutzt werden, wenn der bersetzer geeigneten Code erzeugt Arithmetische AusdrŸcke kšnnen unter Ausnutzung von Assoziativ- und Kommutativgesetz teilweise parallel ausgewertet werden. DatenabhŠngigkeiten zwischen den Anweisungen kšnnen analysiert werden. Man findet Anweisungen, die unabhšngig voneinander sind und parallel ausgefÿhrt werden kšnnen. Die sequentielle Anordnung ist Ÿberspezifiziert. 2-26

Parallelarbeit innerhalb des Prozessors Flie bandprinzip (Pipelining) aufeinanderfolgende Befehle IF DC EX WB Instruction fetch (Befehl holen) Decode (Befehl decodieren) Execute (Befehl ausführen) Write back (Ergebnis zurückschreiben) Prozessortakte 2-27

SuperskalaritŠt Statt nur einer Pipeline werden mehrere (2-4) vorgesehen, so dass mehrere Befehle vollstšndig parallel bearbeitet werden kšnnen. Bei superskalaren Prozessoren kann die Zahl der abgearbeiteten Befehle grš er sein als die Taktrate. aufeinanderfolgende Befehle Prozessortakte 2-28

2.4Beziehungen zwischen Prozessen Verallgemeinerter Prozessbegriff Wir haben parallele oder nebenlšufige AktivitŠten auf verschiedenen Ebenen kennengelernt: - Komplette Anwendungen als Prozesse - Prozesse als Teile von Anwendungen - Folgen von Anweisungen parallel zu anderen - Einzelne Operationen oder kurze Operationsfolgen parallel zueinander Es handelt sich jeweils um Folgen von Operationen, die in sich sequentiell, untereinander aber parallel ausgefÿhrt werden kšnnen. Die LŠnge dieser parallelen AktivitŠten wird oft mit dem Begriff GranularitŠt charakterisiert. Komplette Programme als Prozesse wšren dann ein Beispiel fÿr grobgranulare Prozesse, die parallele Auswertung eines arithmetischen Ausdrucks eine Beispiel fÿr feine GranularitŠt. 2-29

Beziehungen zwischen Prozessen Prozesse kšnnen in diversen Beziehungen stehen: Eltern-Kind-Beziehung: Ein Prozess erzeugt einen weiteren Prozess VorgŠnger-Nachfolger-Beziehung: Ein Prozess darf erst starten, wenn ein anderer Prozess beendet ist Kommunikationsbeziehung: Zwei (oder mehr) Prozesse kommunizieren miteinander Wartebeziehung: Ein Prozess wartet auf etwas, was von einem anderen Prozess kommt. Dringlichkeitsbeziehung: Ein Prozess ist wichtiger (dringlicher) als ein anderer Und viele andere mehr 2-30

Prozessgraphen Solche Beziehungen kann man formal als Relationen ausdrÿcken: Sei P die Menge der Prozesse, so ist B P P eine Relation. Meistens wird der Sachverhalt als Graph ( PB, ) mit P als Knoten- und B P P als Kantenmenge dargestellt. Die meisten dieser Graphen sind gerichtet, einige sind azyklisch, (DAG = directed acyclic graph), z.b. VorgŠngergraph, und einige Graphen sind BŠume bzw. WŠlder (z.b. Eltern- Kind-Beziehung) (Wer es noch nicht wei : Ein Wald ist eine Menge von BŠumen!) Prozessgraphen kšnnen auch Ÿber Knoten- und Kantengewichte verfÿgen. Beispiele: AusfŸhrungszeit als Knotengewicht im VorgŠngergraph Versendete Datenmenge als Kantengewicht im Kommunikationsgraphen Wir werden in spšteren Kapiteln darauf zurÿckkommen. Graphen werden verwendet: Zur Analyse einer Situation (z.b. Verklemmungen) Zur Optimierung (z.b. Scheduling, Platzierung) 2-31

Beispiel VorgŠngergraph TPG: task precedence graph Kanten modellieren Reihenfolgebeziehung Kommunikationsgraph TIG: task interaction graph Kanten modellieren Interaktion T0 Raum T0 Raum T1 T2 T3 T4 T5 T1 T2 T3 T4 T5 Zeit Raum T6 T6 2-32