So.
nun versuch ichs mal :
Also erstmal mit dem Jet durch die Kinderstube der Betriebssyteme (ich setze jetzt einiges an Wissen voraus...)
Der sog. Scheduler ist das Kernstück der Multitasking OS.
Multitasking gibt es in zwei Varianten :
kooperatives Multitasking (non preemptive)
Der aktive Prozeß gibt von sich aus die CPU zu einem geeigneten Zeitpunkt frei. Es besteht jedoch die Gefahr, daß ein "unkooperativer" oder fehlerhafter Prozeß alle anderen Prozesse blockiert und das System sich "aufhängt".
verdrängendes Multitasking (preemptive)
Der Scheduler kann einem Prozeß die Belegung von CPU-Kapazitäten entziehen.
Dadurch ist das System in der Lage, einen Prozess so schnell wie möglich wieder zum laufen zu bringen, ein fehlerhafter Prozeß kann das System nicht blockieren.
Hier gibt es zwei Methoden, die den Scheduler dazu
veranlassen, einen prozess zur Hölle zu schicken :
Anstoß für den Prozeßwechsel durch Verdrängung :Jeder Prozeß erhält die CPU für eine bestimmte Zeitspanne (Zeitscheibe). Danach wird die CPU dem nächsten Prozeß zugeteilt. Ganz einfach : Wer zulange braucht, fliegt raus.
Wie auf der Festtoilette aufm Oktoberfest.
Ereignisgesteuerte Strategien
Ein Prozeßwechsel findet statt, wenn ein Ereignis (z. B. ein Hardwareinterrupt) einen anderen Prozeß benötigt. Hier werden allgemein den einzelnen Prozessen Prioritäten zugeordnet, die sich dynamisch ändern. Ein bestimmtes Ereignis verleiht "seinem" Prozeß eine höhere Priorität.
So. Nun sollte man noch wissen, dass viele Prozesse in Abhängigkeiten voneinander stehen. Die sog. Parent-prozesse
sind die übergeordneten, die sog. Child-sätze die davon abhängig kaskadierten Prozesse.
Zur Prozessarchitektur will ich gar nich tiefer reinsteigen, ich denke dem einen oder anderen hier könnts zwar interessieren aber für solche sachen gibts Entwicklerlektüre.
Was die verschiedenen Begriffe im Taskmanager überhaupt bedeuten ist absolut elementar, also geh ich lieber darauf ein.
Create:
Erzeugen eines Prozesses (z.B. Laden eines Programms)
Vergabe einer PID, Anlegen eines PCB in der Prozeßtabelle
Allokieren des benötigten Speichers
Reservieren der benötigten Resourcen
Vergabe einer Priorität
Kill :
Löschen eines Prozesses
Löschen aller Einträge aus den Systemtabellen
Freigabe von Speicher und Resourcen (z.B. Dateien schließen)
Löschen aller Childprozesse
Suspend :
Suspendieren eines Prozesses
Suspendierung normalerweise nur bei Systemüberlastung durch Prozesse höherer Priorität, Wiederaufnahme erfolgt sobald möglich.
Resume :
Wiederaufnehmen eines suspendierten Prozesses
Suspendierung normalerweise nur bei Systemüberlastung durch Prozesse höherer Priorität, Wiederaufnahme erfolgt sobald möglich.
dann gibts noch interne Befehle wie z.B.
Block :
Blockieren eines Prozesses
Wakeup :
Aufwecken eines blockierten Prozesses
Dispatch :
CPU an einen Prozeß zuteilen
Change :
Priorität eines Prozesses ändern
So. Wie gesagt, dass sind die BASICS für das Verstehen der Mehrprozessorauslastung und die "Intellenz" die dahintersteckt.
Bisher alles klar ? Ansonsten machts keinen Sinn weiterzuerzählen....