[OS / Linux] Prozess-, Thread-, Speicherverwaltung

Mangel an Wissen

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

Prozesse und Threads

Prozess

Es bezieht sich auf die minimale Ausführungseinheit auf dem Betriebssystem. Der Prozess wird durch Zuweisen von CPU-Ressourcen ausgeführt.

Elemente, aus denen sich der Prozess zusammensetzt

Staatsübergang

Es gibt die Zustände "Running Town", "Running" und "Hibernate". Jedes Mal, wenn ein Prozess erstellt wird, wechselt er in verschiedene Zustände.

Erstellen Sie einen neuen Prozess

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

Faden

Es ist eine Ausführungseinheit einer Aufgabe, die in einem Prozess mehrmals erstellt werden kann, damit eine parallele Verarbeitung durchgeführt werden kann.

image.png

Unterschied zum Prozess

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)

Mutax

Ein Mechanismus, mit dem nur ein Thread neu geschrieben werden kann

Speicherverwaltung

Wenn Sie einen Prozess erstellen, wird virtueller Speicher zugewiesen und der Prozess wird ausgeführt.

Gesamtbild

image.png

Physikalischer Speicher

Bezieht sich auf das Hauptspeichergerät (Hauptspeicher / RAM).

Virtueller Speicher

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.

The Linux Kernel

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 /)

Tauschen

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.

Systemaufruf

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 /)

Linux Kernel

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

image.png 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)

Kernel Space und User Space

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.

Warum müssen Sie trennen

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.

Wenn Sie den Kernelspeicher verwenden möchten

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

[OS / Linux] Prozess-, Thread-, Speicherverwaltung
Linux-Prozess
Verwalten des Jupyter-Prozesses
Linux (Befehlsspeicher)
[Linux] [C] CPU-Zeit pro Prozess / Thread abrufen
OS- und Linux-Distribution
Verwaltung des Startzeitspeichers
Speicherverwaltung »Konzeptübersicht
[Übersetzung] Spark Memory Management seit 1.6.0
Linux-Hauptpaketverwaltungssystem