Esimene kodutöö
Kirjutada graafilise kasutajaliidesega simulaator protsessoriaja planeerimise algoritmide töö visualiseerimiseks.
- Protsesside saabumist kirjeldab stringina olev testmuster kujul 1,10;4,2;12,3;13,2 kus:
- protsessid on eraldatud semikoolonitega;
- iga protsessi jaoks on antud komaga eraldatult saabumishetk (mittenegatiivne täisarv) ning kestus ajaühikutes (positiivne täisarv);
- muster võib sisaldada kuni 12 protsessi;
- muster sisaldab alati vähemalt ühe protsessi;
- võib eeldada, et saabumisajad on kasvavas järjestuses;
- võib eeldada, et samal ajahetkel ei saabu mitut uut tööd.
- Võib eeldada, et kõik protsessid kokku saavad oma töö tehtud 50 ajaühiku jooksul.
- Kasutaja saab valida 3 valmis testmustri vahel, millega ülesande esitaja on testinud.
- Kasutajal peab olema lisaks ka võimalus sisestada oma testmuster.
- Sama testmustrit ei pea erinevate algoritmide käivitamiseks uuesti sisestama.
- Testmuster peab olema sisestatav tavalise copy-paste abil.
- Programmis peavad olema realiseeritud järgmised algoritmid:
- FCFS
- Protsesse ei katkestata. (erinev Kahe prioriteediga FCFS ülesandest)
- Väljutatõrjuv SJF (SRTF)
- kui saabub väiksema protsessoriajasooviga protsess, siis käesolev katkestatakse
- Kui saabub protsess mille kestus on identne juba käiva protsessiga eelistatakse käimasolevat protsessi
- RR ajakvandi pikkusega 4
- RR realiseerimisel täidame igal ajahetkel uued saabuvad protsessid alati enne kui järjekorda kogunenud vanad protsessid (enne täidame kõik selleks hetkeks saabunud uued protsessid saabumise järjekorras ja alles siis hakkame vanade protsesside järgmisi ajakvante täitma, ehk siis vanad lähevad pärast töötamist oma uue ajakvandi saamiseks "järjekorra lõppu").
- Kahe prioriteediga FCFS (two-level FCFS scheduling)
- Kui protsessi kestus on <=5 takti pannakse protsess kõrge prioriteetsusega FCFS järjekorda, kõik üle 5 takti kestusega madalasse FCFS järjekorda.
- madala prioriteetsusega FCFS järjekorda täidetakse ainult kui kõrge prioriteetsusega protsesse pole ootejärjekorras
- Kui saabub kõrge prioriteegiga töö katkestatakse madala prioriteegiga järjekorra täitmine (protsess) (erinev klassikalisest FCFS algoritmist).
- FCFS
- Iga algoritmi töö tulemusel peab nägema, milline protsess mis ajavahemikul protsessoril töötas ning lõpuks kõigi protsesside peale kokku keskmist ooteaega (ehk kui palju ajaühikuid pidi protsess enda saabumisest kuni täitmise lõpuni vahepeal ootel olema).
- Vastata lisaks järgmisele küsimusele:
- Kas kuidagi saaks keskmist ooteaega veel väiksemaks kui ükski neist neljast algoritmist sai? Kui jah, siis näiteks kuidas? Kui ei, siis miks?
Hindamisel võtavad punkte maha:
- mõnede algoritmide realiseeriminata jätmine (proportsionaalselt kogu tööst)
- protsesside vale järjekord või muud suuremad algoritmivead
- "tulevikku vaatamine" ehk protsess ei tohi enne käivituda kui oma saabumise ajahetkel
- keskmise ooteaja valesti arvutamine
- ooteaja arvestamisel protsessi ees oleva "augu" protsessi hulka arvamine või selle muu paha mõju
- kasutajaliidese võimetus spetsifitseeritud kujul sisendit ühe stringina vastu võtta ja parsida
- kasutajaliidese arusaamatus või mittetoimine
Programmeerimiskeel ja raamistik on vabad. Võib teha nii tavalise GUI rakenduse Qt/PyQt/tkinter vms abil, veebipõhise liidesega rakenduse, välise renderdaja abil pilte tegeva ja näitava rakenduse või mõne muu variandi.
Tähtaeg: 17.10.2019 23.59
Näiteprogramm (seda tohib võtta edasiarendamiseks) ja näiteväljundid mustri 1,10;3,3;4,1;8,6;15,2 jaoks (värve ei pea järgi tegema, aga protsesse peab saama kuidagi eristada):
16. Kodutöö 1Solutions for this task can no longer be submitted.
Hindamine (kokku 7.5p):
- FCFS - 1.5p
- SRTF - 1.5p
- RR4 - 1.5p
- 2xFCFS -1.5p
- ooteajad - 0.75p
- Küsimus - 0.75p
PS! Õppejõud jätavad endale õiguse teha hindamises muudatusi.