Kapitel 3 - Aktivitäten
- Was sind Aktivitätstoken?
- Welche Arten von Token gibt es?
- Was sind Prozesse?
- Unix Prozesserzeugung
- Zustände von Prozessen
|
Was ist ein Aktivitätstoken?
- Ist sehr abstrakt zu sehen
- Ein Aktivitätstoken haucht dem Programm erst "Leben" ein
- Beschreibt ein aktiven oder wartenden Prozess
- Es muss eine Art virtuellen Programmcounter im eigenen virtuellen Steuerwerk
des Prozesses geben
Was ist Multitasking?
Ist die Fähigkeit Prozesse parallel laufen zu lassen. Bei
Einprozessormaschinen (kooperativ oder preemtiv) wird die Leistungsfähigkeit damit
optimal ausgenutzt. Die verschiedenen Betriebsmittel können von mehreren Prozessen
mehrfach bzw. parallel genutzt werden.
Welche Aktivitäten gibt es und worin unterscheiden sie sich?
|
Token
|
Verteilung
|
Protokoll
|
BM-Zuteilung
|
|
Prozedur
|
Eins für alle
|
-
|
Call Return
|
Exclusiv
|
|
Coroutine
|
Eins für alle
|
-
|
Resume, aber dynamischer Eintrittspunkt (kooperatives Multitasking)
|
Exclusiv
|
|
Prozess
|
Pro Prozess
|
Pro Prozess
|
Keine Übergabe, da Prozess Token behält
|
Exclusiv
|
|
Thread
|
Pro Prozess
|
Pro Thread Eins
|
Keine Übergabe, da Prozess Token behält
|
Threads sind in Prozessen gruppiert und teilen sich dort die Betriebsmittel
|
Welche Betriebsmittel benötigt eine Aktivität mindestens?
- Programmcode
- Hauptspeicher
- Steuerwerk
Wodurch wird ein Prozess beschrieben?
- ein im System eindeutiger Identifikator (PID)
- Liste mit Betriebsmittel-Forderungen
- Liste mit zugeteilten Betriebsmitteln
- Ein Folge der bisherigen Anweisungen
- Die Anfangswertbelegungen der zugeteilten Betriebsmittel
Welche Probleme treten mit Prozessen auf?
- Determiniertheit (Durch Mehrfachverwendung von Betriebsmitteln ist diese so
nicht mehr gegeben und Synchronisation wird notwendig)
- Mutual Exclusion
- Synchronisation (Abstimmung zwischen Threads)
- Kommunikation (Synchronisation und Austausch von Daten zwischen Prozessen)
- Lebendigkeit
Welche Zustände kann ein Prozess einnehmen?
- nicht existent (Prozess noch nicht definiert)
- bereit (besitzt alle angeforderten Betriebsmittel außer den Prozessor)
- aktiv (besitzt mindestens die angeforderten Betriebsmittel)
- wartend (wartet noch auf noch nicht zugeteilte Betriebsmittel)

