|
Programme, Prozeduren, Prozesse und Instanzen
Programm:Die Lösung einer Programmieraufgabe (=Algorithmus) wird inForm eines Programms realisiert. Teillösungen werdendabei als Prozeduren (Unterprogramme) formuliert, welchenach Beendigung ihrer Arbeit zum aufrufendenübergeordneten Programm zurückkehren. Damit die Leistungen desBetriebssystemkerns problemlos in Anwenderlösungen eingebundenwerden können, sind sie ebenfalls als Prozeduren realisiert.Ein Programm (Prozedur, Unterprogramm) besteht aus:
- Befehlen (Codebereich, Textbereich)
- Programmdaten (Datenbereich)
Beide Komponenten sind problemorientiert.
Prozeß:
Wird ein Programm (Prozedur) unter der Kontrolle eines Betriebssystems (genauer
gesagt unter der Kontrolle eines Betriebssystemkerns) ausgeführt, so wird dieser
Ablauf als Prozeß (engl. Task) bezeichnet.
Diese Betrachtungsweise macht es möglich, daß mehrere Programme gleichzeitig als
Prozesse parallel auf einem sequentiell arbeitenden Rechnersystem
(unabhängig von der realen Anzahl Prozessoren) ablaufen können.
Als Sonderfall gilt die Ausführung mehrerer Prozesse auf einem Prozessor.
Bei der Ausführung von Prozessen entstehen Daten, die durch den Betriebssystemkern
verwaltet werden. Diese werden Statusinformationen genannt und sind systemabhängig,
z. B. Registerinhalte.
Die Funktionalität des Betriebssystemkerns bezüglich der Verwaltung von Prozessen ist
bei der Ausführung von n Prozessen auf einem Prozessor äquivalent der Verwaltung
auf m > 1 Prozessoren. Dabei kann das Verhältnis m : n sowohl statisch
als auch dynamisch änderbar sein.
Als weitere Komponente wird beim Ablauf eines Programms ein Kellerspeicher (Stack)
aufgebaut. Somit läßt sich ein Prozeß modellhaft folgendermaßen darstellen.
Alle vier Komponenten, die bei der Ausführung eines Programms (einer Prozedur) beteiligt
sind, werden als Instanz zusammengefaßt.
Instanz:
Eine Instanz umfaßt das Tupel (C, D, S, I):
C: | Codesegment | --> | problemorientiert |
D: | Datensegment | --> | problemorientiert |
S: | Stacksegment | --> | system-/problemorientiert |
I: | Statusinformation | --> | systemorientiert |
Die physische Anordnung dieser Komponenten im Arbeitsspeichers eines Rechners kann in
unterschiedlichen Betriebssystemen verschieden sein.
Wir halten also fest:
Prozeßmodell
- Ein Prozeß ist ein Programm während der Ausführung
(Für uns gleichbedeutend mit "Task". Es gibt jedoch BS, bei denen
ein Programm mehrere Prozesse startet, einen solchen Prozeß nennt man dann
"Thread".)
- Es können sich mehrere Prozesse gleichzeitig im Speicher befinden, es
ist jedoch immer nur ein Prozeß aktiv, d.h. er wird von der Hardware bearbeitet
(außer es gibt mehrere CPUs) --> parallel falls die Zahl der
Prozessoren größer oder gleich der Zahl der Prozesse ist, quasiparallel
im anderen Fall.
- Ein Teil des BS, der Scheduler, wählt einen Prozeß aus, teilt ihm
die CPU zu und läßt ihn eine gewisse Zeit rechnen.
Moderne Rechner können mehrere Dinge gleichzeitig ausführen. Unterstützt
durch die Hardware lassen sich einzelne Aufgaben des BS parallelisieren. z. B.
das Ausgeben einer Datei auf dem Drucker, während das Programm weiterläuft
(auch im Einprogrammbetrieb!). Es gibt also in der Regel parallele Arbeit von CPU
und E/A-Geräten.
Im Mehrprogrammbetrieb wird jedem Programm einen kurzen Zeitabschnitt (Zeitscheibe)
lang die CPU zugeteilt, wodurch die Benutzer die Illusion erhalten, alle Programme
würden gleichzeitig bearbeitet --> Pseudoparallelität. Damit lassen
sich folgende Eigenschaften von Prozessen definieren:
- Jeder Prozeß besitzt seine eigene Prozeßumgebung (Instanz).
- Jeder Prozeß kann seinerseits andere Prozesse erzeugen und - mit Hilfe
der BS-Kerns - mit anderen Prozessen kommunizieren.
- Prozesse können voneinander abhängen --> kooperierende Prozesse.
Derartige Prozesse müssen sich untereinander synchronisieren.
- Prozessen kann eine Priorität zugeordnet werden, aus der sich die
Reihenfolge ergibt, mit der die Prozesse der CPU zugeteilt werden.
- Die Speicherung der Prozeßzustände erfolgt in einer vom BS
geführten Prozeßtabelle.
|
|
|