Esimene kodutöö - Protsessoriaja haldus
Kirjutada graafilise kasutajaliidesega simulaator protsessoriaja planeerimise algoritmide töö visualiseerimiseks.
- Protsesside saabumist kirjeldab stringina olev testmuster kujul
0,1;1,11;3,3;4,1;8,6;14,2;25,1
, 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 ühte 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.
- Üks eelsisestatud testmustritest võiks olla juhendi juures olevatel näidispiltidel kasutatud muster: 0,1;1,11;3,3;4,1;8,6;14,2;25,1
- 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'i abil.
- Programmis peavad olema realiseeritud järgmised algoritmid:
- FCFS
- Protsesse ei katkestata. (erinev kahe prioriteediga FCFSi ülesandest)
- mitteväljatõrjuv SJF
- Protsesse ei katkestata. Erinev SRTF-algoritmist ehk kui saabub väiksema protsessori ajasooviga protsess, siis käimasoleva protsessi töö lõpetatakse kõigepealt (ei katkestata) ning siis valitakse lõpetamise hetkeks saabunud protsessidest lühima ajasooviga protsess.
- Kui järjekorras on mitu protsessi, mille kestus on identne, eelistatakse varem saabunud protsessi.
- RR ajakvandi pikkusega 5 (lühend RR5)
- RRi 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 ajaühikut, pannakse protsess kõrge prioriteediga FCFSi järjekorda, kõik üle 5 ühiku kestusega madalasse FCFSi järjekorda.
- Madala prioriteetsusega FCFSi järjekorda täidetakse ainult siis, kui kõrge prioriteediga protsesse ootejärjekorras pole.
- Kui saabub kõrge prioriteediga töö, katkestatakse madala prioriteediga 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? Millise algoritmiga? 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 sõnena vastu võtta ja parsida
- kasutajaliidese arusaamatus või mittetoimimine
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: 19.10.2021 23.59
Näiteprogramm (seda tohib võtta edasiarendamiseks) ja näiteväljundid mustri 0,1;1,11;3,3;4,1;8,6;14,2;25,1 jaoks (värve ei pea järele tegema, aga protsesse peab saama kuidagi eristada):
16. Kodutöö 1 - Protsessoriaja haldusSolutions for this task can no longer be submitted.
Hindamine (kokku 10p):
- FCFS - 2p
- SJF - 2p
- RR5 - 2p
- 2xFCFS - 2p
- ooteajad - 1p
- Küsimus - 1p
PS! Õppejõud jätavad endale õiguse teha hindamises muudatusi.