BS Übung 08 (Stefan Bosse) [17.01.2025]
Gruppe und Namen der Mitglieder
Punkte:Total/21./22./23./24./25./26./27./28./2

Prozesswechsel

In dieser Übing soll der Prozesswechsel in einem Betriebssystem studiert werden.

  1. Im Basekernel OS ⇒ http://git.edu-9.de/sbosse/basekernel
  2. Im OS Simulator ⇒ http://git.edu-9.de/sbosse/basekernel/ossimu

Das Scheduling und die Prozessausführung wird in Zeitliniendiagrammen beschrieben. Es gelten folgende Farben:

  1. grün: Prozess in Ausführung;
  2. rot: Prozess ist blockiert;
  3. blau: Prozess is rechenbereit.

In einem Zeitschritt (Spalte) kann der Zustand von jedem Prozess durch Auswahl der Farbe aus der Farbpalette ausgewählt und durch Klicken im Feld gesetzt werden.

Ein 4-Prozesssystem

Im OS Simulator werden Prozessorschritte (atomare Ausführung) als Bursts bezeichnet.

Aufgabe 1. Zeichne das Zeitdiagramm für vier Prozesse mit folgenden Prozessorschritten ("Burst") Sequenzen die parallel ohne Scheduling ausgeführt werden.

P1: 5 Prozessorzyklen, Start bei T=3
P2: 4 Prozessorzyklen, Start bei T=4
P3: 7 Prozessorzyklen, Start bei T=2
P4: 3 Prozessorzyklen, Start bei T=1
$ 0 1 2 3 4 5 6 7 8 9
P1 W W W G G G G G W W
P2 W W W W G G G G W W
P3 W W G G G G G G G W
P4 W G G G W W W W W W

OS Simulator

Es sollen vier Prozessauswahlstrategien untersucht werden:

  1. FCFS
  2. SJF
  3. Prioritäten
  4. RR

Ab jetzt bestimmt der Scheduler wann Prozesse gestartet werden (d.h. grundsätzlich beginnend mit Zeitschritt 0)

Aufgabe. Erkläre in jeweils einem Satz die grundlegende Funktiosnweise dieser Strategien.

  1. TBA
  2. TBA
  3. TBA
  4. TBA

Wähle im OS Simulator das erste FCFS/FIDO Beispiel aus. Es gibt 4 Prozesse mit den Burstsequenzen wie oben beschrieben. Alle Prozesse werden bereits bei T = 0 berücksichtigt (d.h. die “Submission” ist auf 0 gesetzt); auch in Aufgabe 3 (und Aufgabe 5) sollen alle Prozesse bei T = 0 beginnen (Ready).

Tipp: Es gibt an verschiedenen Stellen "Fragezeichen" die ein Fenster mit Erklärungen und Hilfen öffnen!

Aufgabe.

Aufgabe 3. Öffne das "Simple FIFO Scheduling" Beispiel im OS Simulator (CPU/Processes). Es gibt wie oben beschrieben 4 Prozesse. Führe das Multiprozesssystem schrittweise aus und notiere im nachfolgenden Timeline Diagramm die Ausführung der Prozesse (grün). Führe dann das 4-Prozesssystem mit der SJF und RR Strategie aus (weiterhin keine E/A) und notiere die Prozessausführung. Ein rechenbereiter Prozess wird mit blau gekennzeichnet.

Ein 4-Prozesssystem mif FCFS/FIFO ohne E/A Unterbrechung

Ein 4-Prozesssystem mif SJF ohne E/A Unterbrechung

Ein 4-Prozesssystem mif RR ohne E/A Unterbrechung

Frage 4. Welche Unterschiede lassen sich feststellen?



Bisher hatten die Prozesse (von sich aus) keine Unterbrechnung. Jetzt soll der Einfluss von E/A (also Warten auf Ereignisse) untersucht werden.

Im Simulator Setup kann Multiprogramming ein- und ausgestellt werden. Ist es ausgeschaltet wird ein Prozess bis zur Terminierung ausgeführt, auch wenn es Wartezeiten gibt.

Aufgabe.

Aufgabe 5. Ändere das 4-Prozessystem wie folgt ab (mit rechter Maustaste das Kontextmenü eines Prozesses öffnen und "update" ausführen. Führe dann das 4-Prozesssystem mit der FCFS, SJF, Prio und RR Strategie aus (jetzt mit E/A) und notiere die Prozessausführung. Das Warten wird mit rot gekennzeichnet, ein rechenbereiter Prozess mit blau.

P1: 5 Prozessorzyklen, CICIC
P2: 4 Prozessorzyklen, CICC
P3: 7 Prozessorzyklen, CCIICCC
P4: 3 Prozessorzyklen, CCC

(C: CPU, I: I/O)

Ein 4-Prozesssystem mif FCFS/FIFO mit E/A Unterbrechung

Ein 4-Prozesssystem mif SJF mit E/A Unterbrechung

Ein 4-Prozesssystem mif Prio mit E/A Unterbrechung

Ein 4-Prozesssystem mif RR mit E/A Unterbrechung

Frage 6. Welche Unterschiede lassen sich feststellen?



Basekernel OS

  1. Lade den aktuellen Programmkode via git herunter.
  2. In der Datei basekernel/include/kernel/config.h muss KSHELL_SERIAL definiert werden damit die Kernel Shell an die serielle Schnittstelle angebunden wird:
#define KSHELL_SERIAL
  1. Kompiliere das OS, starte und teste es in der webvm86 (basekernel.iso muss sich im gleichen Verzeichnis befinden):
nw vm86.nw
  1. Teste die serielle Kommunikation. Die Kernelmeldungen sollten im seriellen Konsolenfenster erscheinen und Kommandos die in der seriellen Konsole eingegeben werden sollten vom Kernel ausgeführt werden.
  1. Öffne folgende Dateien in einem Editor:
kernel/event_queue.c
kernel/serial.c
kernel/process.c
Aufgabe.

Frage 7.

  1. Welche Aufgabe haben Event Queues im Kernel?
  2. In event_queue_read_raw wird zuerst interrupt_block und dann tiefer process_wait aufegrufen wenn keine Daten verfügbar sind. Das führt zur Prozessblockierung (studiere den Kode von process_wait in process.c. Wie kann es sein dass Interrupts wieder event_queue_post aufrufen können wenn doch Interrupt abgeschlaltet sind?
  1. Event Queues ermöglichen Interrupt gesteuerte Interprozesskommunikation, hier zwischen E/A Geräten und dem Betriebssystemkern, wie z.B. Datentransfer von der seriellen Schnittstelle.
  2. Interrupts werden bei Prozessblockierung in process_wait wieder eingeschaltet.

Frage 8.

  1. Welche Prozesszuteilungsstrategier verwendet der bakernel?
  2. Welche Prozesszustände gibt es?
  1. FCFS mit FIFO Liste mit Präemption, somit RR
  2. PROCESS_STATE_CRADLE, PROCESS_STATE_READY, PROCESS_STATE_RUNNING, PROCESS_STATE_BLOCKED, PROCESS_STATE_GRAVE



Created by the NoteBook Compiler Ver. 1.34.1 (c) Dr. Stefan Bosse (Fri Jan 17 2025 12:13:09 GMT+0100 (Central European Standard Time))