1. Prozessplanungsmodul
(Empfohlenes Tutorial: Linux-Tutorial)
Linux verwendet Prozesse als Grundeinheit für die Zuweisung von Systemressourcen und verwendet einen erweiterten Prozessalgorithmus mit dynamischer Priorität, um sicherzustellen, dass jeder Prozess den Prozessor nutzt Rationalität. Das Prozessplanungsmodul verwaltet und steuert hauptsächlich den vom Prozess verwendeten Prozessor.
[Prozesserstellung]:
Beim Programmieren in einer Linux-Umgebung wird im Allgemeinen die Funktion fork()/vfork() verwendet (Fork dient dazu, einen untergeordneten Prozess zu erstellen und die Speicherdaten des übergeordneten Prozesses in den untergeordneten Prozess zu kopieren; vfork dient zum Erstellen eines untergeordneten Prozesses und wird zusammen mit der Speicherdatenfreigabe des übergeordneten Prozesses zum Erstellen eines neuen Prozesses verwendet. Dies ist natürlich eine Funktion im Benutzerbereich, die den Systemaufruf clone() im Kernel aufruft , und die Funktion clone() ruft weiterhin do_fork() auf. Schließen Sie die Erstellung des Prozesses ab.
fork()/vfork()/_clone--->clone()--->do_fork()--->copy_process()
【Prozess rückgängig machen】:
Nachdem der Prozess beendet ist, muss der Kernel benachrichtigt werden, damit der Kernel die Ressourcen freigeben kann, die dem Prozess gehören, einschließlich Speicher, geöffnete Dateien und andere Ressourcen wie Semaphoren. Die allgemeine Möglichkeit, einen Prozess zu beenden, besteht darin, die Bibliotheksfunktion „exit()“ aufzurufen, die die von der C-Funktionsbibliothek zugewiesenen Ressourcen freigibt, jede vom Programmierer registrierte Funktion ausführt und den Systemaufruf beendet, der den Prozess vom System zurückfordert.
【Prozesswechsel】:
Prozesswechsel wird auch Aufgabenwechsel und Kontextwechsel genannt. Dabei handelt es sich um das Verhalten, bei dem der Kernel zur Steuerung der Ausführung eines Prozesses den aktuell auf der CPU ausgeführten Prozess anhält und die Ausführung eines zuvor angehaltenen Prozesses wieder aufnimmt.
Im Wesentlichen besteht jeder Prozesswechsel aus zwei Teilen:
Wechseln Sie das globale Seitenverzeichnis, um einen neuen Adressraum zu installieren; wechseln Sie den Kernel-Modus-Stack und den Hardware-Kontext, da der Hardware-Kontext alle Informationen bereitstellt, die der Kernel zum Ausführen des neuen Prozesses benötigt , einschließlich CPU-Registern, wird hauptsächlich durch die Funktion switch_to() vervollständigt.
【Prozessplanung】:
Unter modernem Linux kann der Planungsalgorithmus einen Prozess auswählen, der innerhalb einer festen Zeit ausgeführt werden soll (unabhängig von der Anzahl der ausführbaren Prozesse). Zunächst müssen wir wissen, dass Prozesse in Echtzeitprozesse und gewöhnliche Prozesse unterteilt werden können. Jeder Linux-Prozess wird immer nach den folgenden Planungstypen geplant: First-In-First-Out-Echtzeitprozess, Zeitscheibenrotations-Echtzeitprozess und gewöhnlicher Time-Sharing-Prozess. Planungsalgorithmen unterscheiden sich erheblich, je nachdem, ob es sich um einen normalen Prozess oder einen Echtzeitprozess handelt.
2. Modul zur prozessübergreifenden Kommunikation
Die prozessübergreifende Kommunikation wird hauptsächlich zur Steuerung der Synchronisierung, des Datenaustauschs und des Austauschs zwischen verschiedenen Prozessen im Benutzerbereich verwendet. Da verschiedene Benutzerprozesse unterschiedliche Prozessräume haben, muss die Kommunikation zwischen Prozessen mithilfe von Kernel-Relay erfolgen. Normalerweise wird ein Prozess angehalten, während er auf den Abschluss einer Hardwareoperation wartet. Wenn der Hardwarevorgang abgeschlossen ist, wird der Prozess wieder aufgenommen, und dieser Prozess wird durch den Kommunikationsmechanismus zwischen Prozessen koordiniert.
Das prozessübergreifende Kommunikationsmodul stellt sicher, dass Linux eine Vielzahl von prozessübergreifenden Kommunikationsmechanismen unterstützt, darunter Pipes, Named Pipes, Nachrichtenwarteschlangen, Semaphoren und gemeinsam genutzten Speicher.
3. Speicherverwaltungsmodul
Das Speicherverwaltungsmodul von Linux verwendet einen fortschrittlichen virtuellen Speichermechanismus, um die Speicherverwaltung mehrerer Prozesse zu realisieren. Es bietet sehr zuverlässige Speicherschutzmaßnahmen und gewährt Prozessen unterschiedliche Berechtigungen. Benutzer können nicht direkt auf die Programme und Daten des Systems zugreifen, wodurch die Sicherheit des Systems gewährleistet wird. Gleichzeitig wird jedem Benutzerprozess ein unabhängiger virtueller Adressraum zugewiesen.
4. Dateisystemmodul
Das Dateisystemmodul von Linux nutzt die fortschrittliche virtuelle Dateisystemtechnologie (VFS), die die Unterschiede zwischen verschiedenen Dateisystemen abschirmt, eine einheitliche Schnittstelle für die Verarbeitung verschiedener Dateisysteme bietet und mehrere unterstützt. Es gibt mehr als 90 verschiedene physische Dateisysteme. Gleichzeitig behandelt Linux verschiedene Hardwaregeräte als spezielle Dateien und verwaltet die Geräte auf die gleiche Weise wie Dateien, was sehr praktisch und effektiv ist.
5. Netzwerkschnittstellenmodul
Linux verfügt über die leistungsstärksten Netzwerkfunktionen. Das Netzwerkschnittstellenmodul implementiert die Netzwerkkommunikation zwischen Computern über den Socket-Mechanismus und verwendet das Netzwerkschichtmodell, um Unterstützung für mehrere Netzwerkprotokolle und Netzwerkhardwaregeräte bereitzustellen.
Die Netzwerkschnittstelle ermöglicht die Implementierung verschiedener Netzwerkstandards und Unterstützung für verschiedene Netzwerkhardware. Netzwerkschnittstellen werden im Allgemeinen in Netzwerkprotokolle und Netzwerktreiber unterteilt. Der Netzwerkprotokollteil ist für die Implementierung aller möglichen Netzwerktransportprotokolle verantwortlich. Netzwerkgerätetreiber sind hauptsächlich für die Kommunikation mit Hardwaregeräten verantwortlich. Jedes mögliche Netzwerkhardwaregerät verfügt über einen entsprechenden Gerätetreiber.
Das obige ist der detaillierte Inhalt vonWas sind die fünf Hauptmodule des Linux-Kernels?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!