Aus dem SRE-Geschäft habe ich das Gefühl, dass mir jeden Tag Kenntnisse über den Betriebssystemmechanismus und den Linux-Mechanismus fehlen. Vor kurzem habe ich Bücher darüber gelesen und mein Wissen schrittweise ergänzt. Dieser Artikel wird ausgegeben, wenn er ergänzt wird. Wenn Sie Vorschläge haben, würde ich mich freuen, wenn Sie einen Kommentar abgeben könnten.
Beim Schreiben dieses Artikels habe ich mich hauptsächlich auf die folgenden Bücher bezogen! Lehrbuch 2 für Infrastrukturingenieure 2 Techniken und Kenntnisse zur Verbesserung der Fähigkeiten
Es bezieht sich auf die minimale Ausführungseinheit auf dem Betriebssystem. Der Prozess wird durch Zuweisen von CPU-Ressourcen ausgeführt.
Es gibt die Zustände "Running Town", "Running" und "Hibernate". Jedes Mal, wenn ein Prozess erstellt wird, wechselt er in verschiedene Zustände.
Wenn Sie einen neuen Prozess erstellen, kopieren Sie zunächst einen bereits vorhandenen Prozess (Forking genannt). Sie können es auch mit einem Befehl überprüfen. Überprüfen Sie es daher bitte. pstree
Wenn Sie den Befehl ls eingeben, wird er in der folgenden Reihenfolge ausgeführt.
1.Geben Sie den Befehl ls ein
2.Bash-Prozess ist gegabelt
3.Generierung untergeordneter Prozesse(Virtueller Speicher kann zugewiesen werden.)
4.Der Inhalt des untergeordneten Prozesses wird durch den Systemaufruf exec zum Befehl ls
Es ist eine Ausführungseinheit einer Aufgabe, die in einem Prozess mehrmals erstellt werden kann, damit eine parallele Verarbeitung durchgeführt werden kann.
Obwohl es sich um dieselbe Struktur handelt, wird der Thread durch Übergeben eines Flags realisiert, z. B. ob der Speicherplatz beim Erstellen kopiert werden soll.
Beim Erstellen eines Prozesses werden alle Informationen des übergeordneten Prozesses an den untergeordneten Prozess weitergegeben, und der virtuelle Speicher ist für den untergeordneten Prozess reserviert, sodass es sich um einen relativ schweren Prozess handelt.
Wie Sie im folgenden Artikel sehen können, gab es im historischen Kontext zunächst nur Prozesse, keine Threads. Beim Erstellen eines Prozesses gibt der übergeordnete Prozess den untergeordneten Prozess auf und alle Informationen werden vererbt, was ineffizient ist. Ich denke, dass es ** Threads ** sind, die den Speicherplatz des Prozesses teilen und eine parallele Verarbeitung realisieren können.
[Parallelverarbeitung, dies und das der Parallelverarbeitung --Qiita](https://qiita.com/Kohei909Otsuka/items/26be74de803d195b37bd#%E4%B8%A6%E5%88%97%E5%87%A6%E7%90%86 % E3% 81% A7% E3% 81% A9% E3% 81% 86% E3% 81% 84% E3% 81% 86% E3% 81% A8% E3% 81% 8D% E3% 81% AB% E3 % 83% 91% E3% 83% 95% E3% 82% A9% E3% 83% BC% E3% 83% 9E% E3% 83% B3% E3% 82% B9% E3% 81% 8C% E3% 81 % 82% E3% 81% 8C% E3% 82% 8B% E3% 81% AE% E3% 81% 8B% E7% 90% 86% E8% AB% 96)
Ein Mechanismus, mit dem nur ein Thread neu geschrieben werden kann
Wenn Sie einen Prozess erstellen, wird virtueller Speicher zugewiesen und der Prozess wird ausgeführt.
Bezieht sich auf das Hauptspeichergerät (Hauptspeicher / RAM).
Es ist ein Mechanismus, der das System so aussehen lässt, als hätte es mehr Speicher als es tatsächlich ist. Wenn ein Prozess auf den Speicher zugreift, durchläuft er den virtuellen Speicher.
MMU Die in die CPU integrierte MMU (Memory Management Unit) konvertiert die virtuelle Speicheradresse und die physische Speicheradresse. Die MMU liefert die Informationen ** Paging-Tabelle ** und verwendet sie zur Durchführung der Konvertierung. Diese Entsprechung wird auch als Zuordnung bezeichnet. [[Abbildung] Das Wesen, der Mechanismus und die Vorzüge des virtuellen Speichers (virtueller Speicher) ~ Informationen zu Swaps, MMUs und Paging-Tabellen ~ \ | SE-Richtlinie](https://milestone-of-se.nesuke.com/sv-basic/ Architektur / Virtual-Memory-and-Swap /)
Angenommen, einem Prozess geht der physische Speicher aus, wenn er das Betriebssystem auffordert, Speicher zuzuweisen. In diesem Fall wird der bereits zugewiesene physische Speicherplatz für den Auslagerungsbereich freigegeben. (Tauschen Sie aus) Wenn umgekehrt die ausgestoßenen Daten benötigt werden, werden die Daten aus dem Auslagerungsbereich in den physischen Speicherbereich zurückgegeben. (Swap-In) Vom virtuellen Speicher ist der von der Festplatte verwendete Bereich der Auslagerungsbereich.
Das Betriebssystem bietet eine Funktion (API) namens "Systemaufruf" für allgemeine Programme, auf die im Prinzip indirekt über diesen Systemaufruf zugegriffen werden soll.
Ich denke, es ist ein Bild der Schnittstelle. ・ Es vermittelt den Zugriff auf den Linux-Kernel.
[[Abbildung] Benutzer- und Kernelbereich für Anfänger, Systemaufruf, MMU- / Speicherschutz, Mechanismus \ | SE-Richtlinie](https://milestone-of-se.nesuke.com/sv-basic/architecture/user -space-kernel-space /)
Das Betriebssystem fungiert als Vermittler zwischen Hardware und Software. Der Linux-Kernel ist eine Kernfunktion eines solchen Betriebssystems.
Diese Erklärung im Artikel unten ist ziemlich nett.
[Für Anfänger] Was ist der Linux-Kernel? --Qiita
Von unten zitiert [Datei: Layer-of-System.png](https://uc2.h2np.net/index.php/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB : Layer-of-System.png)
Der Benutzerbereich ist der von der Anwendung verwendete Speicherbereich (auf dem Betriebssystem ausgeführte Software). Kernelspeicher bezieht sich auf den vom Kernel verwendeten Speicherbereich.
Dies ist ein separater Kernel- und Benutzerbereich innerhalb der MMU.
Wenn jemand auf den Kernelbereich zugreifen kann, führt dies zum Zugriff auf das Betriebssystem. Dies kann gleichzeitig das Betriebssystem selbst zerstören. Deshalb wage ich es, den Raum auf diese Weise zu teilen.
Prozesse im Benutzermodus haben keinen Zugriff auf den Kernelspeicher. Wenn ich es jedoch verwenden möchte, kann ich mit einer Funktion namens ** Context Switch ** zwischen Benutzermodus und Kernelmodus wechseln.
Einführung in den Linux-Kernel User Space und Kernel Space \ | Einführung in die Entwicklung von Linux-Gerätetreibern
Recommended Posts