Wie wird ein Prozess im Unix erstellt?
- mit Systemaufruf fork() wird ein komplettes Speicherabbild eines schon
bestehenden Prozesses erzeugt (bei NT wird Prozess mit einem Initialzustand
erstellt)
- Deshalb erben neue Prozesse eventuelle Variablen des Vaterprozesses
Deshalb terminiert folgende Schleife nicht unter NT aber unter Unix:
For ( i=1; i<3; i++) fork();
Einige Unix-Systembefehle zur Prozesserzeugung:
- fork(), vfork() zum Prozesserstellen mit Speicherabbild des Vaters
- clone() erstellt einen Prozess der der den Speicher und Deskriptoren mit
Vater teilt
- execl(), execv(), execle(), execlp(), execvp() zum Kopieren eines Programms
in den Speicher
- wait(), waitpid() zum Warten auf Ende des Sohnprozesses
- exit() zum Beenden eines Prozesses
http://unixhelp.ed.ac.uk/CGI/man-cgi
Ein Beispielcode für eine Einfache Unix-Shell
#include sys/types.h
#include sys/wait.h
#include unistd.h
#include stdlib.h
#include stdio.h
#include string.h
using namespace std;
int main(void){
pid_t pid; //für PID des Sohnes
char str1[1000]; //Befehlsbuffer
while(1){
printf("\nDiggs mini bash. (PID=%d)\n\n",getpid());
printf("> ");
scanf("%s",str1); //Befehl lesen
if (strcmp(str1,"exit")==0) break; //exit beendet
if ((pid=fork())<0) //Prozess kopieren
{
printf("EXEC Operation failed!\n\n");
exit(0);
}
if (pid==0) //im Sohnprozess exec
{
char *cmd=strtok(str1," ");
execlp (cmd,cmd,0); //Speicher überschreiben
printf("command not found!\n");
exit(0); //manuell terminieren
} //Vaterprozess muss warten
else waitpid(pid,0,0);
}
return 0;
}
Der Vaterprozess liest einen Befehl (hier nur ohne Parameter) und startet danach einen
Sohnprozess mit fork() in welchem mit dem Befehl exec das aufzurufende Programm in den Speicher
kopiert wird. Schlägt exec fehl muss mit exit der Sohnprozess manuell beendet werden, da dieser
sonst nicht terminieren würde.
Am Besten einfach ausprobieren. Den Quellcode eingeben oder kopieren und mit dem
gcc compilieren:
gcc minishell.cc -o minishell
Aufruf: ./minishell
Wie werden Prozesse verwaltet?
Das Betriebssystem verwaltet alle Prozesse. Die Prozesse besitzen einen PCB
(Process Controll Block, in welchem alle zum Prozess gehörigen
Informationen gespeichert werden. Das Betriebssystem hat nun die Aufgabe alle n
Prozesse auf einen oder mehr Prozessoren abzubilden.
Was ist Timesharing?
Timesharing ist die gemeinsame Benutzung des Betriebsmittels
Prozessor von mehreren Prozessen. Dabei ermittelt ein Scheduler den nächst
auszuführenden Prozess. Ein Task-Switch bzw. Context-Switch bezeichnet eine solche
Umschaltung zwischen den Prozessen.
Was sind virtuelle Geräte bzw. Betriebsmittel?
Virtuelle Geräte stellen durch das Betriebssystem simulierte
Geräte mit idealisierten Eigenschaften dar. Bewerkstelligt wird damit die
Abstraktion von den Eigenschaften realer Geräte mit dem Ziel der
Geräteunabhängigkeit. In der Regel stellen virtuelle Geräte jedem Prozeß eine
synchrone Operation zur Verfügung. Dabei kann es erheblich mehr virtuelle als reale
Geräte geben. Beispiele für virtuelle Betriebsmittel sind Druckerspooler oder
Dateien.
|
|
|
|
|
|
Kapitel 1
|
Einleitung
|
|
Ebenen- oder Schichtenmodell, Aufgaben...
|
|
Kapitel 2
|
Modelle
|
|
Schichtenmodell, Betriebsmittel, Instanzen...
|
|
Kapitel 3
|
Aktivitäten
|
|
Token, Multitasking, Prozesse,Timesharing...
|
|
Kapitel 4
|
Kritischer Abschnitt
|
|
Gegenseitiger Ausschluss,Peterson,Semaphore...
|
|
Kapitel 5
|
Scheduling
|
|
Prozessorzuteilung, Prioritätsscheduling, RR...
|
|
Kapitel 6
|
Speichermanagment
|
|
Freispeicherverwaltung, Segmentierung, Paging...
|
|
Kapitel 7
|
Seitenersetzung
|
|
NRU, FiFo, Second Chance, LRU, NFU, Aging...
|
|
Kapitel 8
|
Deadlocks
|
|
Bedingungen, Erkennung und Auflösung...
|
|
Kapitel 9
|
Dateisysteme
|
|
Freispeicherverwaltung, Festplattenscheduling...
|
|
|
|
|
|
|
Quellen:
|
Andrew S. Tanenbaum
Computerarchitektur
|
Andrew S. Tanenbaum
Moderne Betriebssysteme
|
Petterson
Computer Architectur & Design
|
Christian Märtin
Rechnerarchitekturen
|
Kalfa
Skript und Vorlesung
|
Word Wide Web
Verschiedenste Seiten
|
|
|
|
|