Prozesse und Threads in Betriebssystemen (OS) gehörten schon immer zu meinen Lieblingsthemen in der Informatik. Sie ermöglichen ein viel tieferes Verständnis dafür, wie das Betriebssystem Programme während ihrer verschiedenen Ausführungsphasen verwaltet, Probleme mit dem Speicher angeht und isolierte Sicherheit bis hin zum Kernel gewährleistet. Es ist einfach verdammt interessant!
Die Grundidee
Ein Prozess ist einfach ein Programm in Ausführung. Einem Programm ist genau ein Prozess zugeordnet. In sehr seltenen Fällen mag dies nicht immer zutreffen (Google Chrome als Beispiel), aber in der Mehrzahl der Fälle ist dies der Fall.
Jeder Prozess hat verschiedene Komponenten, die es ihm ermöglichen, seine vorgesehenen Aufgaben auszuführen. Vor allem der Stack und der Heap werden für die Zuweisung lokaler Variablen bzw. dynamischen Speichers verwendet.
Es gibt noch mehr Komponenten, aber es genügt zu sagen, dass jeder Prozess diese Komponenten braucht, um als Programm zu laufen.
Überwachung von Prozessen im System
Zu jeder Zeit können ein paar hundert oder weniger Prozesse laufen. Manchmal ist es nützlich, detaillierte Informationen über diese Prozesse zu erhalten, vor allem, wenn der Computer langsam läuft, da bestimmte Prozesse den Arbeitsspeicher oder die CPU des Computers auslasten können. Es ist sehr praktisch, diese Prozesse ausfindig zu machen und anschließend zu zerstören.
Wenn Sie mit Windows arbeiten, können Sie den Task-Manager öffnen und auf die Registerkarte „Prozesse“ klicken, um diese Informationen zu sehen. Wenn Sie mit Linux oder einem Unix-basierten Rechner arbeiten, können Sie eine Reihe verschiedener Befehle ausführen:
ps aux // this will display a list of processestop // detailed information about all processes, threads, memory hoggers and network packets
Wie verwaltet das Betriebssystem Prozesse
Ein Prozess kann sich zu jedem Zeitpunkt in einem bestimmten Zustand befinden. Er kann gerade erstellt worden sein, auf seine Ausführung warten, auf den Zugriff auf ein E/A-Gerät warten, von einem anderen Prozess unterbrochen werden usw. Um maximale Produktivität zu gewährleisten, muss das Betriebssystem den Zustand all dieser Prozesse kennen und in der Lage sein, auf intelligente Weise neue Prozesse zu erstellen, zwischen ihnen zu wechseln, sie anzuhalten, sie zu unterbrechen usw., und zwar zum richtigen Zeitpunkt.
Um dies effektiv zu tun, unterhält das Betriebssystem für jeden Prozess einen so genannten Prozesskontrollblock. Er enthält nützliche Informationen wie den aktuellen Prozesszustand, die nächste auszuführende Anweisung und die dem Prozess derzeit zugewiesenen Geräte.
Dies ermöglicht dem Betriebssystem, verschiedene Prozesse effektiv zu verwalten, indem es den aktuellen Zustand im PCB speichert, zwischen ihnen umschaltet und bestimmte Prozesse zu einem späteren Zeitpunkt erneut lädt.
Wie schaltet das Betriebssystem zwischen verschiedenen Prozessen um
Kontextumschaltung bezieht sich auf die spezifische Aktivität, bei der ein Betriebssystem den Zustand eines laufenden Prozesses speichert und ihn anhält, um einen anderen auszuführen. Dabei muss sichergestellt werden, dass diese Prozesse nicht miteinander kollidieren und dass der gespeicherte Prozess später ohne Probleme wieder aufgenommen werden kann. Dies gewährleistet eine wichtige Funktion von Betriebssystemen: Multitasking. Das Diagramm zeigt, wie das PCB verwendet wird, um den Zustand eines Prozesses zu speichern, einen anderen auszuführen und den ursprünglichen Prozess später wieder zu laden und fortzusetzen.