Einführung | Wenn wir bei der täglichen Betriebs- und Wartungsarbeit regelmäßig den Befehl ps ausführen, werden wir viele „seltsame“ Prozesse sehen, und die meisten dieser Prozesse sind die Kernelprozesse des Systems. Da viele Studenten sehr wenig darüber wissen, werde ich heute einen Beitrag zur Einführung in den Systemprozess für Einsteiger für Sie zusammenstellen, in der Hoffnung, allen dabei zu helfen, den Betriebssystemprozess zu verstehen. |
Wenn wir bei der täglichen Betriebs- und Wartungsarbeit regelmäßig den Befehl ps ausführen, werden wir viele „seltsame“ Prozesse sehen, und die meisten dieser Prozesse sind Kernelprozesse des Systems. Viele Studenten wissen sehr wenig darüber, daher werde ich heute einen Einführungsbeitrag zum Systemprozess für Einsteiger für Sie zusammenstellen, in der Hoffnung, allen dabei zu helfen, den Betriebssystemprozess zu verstehen.
Bei den täglichen Betriebs- und Wartungsarbeiten sehen wir oft einige seltsame Systemprozesse, die relativ viel Ressourcen beanspruchen. Und ich höre immer wieder Studenten aus dem Geschäftsbereich fragen: „Welcher Prozess ist xxx? Warum wurden so viele davon eröffnet?“
Diese Kernelprozesse auf Systemebene sind in Klammern eingeschlossen und führen einige Systemhilfsfunktionen aus (z. B. das Schreiben des Caches auf die Festplatte). Prozesse ohne Klammern sind Prozesse, die von Benutzern ausgeführt werden (z. B. PHP, Nginx usw.).Wie im Bild unten gezeigt:
Hier sind 10 gängige Systemprozesse für alle:
kswapd0
kjournald
pdflush
kthreadd
Migration
Wachhund
Veranstaltungen
kblockd
aio
rpciod
Linux verwendet kswapd für die Verwaltung des virtuellen Speichers, sodass Seiten, auf die kürzlich zugegriffen wurde, im Speicher bleiben und weniger aktive Seiten auf die Festplatte ausgelagert werden. (Was ist eine Seite?) … Linux verwendet kswapd, um den Speicher in Einheiten namens Seiten zu verwalten Der kswapd-Prozess verringert regelmäßig das Alter nicht referenzierter Seiten … und am Ende werden sie auf die Festplatte ausgelagert (verschoben) kjournald journal: Metadatenänderungen auf allen Dateisystemen aufzeichnen, der langsamste Modus.
protokolliert alle Dateisystemdaten und Metadatenänderungen. Dieser Journalmodus ist der langsamste der drei ext3-Journalmodi und minimiert das Risiko, dass die Änderungen, die Sie an einer Datei in einem ext3-Dateisystem vorgenommen haben, verloren gehen. geordnet: Der Standardmodus zeichnet nur die Metadaten von Dateisystemänderungen auf und zeichnet das Protokoll vor der Änderung auf.
protokolliert nur Änderungen an Dateisystem-Metadaten, schreibt aber Dateidatenaktualisierungen auf die Festplatte, bevor Änderungen an zugehörigen Dateisystem-Metadaten vorgenommen werden. Rückschreiben: Der schnellste Modus, der außerdem nur geänderte Metadaten aufzeichnet und auf dem Standard-Dateisystem-Schreibprozess basiert, um Daten auf die Festplatte zu schreiben
Protokolliert nur Änderungen an Dateisystem-Metadaten, verlässt sich jedoch auf den Standard-Dateisystem-Schreibprozess, um Dateidatenänderungen auf die Festplatte zu schreiben. Dies ist der schnellste ext3-Journaling-Modus. pdflush pdflush wird verwendet, um den Inhalt im Speicher mit dem Dateisystem zu synchronisieren.
Beispiel: Wenn eine Datei im Speicher geändert wird, ist pdflush dafür verantwortlich, sie zurück auf die Festplatte zu schreiben. Immer wenn die Anzahl der fehlerhaften Seiten im Speicher 10 % überschreitet, sichert pdflush diese Seiten wieder auf der Festplatte. Dieses Verhältnis ist einstellbar und der Standardwert ist 10 über das Element vm.dirty_background_ratio in /etc/sysctl.conf.
kthreadd Es gibt nur einen solchen Kernel-Thread. Seine Aufgabe besteht darin, andere Kernel-Threads zu verwalten und zu planen.
Es wird während der Kernel-Initialisierung erstellt und führt eine Funktion namens kthreadd in einer Schleife aus. Die Funktion dieser Funktion besteht darin, den in der globalen verknüpften Liste kthread_create_list verwalteten kthread auszuführen. Sie können kthread_create aufrufen, um einen kthread zu erstellen, der zur verknüpften Liste kthread_create_list hinzugefügt wird. Gleichzeitig wird kthread_create kthreadd_task schwächen. Wenn kthreadd kthread ausführt, ruft es die alte Schnittstelle auf – kernel_thread führt einen Kernel-Thread namens „kthread“ aus, um den erstellten kthread auszuführen. Der ausgeführte kthread wird aus der kthread_create_list-Liste gelöscht und kthreadd ruft kontinuierlich den Scheduler auf, um die CPU aufzugeben. Dieser Thread kann nicht geschlossen werden.
Migration Es gibt insgesamt 32 Kernel-Threads, von Migration/0 bis Migration/31. Seine Hauptfunktion besteht darin, als Migrationsprozess des entsprechenden CPU-Kerns zu dienen und die Prozessmigration durchzuführen Operationen. Im Kernel Die Funktion ist migration_thread()
Gehört zum Lastausgleichssystem des 2.6-Kernels. Dieser Prozess wird beim Systemstart automatisch geladen (einer für jede CPU), stellt sich selbst als Echtzeitprozess von SCHED_FIFO ein und prüft dann, ob Anforderungen auf ihn warten Wird in runqueue::migration_queue verarbeitet. Wenn nicht, schlafen Sie einfach in TASK_INTERRUPTIBLE, bis Sie aufwachen, und überprüfen Sie es erneut. migration_thread() ist lediglich eine Schnittstelle für CPU-Bindungs- und CPU-Energieverwaltungsfunktionen. Dieser Thread ist ein wichtiger Teil des Planungssystems.
Wachhund
Es gibt insgesamt 32 Kernel-Threads, von Watchdog/0 bis Watchdog/31. Jeder Prozessorkern entspricht einem Watchdog-Kernel-Thread, der verwendet wird, um den Betrieb des Systems zu überwachen und das System automatisch neu zu starten, wenn das System ausfällt Kernel-Watchdog-Modul und ein User-Space-Watchdog-Programm.
Unter dem Linux-Kernel ist das grundlegende Arbeitsprinzip von Watchdog: Wenn Watchdog gestartet wird (d. h. nachdem das Gerät /dev/watchdog geöffnet wurde), wird /dev/watchdog nicht innerhalb eines bestimmten festgelegten Zeitintervalls (1 Minute) ausgeführt ) Durch einen Schreibvorgang, einen Hardware-Watchdog-Schaltkreis oder einen Software-Timer wird das System neu gestartet, und jeder Schreibvorgang führt dazu, dass der Timer zurückgesetzt wird.
VeranstaltungenEs gibt insgesamt 32 solcher Kernel-Threads, von Events/0 bis Events/31, und jeder Prozessorkern entspricht einem Events-Kernel-Thread. Wird zur Verarbeitung von Kernel-Ereignissen (z. B. Stromausfällen, Dateiänderungen) verwendet und zur Reaktion an Threads verteilt, die an entsprechenden Ereignissen interessiert sind.
kblockdEs gibt insgesamt 32 Kernel-Threads, von kblockd/0 bis kblockd/31. Jeder Prozessorkern entspricht einem kblockd-Kernel-Thread. Wird zur Verwaltung der Blockgeräte des Systems verwendet und aktiviert regelmäßig den Blockgerätetreiber im System. Wenn Sie ein Blockgerät besitzen, können diese Threads nicht entfernt werden.
aioEs gibt insgesamt 32 Kernel-Threads, von aio/0 bis aio/31. Jeder Prozessorkern entspricht einem AIO-Kernel-Thread, der E/A im Namen des Benutzerprozesses verwaltet, um AIO im Benutzermodus (asynchrone E/A) zu unterstützen ). , sollte nicht geschlossen werden.
rpciodEs gibt insgesamt 32 Kernel-Threads, von rpciod/0 bis rpciod/31. Seine Hauptfunktion besteht darin, als Daemon für den Remote-Prozeduraufrufdienst zu dienen und zum Starten von I/ zu dienen. O vom Client-Dienst, der normalerweise beim Starten des NFS-Dienstes verwendet wird.
ZusammenfassungProzess ist ein sehr wichtiges Konzept im Betriebssystem. Alle auf dem System ausgeführten Daten sind in Form eines Prozesses vorhanden. Im Linux-System: Wenn ein Ereignis ausgelöst wird, definiert das System es als Prozess. Daher ist der Prozess die einzige Möglichkeit, ein Linux-Programm zu implementieren.
Das obige ist der detaillierte Inhalt vonSystemprozess: 10 Wissenspunkte, mit denen das Betriebs- und Wartungspersonal vertraut sein muss. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!