Betriebssysteme (11) - Prozesse und Prozesszustände

avatar

Wir wollen uns in diesem Abschnitt damit beschäftigen, wie das Betriebssystem die Ausführung von Programmen ermöglicht und warum wir das Gefühl haben, dass mehrere Prozesse quasi "parallel" laufen.

Ein Programm, das sich gerade in Ausführung befindet, heißt Prozess. Zum Prozess gehört aber nicht nur ein Programmstück, sondern auch der Prozesskontext bestehend aus

  • den Registerinhalten
  • Befehlszähler
  • Grenzen des Adressraums
  • Prozessnummer
  • Priorität

und anderen Informationen. Diese Angaben werden im Prozesskontrollblock (process control block = PCB) zusammengefasst. Dort steht auch vermerkt, ob der Prozess im System- oder im Benutzermodus arbeitet.

Prozesszustände

Ein Prozess wird zu irgendeinem Zeitpunkt erzeugt z. B. durch einen anderen Prozess und zu einem späteren Zeitpunkt beendet, wenn er mit der Bearbeitung fertig ist. Dazwischen kann er mehrfach zwischen drei Zuständen wechseln, die in Folgender Abbildung dargestellt sind.

bs.png

Nach der Erzeugung eines Prozesses erhält er vom Betriebssystem die benötigte Ressource wie z. B. einen Speicherbereich, den Prozesskontext und den PCB zugeteilt. Nun ist der Prozess bereit für die Bearbeitung und der Prozess geht in den Zustand bereit. Bei den Einprozessorsystemen ist zu jedem Zeitpunkt genau ein Prozess im Zustand rechnend. Bei einem Mehrprozessorsystem können mehrere Prozesse im Zustand rechnend sein. Jeder andere existierende Prozess ist entweder bereit und bewirbt sich mit den übrigen bereiten Prozessen um die Zuteilung der CPU, oder er ist blockiert und wartet darauf, dass seine Ein-/Ausgabeanforderung erledigt wird oder ein bestimmtes Ereignis eintritt.

Wenn zum Beispiel ein laufendes Benutzerprogramm auf eine Eingabe von der Tastatur wartet, führt es einen Systemaufruf durch. Ohne die Ein-/Ausgabedaten kann der Benutzerprozess nicht weiterarbeiten; er wird deshalb vom Betriebssystem vom Zustand rechnend in den Zustand blockiert versetzt.
Danach ist die CPU frei, um andere Prozesse zu bearbeiten. Wenn dann die Daten bereitstehen und der Tastaturcontroller eine Unterbrechung auslöst, wird der Benutzerprozess in den Zustand bereit gebracht, denn seine Arbeit kann nun weitergehen. Das heißt aber nicht, dass er sofort die CPU zugeteilt bekommt: Welcher der bereiten Prozesse als nächster rechnen darf, entscheidet der CPU-Scheduler. Der Scheduler kann seine Entscheidungen nach unterschiedlichen Strategien treffen.

Ein rechnender Prozess kann auch durch einen Systemaufruf mitteilen, dass er auf ein bestimmtes Ereignis warten will; er wird dann blockiert und kommt in eine spezielle Warteschlange, in der möglicherweise noch andere blockierte Prozesse stehen, die auf dasselbe Ereignis warten. Wenn dann dieses Ereignis eintritt, kann der Prozess, welcher es auslöst, ein Signal abschicken. Dieses Signal bewirkt, dass alle Prozesse aus der Warteschlange wieder in den Zustand bereit versetzt werden.

Nachfolgend werden zwei bekannte Schedulingstrategien erwähnt:

  • Bei FCFS (first-come, first-served) darf zuerst rechnen, wer zuerst kommt; Dieses Verfahren ist leicht zu implementieren; es genügt, eine Warteschlange (queue) einzurichten, bei der immer der erste Prozess als nächster an die Reihe kommt und neu eintreffende bereite Prozesse sich hinten anstellen. Der Nachteil: Ein früh eintreffender Prozess mit hohem Rechenzeitbedarf oder einer Endlosschleife hält alle späteren Prozesse auf

  • Das Verfahren SJF (shortest job first) kann den Nachteil von FCFS vermeiden; hier werden die Prozesse im Zustand bereit in der Reihenfolge aufsteigenden Rechenzeitbedarfs bearbeitet. Voraussetzung für eine sinnvolle Anwendung von SJF ist, dass sich die benötigte Rechenzeit (bis zur nächsten Unterbrechung) aus Erfahrungswerten gut vorhersagen lässt

Quelle
Imran Qureshi. CPU Scheduling Algorithms: A Survey. In: Advanced Networking and Applications, Volume 5, Issue 4. 2014. ISSN : 0975-0290



0
0
0.000
2 comments
avatar

Congratulations @ozelot47! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You distributed more than 900 upvotes. Your next target is to reach 1000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @steemitboard:

SteemFest Meet The Stemians Contest - The mysterious rule revealed

You can upvote this notification to help all Steem users. Learn how here!

0
0
0.000
avatar


This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie and @minnowbooster.

If you appreciate the work we are doing, then consider supporting our witness @stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider using the steemstem.io app and/or including @steemstem in the list of beneficiaries of this post. This could yield a stronger support from SteemSTEM.

0
0
0.000