Ich habe verschiedene Beziehungen untersucht, die zwischen einem Betriebssystem und einem Benutzerprozess bestehen können. Ich bin auf die Abbildung unten gestoßen. Es zeigt eine Architektur, in der die OS-Funktionen mit Benutzerprozessen ausgeführt werden.
1) Ich wollte den Teil des Diagramms mit der Bezeichnung OS-Funktion klarstellen. Ist dieser Teil für alle Benutzerprozesse identisch? Mit anderen Worten, ist dies gemeinsam genutzter Code, auf den jeder Prozess zugreift?
2) Ist der einzige Unterschied zwischen den Prozessschaltfunktionen (graue Basis im Diagramm) und den OS-Funktionen, die die OS-Funktionen als Benutzerprozesse ausführen, während die Prozessschaltfunktionen als OS-Prozesse arbeiten? Warum muss es so einen Unterschied geben?
Begleittext zur Bereitstellung des Kontexts für das Diagramm:
"Eine Alternative, die bei Betriebssystemen auf kleineren Computern (PCs, Workstations) üblich ist, besteht darin, praktisch die gesamte Betriebssystemsoftware im Kontext eines Benutzerprozesses auszuführen. Die Ansicht ist, dass das Betriebssystem in erster Linie eine Sammlung von Routinen ist, zu deren Ausführung der Benutzer aufruft verschiedene Funktionen, die innerhalb der Umgebung des Benutzerprozesses ausgeführt werden .... Zu einem bestimmten Zeitpunkt verwaltet das Betriebssystem n Prozessabbilder ......... Wenn ein Interrupt-, Trap- oder Supervisor-Aufruf auftritt, ist der Prozessor Im Kernel-Modus wird die Steuerung an das Betriebssystem übergeben. Um die Steuerung von einem Benutzerprogramm an das Betriebssystem zu übergeben, wird der Moduskontext gespeichert und ein Moduswechsel zu einer Betriebssystemroutine durchgeführt. Die Ausführung wird jedoch innerhalb des aktuellen Benutzerprozesses fortgesetzt. Somit wird keine Prozessumschaltung durchgeführt, sondern nur eine Modusumschaltung innerhalb desselben Prozesses.
(S.136 Betriebssysteme von Stallings)
quelle
Antworten:
Bei der Erläuterung des Benutzerprozesses und der Beziehung zwischen Betriebssystem und Kernel sind viele Perspektiven zu berücksichtigen. Es gibt das Speicherlayout und den Adressraum, die Datenübertragung, die Prozessor- und Ausführungsebenen / -privilegien sowie verschiedene Schemata für die Planung.
Ein Diagramm, das aus dem Zusammenhang gerissen wurde, lässt sich nur schwer genau erklären. Woher kommt dieses Diagramm? Was war der Begleittext für dieses Diagramm? Dies könnte sowohl etwas zur Code-Organisation als auch zur Prozessplanung bedeuten.
Nachtrag
Der angeführte Absatz hilft nur wenig. Es gibt wahrscheinlich mehr Text, der dieses Diagramm erklären soll. Der zitierte Absatz erläutert ein Schema , wenn „ein Prozess Schalter nicht ausgeführt“. Wo ist die Erklärung , wann und warum ein Prozess Schalter wird ausgeführt?
Das Betriebssystem verwaltet Statusinformationen zu jedem Prozess: den Wert der Register, den Stapel und den virtuellen Speicher. zusammen wird dies der Kontext des "Prozesses" genannt. Ebenso wichtig ist die Sicherheits- / Berechtigungsstufe des Prozessors, der "Modus".
Stallings erwähnt, dass das Betriebssystem entweder den "Prozess" oder den "Modus" des Prozessors umschalten kann. In dem von Ihnen zitierten Absatz werden diese Prozessorzustände als alternative Methode zur (effizienten) Behandlung von Systemaufrufen, Traps und Interrupts verwendet. Das heißt, das Betriebssystem könnte einfach einen "Modus" -Schalter (vom Benutzermodus in den Kernelmodus) innerhalb des aktuellen "Prozesses" ausführen, um einen Interrupt / Trap / Syscall zu bedienen. Jeder Prozess muss nun genügend Stapelspeicher zuweisen, um System-Interrupts / Traps sowie seine eigenen Anforderungen zu berücksichtigen. Dies sollte teilweise Ihre # 2 beantworten.
Bei Frage 1 gibt es (normalerweise) nur eine Kopie des Kernel-Codes im physischen Speicher. "Betriebssystemfunktionen" wären also gemeinsam genutzter Code. Natürlich muss sich der Prozess im Kernel-Modus befinden, um die Berechtigung zum Ausführen von Kernel-Code zu haben.
quelle