Übungsaufgabe Nr.2 (Version A3,B3)


Hintergrund


Die Grundbegriffe zum Realtime-Scheduling sind eingeführt worden. In dieser Übung sollen diese Begriffe im Rahmen eines Softwareprojektes angewendet werden.


Vorgehen


Jedes Team soll ein Programm in C++ erstellen, das bestimmte Schedulingaufgaben behandeln kann. Das Programm wird mit dem Codewort 'guru' bezeichnet. Zum Programm gehört eine Dokumentation. In der Übungsstunde ist die Grundstruktur des Programms für alle verständlich zu erklären und abschliessend muss das Programm am Demo-PC im Realzeitlabor vorgeführt werden. (Praktischer Hinweis: um sicherzustellen, dass das Programm tatsaechlich läuft, wird empfohlen, das erstellte Programm testweise unter dem eigenen Account mittels sftp account@194.94.80.8 auf den FH-Rechner zu laden und sich dort mittels ssh account@194.94.80.8 einzuloggen und direkt am FH-Rechner zu kompilieren und zu testen. Um zu verhindern, dass andere Teams ihren Quellcode kopieren, versehen Sie ihren Account mit einem Schreibschutz.).



Aufgabe


Nr.

Beschreibung

Pkte.

1


Der Input für guru soll eine Textdatei sein, die eine Liste von Tasks enthält, für die das folgende Format gilt:






Diese Daten, abgespeichert als ASCII-Text im csv-Format, sehen wie folgt aus (ohne die Leiste mit den Erklärungen):

1,0,1,1,3,5

2,0,2,2,4,8

3,1,3,1,5,10

Ihr Programm ist in der Lage, solche Textdateien zu lesen. Auf Wunsch können diese Daten zur Kontrolle auf dem Bildschirm ausgegeben werden.

2


2


Schreiben Sie ein Programm, das die Scheduling-Regel des LLF-Algorithmus umsetzt. Es soll gelten, dass ihr System 1 CPU hat, präemptiv ist, und die Prioritäten der Tasks wahlweise entweder neu berechnet bei (i) dem Eintreffen eines neuen Tasks oder (ii) bei jeder Zeiteinheit.

8


3


Die Ausgabe ihres Programms auf dem Bildschirm soll wie folgt beschaffen sein:

(i) Normalfall: es tritt kein Konflikt auf.

n: {t1, ..., tk} ==> ti

n := aktueller Zeitpunkt

{t1, ..., tk} := Alle Tasks, die warten

ti := Task, der zur Ausführung kommt.



Beispiel:

1: {2,4} ==> 2

2: {2,4} ==> 2

3: {3,4} ==> 4

4: {3,4} ==> 3

...

(ii) Konfliktfall: Ein Task verletzt seine Deadline



Beispiel:

1: {2,4} ==> 2

2: {2,4} ==> 2

3: {3,4} ==> 4

4: {3,4} ==> !3!

...

Die Ausrufezeichen sollen den Konflikt anzeigen. Im Konflitkfall bricht ihr Programm ab.


2


4


Erstellen Sie Klassen- und Sequenzdiagramme für ihr Programm, evtl. auch Aktivitätsdiagramme für spezielle Methoden, sofern diese nicht auf den ersten Blick verstehbar sind. Dazu den gesamten Quellkode des Programms. Fassen Sie alle Diagramme und den Quellkode samt zusätzlichen Kommentaren in einem einzigen Dokument zusammen.

4





Ausführungsbestimmungen

Neben den allgemeinen Regeln im Abschnitt 'Leistungsnachweise' der Titelseite zum Kurs (siehe: http://www.fbmnd.fh-frankfurt.de/~doeben/I-RT05/i-rt05-header.html#NOTEN ) gelten folgende Festlegungen:


(1) Bei den Präsentationen einer Gruppe sind nur die Mitglieder dieser Gruppe zugelassen.

(2) Trägt ein Team eine Lösung vor, die sehr starke Ähnlichkeit mit einer Lösung hat, die schon ein anderes Team vorgetragen hat, wird die zweite Lösung nicht akzeptiert.