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
- SJF
- NJF (Newest Job First)
- Alati asume täitma viimasena saabunud tööd, katkestades eelnevad, kui neid on.
- Iga katkestatud töö läheb järjekorras esimeseks.
- RR ajakvandi pikkusega 2
- 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").
- 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: 11.10.2018 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öö 1Sellele ülesandele ei saa enam lahendusi esitada.