Alle Informationen, die benötigt werden, um einen Prozess beim Umschalten zu verfolgen, werden in einem Datenpaket gespeichert, das als Prozesssteuerungsblock bezeichnet wird. Der Prozesssteuerungsblock enthält typischerweise:
- Eine ID-Nummer, die den Prozess identifiziert
- Zeiger auf die Positionen im Programm und seine Daten, an denen die Verarbeitung zuletzt stattgefunden hat
- Inhalt registrieren
- Zustände verschiedener Flags und Schalter
- Zeiger auf die oberen und unteren Grenzen des für den Prozess erforderlichen Speichers
- Eine Liste der vom Prozess geöffneten Dateien
- Die Priorität des Prozesses
- Der Status aller wird vom Prozess benötigt
Jedem Prozess ist ein Status zugeordnet. Viele Prozesse verbrauchen keine CPU-Zeit, bis sie irgendeine Art von Eingabe erhalten. Beispielsweise kann ein Prozess auf einen Tastendruck des Benutzers warten. Während es auf den Tastendruck wartet, benötigt es keine CPU-Zeit. Während es wartet, wird es „suspendiert“. Wenn der Tastendruck eintrifft, ändert das Betriebssystem seinen Status. Wenn sich der Status des Prozesses ändert, beispielsweise von ausstehend zu aktiv oder von ausgesetzt zu ausgeführt, müssen die Informationen im Prozesssteuerungsblock wie die Daten in jedem anderen Programm verwendet werden, um die Ausführung des Task-Switching-Teils des Betriebssystems zu steuern.
Werbung
Dieser Prozess Swapping geschieht ohne direkte Benutzereinmischung, und jeder Prozess bekommt genug CPU-Zyklen, um seine Aufgabe in einer angemessenen Zeit zu erfüllen. Probleme können auftreten, wenn der Benutzer versucht, zu viele Prozesse gleichzeitig laufen zu lassen. Das Betriebssystem selbst benötigt einige CPU-Zyklen, um das Speichern und Austauschen aller Register, Warteschlangen und Stapel der Anwendungsprozesse durchzuführen. Wenn genügend Prozesse gestartet werden und das Betriebssystem nicht sorgfältig entworfen wurde, kann das System die überwiegende Mehrheit seiner verfügbaren CPU-Zyklen verwenden, um zwischen Prozessen zu wechseln, anstatt Prozesse auszuführen. Wenn dies geschieht, wird es Thrashing genannt, und es erfordert normalerweise eine Art direkten Benutzereingriff, um Prozesse zu stoppen und Ordnung in das System zurückzubringen.
Dieser Inhalt ist auf diesem Gerät nicht kompatibel.
Dieser Inhalt ist auf diesem Gerät nicht kompatibel.
Eine Möglichkeit, wie Betriebssystemdesigner die Wahrscheinlichkeit von Thrashing reduzieren, besteht darin, den Bedarf an neuen Prozessen zur Ausführung verschiedener Aufgaben zu reduzieren. Einige Betriebssysteme erlauben einen „Prozess-Lite“, einen Thread genannt, der sich mit der gesamten CPU-intensiven Arbeit eines normalen Prozesses befassen kann, sich aber im Allgemeinen nicht mit den verschiedenen Arten von E / A befasst und keine Strukturen aufbaut, die den umfangreichen Prozesssteuerungsblock eines regulären Prozesses erfordern. Ein Prozess kann viele Threads oder andere Prozesse starten, aber ein Thread kann keinen Prozess starten.
Bisher betrafen alle Planungen, die wir besprochen haben, eine einzelne CPU. In einem System mit zwei oder mehr CPUs muss das Betriebssystem die Arbeitslast auf die CPUs aufteilen und versuchen, die Anforderungen der erforderlichen Prozesse mit den verfügbaren Zyklen auf den verschiedenen CPUs in Einklang zu bringen. Asymmetrische Betriebssysteme verwenden eine CPU für ihre eigenen Bedürfnisse und teilen Anwendungsprozesse auf die verbleibenden CPUs auf. Symmetrische Betriebssysteme verteilen sich auf die verschiedenen CPUs und gleichen die Nachfrage gegen die CPU-Verfügbarkeit aus, selbst wenn nur das Betriebssystem selbst ausgeführt wird.