HF1. Statikus többszintű ütemező megvalósítása
Határidő: 2019. április 3.
Becsült programozási idő: 2-5 óra
Készítsen egy programot, amely statikus többszintű ütemező működését szimulálja!
Globálisan preemptív, statikus prioritásos ütemező az alábbi ütemezési algoritmusokat futtatja az egyes szinteken az előadáson ismertetett módon:
- 1. kernel szint (prioritás = 1, magas) SJF ütemező
- 2. felhasználói szint (prioritás = 0, alacsony) RR ütemező, időszelet: 2
Bemenet (standard input, stdin)
Soronként egy (max. 10) taszk adatai. Egy sor felépítése (vesszővel elválasztva):
- a taszk betűjele (A, B, C...) megfelel az érkezési sorrendnek
- a taszk prioritása (0 vagy 1)
- a taszk indítási ideje (egész szám >= 0), a következő időszeletben már futhat (0: az ütemező indításakor már létezik)
- a taszk CPU-löketideje (egész szám >= 1)
Példa:
A,0,0,3 B,1,0,2 C,0,3,3 D,1,4,1
A bemenet végét egy üres sor (utána EOF) jelzi. Ekkor kell a kimenetre kiírni az eredményt.
Kimenet (standard output, stdout)
A kimenet első sorában a taszkok futási sorrendje betűjeleikkel (csak betűk, szóközök nélkül).
A második sorban a teljes várakozási idő taszkonként, érkezésük (nem feltétlenül abc-) sorrendjében, az alábbi formában (vesszővel elválasztva, szóközök nélkül):
1. taszk betűjel:várakozási idő,2. betűjel:várakozási idő, ...
Példa (a fenti bemenetre adott válasz):
BADCAC A:5,B:0,C:3,D:0
Értékelés
Az ütemező helyes működése: max. 2 pont, a várakozási idők jó számítása: 1 pont (összesen max. 3 pont).
A hibátlan, minden teszten jól teljesítő megoldás 1 IMSc pontot is ér.
Technikai információk
A programot Java nyelven kell elkészíteni, és a tanszéki oktatási portálon kell leadni a megadott határidőig.
A beküldött Java programnak tartalmaznia kell egy "Main" nevű osztályt, melynek része a feladatot megoldó "main" függvény. A program tetszőleges számú forrásfájlból állhat. A program nem használhat a standard inputon és outputon kívül semmilyen más erőforrást, így nem végezhet fájlműveleteket és nem nyithat hálózati kapcsolatokat.