Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >Unter welchen Umständen erfolgt die Linux-Prozessplanung?
Was passiert bei der Prozessplanung unter Linux: 1. Im Moment des Prozesszustandsübergangs, der Prozessbeendigung oder des Prozessschlafs muss der Prozess Funktionen wie „sleep()“ oder „exit()“ aufrufen, um Zustandsübergänge durchzuführen. und diese Funktionen rufen aktiv die Planung auf. Das Programm führt eine Prozessplanung durch. 2. Wenn der aktuelle Prozesszähler = 0 ist, wird die Zeitscheibe des Prozesses durch den Taktinterrupt aktualisiert Bei langen und sich wiederholenden Aufgaben wird die Planung direkt als Programm 4 bezeichnet. Wenn der Prozess nach Unterbrechung, Ausnahme und Systemaufruf in den Benutzermodus zurückkehrt.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.
Der Linux-Scheduler ist eine Funktion namens Schedule(), die bestimmt, ob Prozesse gewechselt werden sollen. Der sogenannte Scheduling-Timing bezieht sich auf die Umstände, unter denen der Scheduler ausgeführt wird.
Linux-Prozessplanung nutzt präemptives Multitasking, sodass das Anhalten und die weitere Ausführung von Prozessen keine Zusammenarbeit untereinander erfordern.
Es gibt hauptsächlich die folgenden Situationen:
Der Moment des Prozessstatusübergangs: Prozessbeendigung, Prozessschlaf;
Der Prozess muss Sleep() oder Exit() und andere Funktionen aufrufen, um den Status auszuführen Übergang. Diese Funktionen rufen aktiv den Planer für die Prozessplanung auf.
Wenn die Zeitscheibe des aktuellen Prozesses abläuft (aktueller Zähler = 0); wird durch die Taktunterbrechung aktualisiert, daher ist diese Situation dieselbe wie Gelegenheit 4.
Gerätetreiber
Wenn ein Gerätetreiber eine lange und sich wiederholende Aufgabe ausführt, wird der Scheduler direkt aufgerufen. In jeder wiederholten Schleife überprüft der Treiber den Wert von need_resched und ruft bei Bedarf den Scheduler Schedule() auf, um die CPU aktiv freizugeben.
Wenn der Prozess von einem Interrupt, einer Ausnahme oder einem Systemaufruf in den Benutzermodus zurückkehrt;
Wie bereits erwähnt, wird ret_from_sys_call() schließlich aufgerufen, unabhängig davon, ob er von einem Interrupt, einer Ausnahme oder einem Systemaufruf zurückkehrt. Diese Funktion prüft das Scheduling-Flag und ruft ggf. den aufrufenden Scheduler auf.
Unter Linux können Prozesse nicht länger als die ihnen zugewiesene Zeitspanne laufen. Sie nutzen präventives Multitasking, sodass Prozesse angehalten und fortgesetzt werden können, ohne dass sie sich gegenseitig unterbrechen. In einem Multitasking-System wie Linux konkurrieren möglicherweise mehrere Programme um die Nutzung derselben Ressource. In diesem Fall glauben wir, dass Programme, die kurzfristige Burst-Arbeit ausführen und auf Eingaben warten, besser sein sollten als ein Programm, das beibehält Dadurch wird der Prozessor für Berechnungen beansprucht oder das System wird ständig abgefragt, um zu sehen, ob Eingaben eingegangen sind. Wir nennen Programme, die eine gute Leistung erbringen, nette Programme, und in gewisser Weise kann diese Nettigkeit berechnet werden. Das Betriebssystem bestimmt die Priorität eines Prozesses anhand seines Nice-Werts. Der Nice-Wert eines Prozesses ist standardmäßig 0 und ändert sich weiterhin basierend auf der Leistung des Programms. Programme, die über einen längeren Zeitraum kontinuierlich laufen, haben in der Regel eine niedrigere Priorität.
Warum wird der Scheduler aufgerufen, wenn von einem Systemaufruf zurückgekehrt wird?
Das hat natürlich Effizienzgründe. Die Rückkehr von einem Systemaufruf bedeutet, den Kernelstatus zu verlassen und in den Benutzerstatus zurückzukehren. Der Statusübergang dauert daher eine gewisse Zeit. Daher hat das System vor der Rückkehr in den Benutzerstatus alle Dinge abgeschlossen, die im ausgeführt werden sollen Kernel-Status.Werfen wir einen kurzen Blick darauf, was der Kernel tut, wenn jede Taktunterbrechung auftritt. Zuerst haben wir ein allgemeines Verständnis dieser häufigsten Planungsmöglichkeit und diskutieren dann den spezifischen Arbeitsprozess des Schedulers im Detail.
Bei jedem Timer-Interrupt arbeiten drei Funktionen zusammen, um die Prozessauswahl und -umschaltung abzuschließen: Schedule(), do_timer() und ret_form_sys_call(). schedule(): Prozessplanungsfunktion, die die Prozessauswahl abschließt (Scheduling); do_timer(): Diese Funktion wird im Clock-Interrupt-Serviceprogramm aufgerufen Hauptbestandteil der Funktion, die Häufigkeit, mit der diese Funktion aufgerufen wird, ist die Frequenz des Taktinterrupts, die 100 Mal pro Sekunde beträgt (bezeichnet als 100 Hz oder 100 Hz); ret_from_sys_call(): Systemaufruf-Rückgabefunktion. Wenn ein Systemaufruf oder Interrupt abgeschlossen ist, wird diese Funktion aufgerufen, um einige Abschlussarbeiten zu erledigen, z. B. Signalverarbeitung, Kernaufgaben usw. Empfohlenes Lernen:Linux-Video-Tutorial
Das obige ist der detaillierte Inhalt vonUnter welchen Umständen erfolgt die Linux-Prozessplanung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!