HUMBOLDT-UNIVERSITÄT ZU BERLIN
COMPUTER SCIENCE DEPARTMENT
Systems Architecture Group

Head: Prof. Dr. Jens-Peter Redlich
Secretary:  Silvia Schoch
Phone: +49(30)2093-41150

 

     

Lab 2: HAL Scheduler & Shell

Abgabeverfahren

Ihre Lösung für die zweite Praktikumsaufgabe (Lab 2) sollte wieder eine GZip-Datei bestehend aus dem Quellcode und dessen ausführliche Beschreibung in Form eines Reports (index.html) sein. Die Abgabe erfolgt über das GOYA-System.

Assignment 4

Der Zugriff auf den HAL-Interpreter sollte nicht direkt erfolgen. Stattdessen erfolgt dieser über eine weitere Abstraktionsschicht, die sogenannte Process-Execution-Engine-Schicht (kurz PEE), die im Folgenden (in C/C++) zu implementieren ist. Aufgabe dieser Schicht ist neben der Prozessverwaltung (Erzeugung und Vernichtung) die Ausführung von Prozessen.

Die HAL-PEE-Schicht sollte nach außen folgende Schnittstelle zur Verfügung stellen:

<<interface>> PEE {

    HALProcess createProcess(FileName);

    void deleteProcess(HALProcess);

    void executeProcess(HALProcess)

}

Assignment 5

Schreiben Sie eine Shell (C/C++) zur Ansteuerung Ihres HAL-Interpreters über die PEE. Diese Shell hat die Aufgabe, Kommandos zum Start eines Programms in Ihre HAL entgegen zu nehmen und dort auszuführen, z.B. übergibt der Befehl:

$ max

das HAL-Programm „max“ an die PEE. 

Hinweise

Für die Lösung dieser Aufgabe benötigen Sie NICHT die Unix-Systemaufrufe der Fork, Wait, und Execute-Familie. Eine Lösung könnte wie folgt aussehen:

  • Die HAL-Shell wartet blockierend auf die Eingabe des Benutzers.

  • Wurde eine korrekte Eingabe seitens des Benutzers getätigt, so wird der entsprechende HALProzess über die PEE erzeugt und gestartet.

  • Wurde die Ausführung der HAL-Prozesses beendet, so wird die Ausführungskontrolle wieder an die HAL-Shell übergeben, welche wiederum neue Anfragen des Benutzers entgegennehmen kann.

Assignment 6

Im Folgenden soll die Arbeitsweise eines CPU-Schedulers betrachtet werden. Hierbei seien die folgende vier Prozesse gegeben:

Process Arrival Time Burst Time Priority
A 0 8 3
B 1 4 1
C 2 9 4
D 3 5 5

In welcher Ausführungsreihenfolge werden die Prozesse unter Verwendung von:

  • Shortest-Job-First Scheduling (SJF),
  • Priority Scheduling (P) und
  • Round-Robin Scheduling (RR)

ausgeführt?

Assignment 7

Die HAL-PEE sollte in der Lage sein, mehrere HAL-Programme nebenläufig auszuführen (multi-tasking). Hierzu ist eine Anpassung an der HAL-PEE-Schnittstelle vorzunehmen, sowie das Round-Robin Scheduling (RR) zu implementieren. Des Weiteren ist die HAL-Shell anzupassen:

z.B. übergibt der Befehl:

$ foo bar

die HAL-Programme „foo“ und „bar“ an die PEE, welche sie dann nebenläufig ausführt.

Hinweise

Der Interpreter kann als eine abstrakte Maschine angesehen werden. Es ist daher zu jedem Zeitpunkt maximal eine Interpreter-Instanz vorhanden. Sollen mehrere HAL-Programme nebenläufig ausgeführt werden, so ist die einzige Interpreter-Instanz von den Programmen gemeinsam zu nutzen. Die Scheduling-Policy der PEE entscheidet dabei, welches Programm zu einem bestimmten Zeitpunkt vom Interpreter ausgeführt wird.

Assignment 8

Testen Sie Ihr Programm ausgiebig (Unittest).

Legal disclaimer. .  © 2024 Humboldt-Universität zu Berlin, Computer Science Department, Systems Architecture Group. Contact: sar@informatik.hu-berlin.de .