1. Hintergrundwissen
Wie der Name schon sagt, wird ein Prozess ausgeführt. Ein Prozess ist eine Abstraktion eines laufenden Programms.
Das Konzept des Prozesses stammt aus dem Betriebssystem, ist das Kernkonzept des Betriebssystems und eines der ältesten und wichtigsten abstrakten Konzepte des Betriebssystems. Alles andere im Betriebssystem dreht sich um das Konzept eines Prozesses. Wenn Sie den Prozess wirklich verstehen möchten, müssen Sie das Betriebssystem im Voraus verstehen
Entwicklungsverlauf des Betriebssystems: Weitere Informationen finden Sie im Blog: https://www.cnblogs.com/Dominic-Ji/articles/10929381.html
Die notwendige theoretische Grundlage:
# 1 Die Rolle des Betriebssystems: 1 : Verstecken Sie die hässliche und komplexe Hardwareschnittstelle, stellen Sie eine gute abstrakte Schnittstelle bereit. 2 : Verwalten und planen Sie Prozesse und machen Sie die Konkurrenz mehrerer Prozesse um die Hardware ordentlich. # 二 多 道 技术: 1. Generieren Hintergrund: Für einen einzelnen Kern, um gleichzeitige ps zu erreichen : Der aktuelle Host ist im Allgemeinen mehrkernig. Dann verwendet jeder Kern eine Mehrkanaltechnologie mit 4 CPUs. Ein Programm, das auf CPU1 ausgeführt wird, stößt auf io-Blockierung und wartet, bis io endet, bevor es neu geplant wird Wird für eine der vier CPUs geplant, die speziell vom Betriebssystem-Planungsalgorithmus bestimmt werden. 2. Räumliches Multiplexen: Wenn sich mehrere Programme gleichzeitig im Speicher befinden. 3. Zeitmultiplexen: Beim Multiplexen der Zeitscheibe einer CPU wird Folgendes hervorgehoben: Wenn Sie auf einen Schnitt stoßen, dauert es zu lange, bis die CPU-Zeit belegt ist. Der Kern befindet sich vor dem Schnitt Speichern Sie den Status des Prozesses, um sicherzustellen, dass Sie beim nächsten Zurückschalten basierend auf der Position des letzten Schnitts weiterlaufen können
Zweitens Mehrkanaltechnologie
1. Single-Core-Implementierung von gleichzeitigen Effekten
-
Parallelität
Es sieht so aus, als würde es zur gleichen Zeit ausgeführt und kann als gleichzeitig bezeichnet werden
-
Parallel
Gleichzeitige Ausführung im wahrsten Sinne des Wortes
Zusammenfassung:
-
Parallel muss gleichzeitig sein
-
Single-Core-Computer können keine Parallelität erreichen, aber sie können Parallelität erreichen
Ergänzung: Wir gehen direkt davon aus, dass ein einzelner Kern ein Kern ist und nur eine Person arbeitet. Berücksichtigen Sie nicht die Anzahl der Kerne in der CPU
2. Technische Mehrkanalillustration
3. Mehrkanal-Technologiefokus
- Räumliches Multiplexen
- Mehrere Programme teilen sich eine Reihe von Computerhardware
- Zeitmultiplexen
-
Nur die lange machen müssen, kann die Schaltzeit sparen
- Wechseln Sie zwischen Speicherstatus, Benutzermodus und Kernelmodus. Wechseln Sie + Speicherstatus
Das Umschalten (CPU) ist in zwei Fälle unterteilt: 1. Wenn ein Programm auf eine E / A-Operation stößt, entzieht das Betriebssystem dem Programm die Rolle der CPU-Ausführungsberechtigung: Verbessern Sie die CPU-Auslastung und beeinträchtigen Sie nicht die Ausführungseffizienz des Programms Wenn io verzögert wird, hat das Programm keinen Platz zum Ausführen des Bechers, so dass der Entzug den Betrieb des Programms nicht beeinträchtigt. 2. Wenn ein Programm die CPU für eine lange Zeit belegt, beraubt die Betriebsattraktion das Programm auch der CPU-Ausführungsberechtigung. Ausführungseffizienz (ursprüngliche Zeit + Schaltzeit)
3. Prozesstheorie
1. Erforderliche Kenntnisse
'' ' Der Unterschied zwischen einem Programm und einem Prozess Ein Programm ist eine Menge Code, der auf der Festplatte liegt. Ein Prozess , der' tot 'ist, ist ein Prozess, der ausgeführt wird. Es ist ein' live '' '
2. Prozessplanung
- Wer zuerst kommt, mahlt zuerst
- Es ist gut für Operationen mit langer Ausführungszeit, aber nicht für kurze Operationen.
- Da ein langer Job zuerst eintrifft, muss der nächste kurze Job warten, bis der lange Job abgeschlossen ist, bevor der Becherraum für den kurzen Job geleert wird
- Short Job Priority Algorithmus
- Priorisieren Sie kurze Jobs
- Wenn ein langer Job ausgeführt wird und ein kurzer Job kommt, wird der lange Job zuerst angehalten, und dann wird der kurze Job an den langen Job zurückgegeben, um die Ausführung fortzusetzen
- Zeitscheiben-Rotationsmethode + mehrstufige Feedback-Warteschlange
- Unabhängig davon, ob lange oder kurze Jobs zuerst in eine Warteschlange gestellt werden, führen Sie eine bestimmte Zeiteinheit einheitlich aus
- Wenn es nicht innerhalb der angegebenen Zeit abgeschlossen ist, fällt es in die Warteschlange mit der zweiten Priorität und führt eine längere Zeiteinheit aus
- Zu diesem Zeitpunkt setzt ein Job die zweite Ebene direkt aus, um die Arbeit der ersten Ebene auszuführen
- Zusammenfassung: Nutzen Sie den Schalt- und Speicherstatus und optimieren Sie die Ausführungseffizienz von Jobs unterschiedlicher Größe
3. Drei Zustände des Prozesses
Bevor wir andere Konzepte verstehen, müssen wir zunächst einige Zustände des Prozesses verstehen. Während des Ausführens des Programms wird das Programm aufgrund des Planungsalgorithmus des Betriebssystems in mehrere Zustände versetzt: Bereit, Ausführen und Blockieren.
(1) Bereitschaftsstatus
Wenn der Prozess allen erforderlichen Ressourcen außer der CPU zugewiesen wurde, kann er sofort ausgeführt werden, solange der Prozessor erhalten wird. Der Prozessstatus wird zu diesem Zeitpunkt als Bereitschaftsstatus bezeichnet.
(2) Ausführen / Ausführen
StatusWenn der Prozess den Prozessor erfasst hat, wird sein Programm auf dem Prozessor ausgeführt, und der Status des Prozesses zu diesem Zeitpunkt wird als Ausführungsstatus bezeichnet.
(3) Blockierter (blockierter) Zustand
Der ausgeführte Prozess kann nicht ausgeführt werden, da auf das Eintreten eines Ereignisses gewartet wird. Er gibt den Prozessor auf und befindet sich in einem blockierten Zustand. Es kann mehrere Ereignisse geben, die eine Prozessblockierung verursachen, z. B. das Warten auf den Abschluss der E / A, der Anwendungspuffer kann nicht erfüllt werden, das Warten auf Buchstaben (Signale) usw.
4. Zwei Paare wichtiger Konzepte
Beschreibt, wie Aufgaben gesendet werden
- Synchronisieren
- Erläuterung: Nachdem die Aufgabe gesendet wurde, wartet sie auf das Rückgabeergebnis der Aufgabe und unternimmt während des Wartevorgangs nichts. Es sieht so aus, als ob das Programm stecken bleibt.
- Asynchron
- Erläuterung: Warten Sie nach dem Senden der Aufgabe nicht auf das Rückgabeergebnis der Aufgabe und führen Sie andere Aktionen direkt aus
- Das Rückgabeergebnis der Aufgabe wird automatisch von einem asynchronen Rückrufmechanismus verarbeitet
Es ist, als würde man dem Lehrer einen Auftrag zur Korrektur übergeben. Xiaohong übergibt ihn dem Lehrer und steht an derselben Stelle, bis der Lehrer die Korrektur abgeschlossen hat. Xiaohongs Verhalten wird als Synchronisation bezeichnet. Und Xiao Li lief weg, nachdem er es dem Lehrer gegeben hatte. Dieses Verhalten wird als asynchron bezeichnet.
Beschreibt den laufenden Status des Programms
- Blockieren (Sperrzustand)
- Es ist der Zustand, dem unser Programm im Grunde beim Ausführen begegnet und auf den io-Betrieb wartet
- Nicht blockierend (Bereitschaftszustand, Betriebszustand)
- Es ist der ideale Zustand für die Ausführung unseres Programms, bei dem nur zwischen dem Bereitschaftszustand und dem Betriebszustand umgeschaltet wird, wodurch die Verzögerung verringert wird
Vier, zwei Möglichkeiten, um den Prozess zu starten
# 方式一 von Multiprozessor - Import Prozessimport Zeit def Aufgabe (Name): Drucken (f ' {Name} läuft ' ) time.sleep ( 3 ) drucken (f ' {name} ist vorbei ' ) , wenn __name__ == ' __main__ ' : p = Prozess (Ziel = Aufgabe, Argumente = ( ' hz ' ,)) p.start () print ( ' ^ (*  ̄ (oo)  ̄) ^ ' ) # 方式二类的继承 von Multiprozessor - Importprozess import Zeitklasse MyProcess (Prozess): def run (self): Druck ( ' hell 1 ' ) time.sleep ( 3 ) Druck ( ' hallo 2 ' ) , wenn __name__ == ' __main__ ' : p = MyProcess () p.start () print ( ' ^ (*  ̄ (oo)  ̄) ^ ' )
Zusammenfassung
"" "Beim Erstellen eines Prozesses wird ein Speicherplatz im Speicher beantragt und der Code ausgegeben, in den ausgeführt werden muss. Ein Prozess entspricht einem separaten Speicherplatz im Speicher. Mehrere Prozesse entsprechen einem separaten Speicherblock im Prozess. Prozess und Prozess Standardmäßig können Interdaten nicht direkt mit ihnen interagiert werden. Wenn Sie interagieren möchten, können Sie Tools und Module von Drittanbietern verwenden. "" "
Join-Methode
Join besteht darin, den Hauptprozess warten zu lassen, bis der Unterprozesscode beendet ist, bevor er fortfährt. Beeinflusst nicht die Ausführung anderer untergeordneter Prozesse
Spezifische Verwendung: Nach dem Start des Prozesses wird das Prozessobjekt .join ()
Datenisolation zwischen Prozessen
vom Multiprocessing import Prozess import Zeit a = 100 def Aufgabe (Name): Drucken (f ' {Name} läuft ' ) time.sleep ( 3 ) global a a = 101 Druck (a) Drucken (f ' {name} ist über ' ) if __name__ == ' __main__ ' : p = Prozess (Ziel = Aufgabe, Argumente = ( ' hz ' ,)) p.start () print (a) p.join () print ( ' ^ (*  ̄ (oo)  ̄) ^ ' )