In diesem Tutorial lernen wir ein wichtiges Konzept der CPU-Prozessplanungsalgorithmen kennen. Der wichtige Konzeptname lautet „Wer zuerst kommt, mahlt zuerst“. Dies ist der grundlegende Algorithmus, den jeder Schüler lernen muss, um alle Grundlagen der CPU-Prozessplanungsalgorithmen zu verstehen.
„Wer zuerst kommt, mahlt zuerst“, ebnet den Weg zum Verständnis anderer Algorithmen. Dieser Algorithmus kann viele Nachteile haben. Aber diese Nachteile führten zu sehr neuen und effizienten Algorithmen. Daher liegt es in unserer Verantwortung, uns über die CPU-Prozessplanungsalgorithmen „Wer zuerst kommt, mahlt zuerst“ zu informieren.
Wichtige Abkürzungen
- CPU - - - > Zentraleinheit
- FCFS - - - > Wer zuerst kommt, mahlt zuerst
- AT - - - > Ankunftszeit
- BT - - - > Burst-Zeit
- WT - - - > Wartezeit
- TAT - - - > Bearbeitungszeit
- CT - - - > Fertigstellungszeit
- FIFO - - - > First In First Out
Wer zuerst kommt, malt zuerst
Der CPU-Planungsalgorithmus „Wer zuerst kommt, mahlt zuerst“ ist der erste Algorithmus des CPU-Prozessplanungsalgorithmus. Beim „Wer zuerst kommt, mahlt zuerst“-Algorithmus ermöglichen wir, dass der Prozess linear ausgeführt wird.
Dies bedeutet, dass derjenige Prozess, der zuerst in die Bereitschaftswarteschlange eintritt, zuerst ausgeführt wird. Dies zeigt, dass der First-Come-First-Serve-Algorithmus dem FIFO-Prinzip (First In First Out) folgt.
Der First-Come-First-Serve-Algorithmus kann präventiv und nicht präemptiv ausgeführt werden. Bevor wir auf Beispiele eingehen, wollen wir verstehen, was ein präemptiver und ein nicht präemptiver Ansatz bei der CPU-Prozessplanung ist.
Präventiver Ansatz
In diesem Fall der präemptiven Prozessplanung weist das Betriebssystem die Ressourcen einem Prozess für einen vorgegebenen Zeitraum zu. Der Prozess wechselt während der Ressourcenzuweisung vom laufenden Zustand in den Bereitschaftszustand oder vom Wartezustand in den Bereitschaftszustand. Dieser Wechsel geschieht, weil die CPU anderen Prozessen Vorrang zuweisen und den aktuell aktiven Prozess durch den Prozess mit höherer Priorität ersetzen kann.
Nicht präventiver Ansatz
In diesem Fall der nicht präemptiven Prozessplanung kann die Ressource einem Prozess nicht entzogen werden, bevor die Ausführung des Prozesses abgeschlossen ist. Wenn ein laufender Prozess beendet wird und in den Wartezustand übergeht, werden die Ressourcen umgeschaltet.
Konvoi-Effekt bei „Wer zuerst kommt, mahlt zuerst“ (FCFS)
Der Konvoi-Effekt ist ein Phänomen, das im Planungsalgorithmus namens First Come First Serve (FCFS) auftritt. Der Planungsalgorithmus „Wer zuerst kommt, mahlt zuerst“ erfolgt auf nicht präventive Weise.
Die nicht präventive Methode bedeutet, dass das Betriebssystem den Prozess oder Job abschließen muss, wenn die Ausführung eines Prozesses oder Jobs gestartet wird. Bis der Prozess oder Job Null ist, beginnt der neue oder nächste Prozess oder Job nicht mit der Ausführung. Die Definition von Non Preemptive Scheduling in Bezug auf das Betriebssystem bedeutet, dass die Zentraleinheit (CPU) bis zum Ende des zuerst gestarteten Prozesses oder Jobs vollständig reserviert bleibt und der neue Prozess oder Job erst nach Abschluss des älteren Prozesses oder Jobs ausgeführt wird Arbeit.
npm-Installationsbefehl
Es kann einige Fälle geben, die dazu führen können, dass die Zentraleinheit (CPU) zu viel Zeit einplant. Dies liegt daran, dass beim nichtpräventiven Ansatz des First-Come-First-Serve-Planungsalgorithmus die Prozesse oder Jobs in serieller Reihenfolge ausgewählt werden. Aus diesem Grund dauert die Ausführung kürzerer Jobs oder Prozesse hinter größeren Prozessen oder Jobs zu lange. Aus diesem Grund ist die Wartezeit, Bearbeitungszeit und Fertigstellungszeit sehr hoch.
Wenn hier also der erste Prozess lang ist oder die Abschlusszeit zu hoch ist, tritt dieser Konvoi-Effekt im First-Come-First-Serve-Algorithmus auf.
Nehmen wir an, dass die Ausführung von Longer Job unendlich viel Zeit in Anspruch nimmt. Dann müssen die verbleibenden Prozesse dieselbe unendliche Zeit warten. Aufgrund dieses Konvoieffekts, der durch den längeren Job entsteht, nimmt die Aushungerung der Warteprozesse sehr schnell zu. Dies ist der größte Nachteil der FCFS-CPU-Prozessplanung.
Merkmale der FCFS-CPU-Prozessplanung
Die Merkmale der FCFS-CPU-Prozessplanung sind:
- Die Implementierung ist einfach.
- Verursacht bei der Anwendung keine Nebenwirkungen
- Es verfolgt eine nichtpräventive und präventive Strategie.
- Es führt jede Prozedur in der Reihenfolge aus, in der sie empfangen wird.
- Als Auswahlkriterium für Verfahren wird die Ankunftszeit herangezogen.
Vorteile der FCFS-CPU-Prozessplanung
Die Vorteile der FCFS-CPU-Prozessplanung sind:
np.einzigartig
- Zur Zuteilung von Prozessen nutzt es die First-In-First-Out-Warteschlange.
- Der FCFS-CPU-Planungsprozess ist unkompliziert und einfach zu implementieren.
- Bei der präventiven FCFS-Situationsplanung besteht keine Gefahr, dass der Prozess verhungert.
- Da die Prozesspriorität nicht berücksichtigt wird, handelt es sich um einen gerechten Algorithmus.
Nachteile der FCFS-CPU-Prozessplanung
Die Nachteile von FCFS CPU Process Scheduling sind:
- Der FCFS-CPU-Planungsalgorithmus hat eine lange Wartezeit
- Die FCFS-CPU-Planung bevorzugt die CPU gegenüber Eingabe- oder Ausgabevorgängen
- Bei FCFS besteht die Möglichkeit des Auftretens eines Konvoi-Effekts
- Da FCFS so unkompliziert ist, ist es oft nicht sehr effektiv. Damit einhergehend sind längere Wartezeiten. Alle anderen Aufträge bleiben im Leerlauf, wenn die CPU mit der Verarbeitung eines zeitaufwändigen Auftrags beschäftigt ist.
Probleme beim CPU-Planungsalgorithmus „Wer zuerst kommt, mahlt zuerst“.
Beispiel
S. No Process ID Process Name Arrival Time Burst Time _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 P 1 A 0 9 2 P 2 B 1 3 3 P 3 C 1 2 4 P 4 D 1 4 5 P 5 E 2 3 6 P 6 F 3 2
Nicht präventiver Ansatz
Lassen Sie uns dieses Problem nun mithilfe des Planungsalgorithmus „Wer zuerst kommt, mahlt zuerst“ in einem nicht präventiven Ansatz lösen.
Das Gantt-Diagramm für das obige Beispiel 1 lautet:
Bearbeitungszeit = Fertigstellungszeit – Ankunftszeit
Wartezeit = Durchlaufzeit – Burst-Zeit
Lösung für die obige Frage Beispiel 1
Ja Nein | Prozess ID | Ankunftszeit | Burst-Zeit | Vervollständigungszeit | Seitenwechsel | Wartezeit | |
---|---|---|---|---|---|---|---|
1 | P 1 | A | 0 | 9 | 9 | 9 | 0 |
2 | P 2 | B | 1 | 3 | 12 | elf | 8 |
3 | P 3 | C | 1 | 2 | 14 | 13 | elf |
4 | P 4 | D | 1 | 4 | 18 | 17 | 13 |
5 | P 5 | UND | 2 | 3 | einundzwanzig | 19 | 16 |
6 | P 6 | F | 3 | 2 | 23 | zwanzig | 18 |
Die durchschnittliche Fertigstellungszeit beträgt:
Durchschnittlicher CT = (9 + 12 + 14 + 18 + 21 + 23) / 6
Durchschnittlicher CT = 97/6
Durchschnittlicher CT = 16,16667
Die durchschnittliche Wartezeit beträgt:
Durchschnittlicher WT = ( 0 + 8 + 11 + 13 + 16 + 18 ) /6
Durchschnittlicher WT = 66/6
Durchschnittlicher WT = 11
Mission Impossible alle Filme
Die durchschnittliche Bearbeitungszeit beträgt:
Durchschnittlicher TAT = ( 9 + 11 + 13 + 17 + 19 +20 ) / 6
Durchschnittlicher TAT = 89/6
Durchschnittlicher TAT = 14,83334
Kein Flip-Flop
So wird das FCFS im Non-Preemptive-Ansatz gelöst.
Lassen Sie uns nun verstehen, wie sie im präventiven Ansatz gelöst werden können
Präventiver Ansatz
Lassen Sie uns dieses Problem nun mithilfe des Planungsalgorithmus „Wer zuerst kommt, mahlt zuerst“ in einem präventiven Ansatz lösen.
Im präventiven Ansatz suchen wir nach dem besten verfügbaren Prozess
Das Gantt-Diagramm für das obige Beispiel 1 lautet:
Ja Nein | Prozess ID | Ankunftszeit | Burst-Zeit | Vervollständigungszeit | Seitenwechsel | Wartezeit | |
---|---|---|---|---|---|---|---|
1 | P 1 | A | 0 | 9 | 23 | 23 | 14 |
2 | P 2 | B | 1 | 3 | 8 | 7 | 4 |
3 | P 3 | C | 1 | 2 | 3 | 2 | 0 |
4 | P 4 | D | 1 | 4 | fünfzehn | 14 | 10 |
5 | P 5 | UND | 2 | 3 | elf | 9 | 7 |
6 | P 6 | F | 3 | 2 | 5 | 2 | 0 |
weiter → ← Vorher Um das Problem der Verschwendung von Wecksignalen zu beseitigen, schlug Dijkstra einen Ansatz vor, bei dem alle Weckrufe gespeichert werden. Dijkstra gibt an, dass der Produzent den Weckruf in einer Variablen speichern kann, anstatt den Weckruf direkt an den Verbraucher zu richten. Jeder Verbraucher kann es jederzeit lesen. Semaphore sind die Variablen, die die gesamten Weckrufe speichern, die vom Produzenten zum Konsumenten übertragen werden. Es handelt sich um eine Variable, die im Kernelmodus automatisch gelesen, geändert und aktualisiert wird. Semaphor kann im Benutzermodus nicht implementiert werden, da immer dann eine Race-Bedingung auftreten kann, wenn zwei oder mehr Prozesse versuchen, gleichzeitig auf die Variable zuzugreifen. Zur Umsetzung ist immer die Unterstützung des Betriebssystems erforderlich. Je nach Bedarf können Semaphore in zwei Kategorien unterteilt werden.
Wir werden jeden einzelnen im Detail besprechen. |