Heim  >  Artikel  >  System-Tutorial  >  Detaillierte Erläuterung der Linux-Architektur und Kernelstruktur

Detaillierte Erläuterung der Linux-Architektur und Kernelstruktur

WBOY
WBOYnach vorne
2024-02-11 10:54:30936Durchsuche

Linux-Architektur

Wie in der folgenden Abbildung dargestellt, kann die Linux-Architektur grob in Benutzerbereich (User Space) und Kernel-Bereich (Kernel Space) unterteilt werden.

Detaillierte Erläuterung der Linux-Architektur und Kernelstruktur

Der Benutzerbereich umfasst C-Bibliotheken und Benutzeranwendungen. Natürlich sind auch Shell-Skripte ein integraler Bestandteil des Linux-Systems.

Kernelraum umfasst Hardwareplattform, plattformabhängigen Code, Kernel und Systemaufrufschnittstelle.

In jedem modernen Betriebssystem gibt es Schichten. Warum ist Layering notwendig? Aus der Sicht eines Programmierers ermöglicht die Trennung von Linux-Basis und Anwendungen, dass sich jede auf ihren eigenen Bereich konzentrieren kann, wodurch die Effizienz verbessert wird. Aus Sicherheitsgründen geht es beim Layering um den Schutz des Kernels. Moderne CPUs implementieren in der Regel unterschiedliche Arbeitsmodi. ARM implementiert beispielsweise 7 Arbeitsmodi. In verschiedenen Modi kann die CPU unterschiedliche Anweisungen ausführen oder auf unterschiedliche Register zugreifen. Wenn alle Anwendungen der oberen Schicht Register nach Belieben aufrufen können, kann das Betriebssystem nicht stabil ausgeführt werden. Daher ist bei Betriebssystemen eine neue Disziplin entstanden – „moderne Betriebssysteme“.

In der X86-Architektur sind 4 verschiedene Berechtigungsebenen implementiert, nämlich Ring0 bis Ring3. Unter Ring0-Berechtigungen können privilegierte Anweisungen ausgeführt und auf IO-Geräte zugegriffen werden, während es unter Ring3-Berechtigungen viele Einschränkungen gibt.

Android ist noch „verrückter“. Alle APK-Anwendungen laufen auf der Java Virtual Machine und die Anwendungen sind weiter von der untersten Ebene entfernt.

Darüber hinaus sind Benutzerbereich und Kernelbereich zwei verschiedene Zustände der Programmausführung. Wir können die Übertragung vom Benutzerbereich zum Kernelbereich durch „Systemaufruf“ und „Hardware-Interrupt“ abschließen.

Linux-Kernelstruktur

In diesem Abschnitt analysieren wir die Kernelstruktur.

Wie in der Abbildung unten gezeigt, handelt es sich um das Strukturdiagramm des Linux-Kernels.

Detaillierte Erläuterung der Linux-Architektur und Kernelstruktur

SCI-Schicht (System Call Interface), diese Schicht bietet eine Reihe von Standard-Systemaufruffunktionen für den Anwendungsbenutzerbereich, um auf Linux zuzugreifen. Bei der Analyse der Linux-Architektur haben wir zuvor festgestellt, dass jedes moderne Betriebssystem Anwendungen der oberen Ebene keinen direkten Zugriff auf die untere Ebene ermöglicht. In Linux stellt der Kernel eine Reihe von Standardschnittstellen bereit, über die Anwendungen der oberen Ebene zugreifen können .

PM (Procees Management), dieser Teil umfasst insbesondere das Erstellen von Prozessen (Fork, Exec), das Stoppen von Prozessen (Kill, Exit) und die Steuerung der Kommunikation zwischen ihnen (Signal usw.). Ebenfalls enthalten ist die Prozessplanung, die steuert, wie aktive Prozesse die CPU gemeinsam nutzen. Dieser Teil wurde bereits von Linux erledigt. Beim Schreiben des Treibers müssen Sie nur die entsprechenden Funktionen aufrufen, um diese Funktionen zu implementieren, z. B. Prozesserstellung, Prozesskommunikation usw.

MM (Speicherverwaltung), die Hauptfunktion der Speicherverwaltung besteht darin, den sicheren gemeinsam genutzten Speicherbereich mehrerer Prozesse zu steuern.

VFS (Virtual File Systems), ein virtuelles Dateisystem, verbirgt die spezifischen Details verschiedener Dateisysteme und bietet eine einheitliche Schnittstelle für Dateivorgänge. Unter Linux ist „alles eine Datei“, und diese Dateien werden über VFS implementiert. Linux bietet ein großes allgemeines Modell, das die Menge aller Dateisystemfunktionen umfasst. Wie in der folgenden Abbildung dargestellt, handelt es sich um das Strukturdiagramm eines virtuellen Dateisystems.

Detaillierte Erläuterung der Linux-Architektur und Kernelstruktur

Gerätetreiber, diesen Teil müssen Sie lernen und beherrschen. Im Linux-Kernel befindet sich im Gerätetreiberbereich eine große Menge Code, der zur Steuerung bestimmter Hardwaregeräte verwendet wird.

Linux-Treiber werden im Allgemeinen in Netzwerkgeräte, Blockgeräte, Zeichengeräte und verschiedene Geräte unterteilt. Wir müssen nur Zeichengeräte schreiben, die nicht einfach zu klassifizieren sind Zeichengeräte.

Netzwerkprotokoll-Stack, der Linux-Kernel bietet eine Fülle von Netzwerkprotokoll-Implementierungen.

Bevor Sie Linux-Treiber erlernen, müssen Sie die Linux-Architektur und die Linux-Kernelstruktur verstehen und beherrschen

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Linux-Architektur und Kernelstruktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lxlinux.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen