Ez a projekt az operációs rendszerekből kiadott első fakultatív házi egy megoldása. Egy **ütemezőt** valósítottam meg, ami a beérkező taszkokat ütemezi **prioritás szerint.** A kód a **2017/2018 tavaszi** félévben íródott.
A feladat szövege
-----------------
>Készítsen egy programot, amely statikus többszintű ütemező működését szimulálja!
>
>A 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:
>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,1,0,5
>B,1,1,4
>C,0,5,3
>D,0,6,1
>
>A bemenet végét egy üres sor (utána EOF) jelzi.
**Kimenet:** (standard output)
>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):
A megoldás Java nyelven íródott, és a következő osztályokat tartalmazza:
-**Main**: A számítógépet szimulálja. Elvégzi a beolvasást és a kiírást, szimulálja a processzor órajelét és a beérkező taszkokat a megfelelő órajelben az ütemezőnek adja.
-**Global**: A globális ütemező. Kezeli a két prioritási szint ütemezőjét és naplózza, hogy mikor melyik taszk futott.
-**SRTF**: Egy SRTF (shortest remaining time first) ütemezőt valósít meg. Ez tartozik a magasabb prioritású (kernel) folyamatokhoz.
-**RR**: Egy round-robin ütemezőt valósít meg. Ez tartozik az alacsonyabb prioritású feladatokhoz, ezért leállítható és újraindítható.