LAB2B. Raspoređivanje zadataka


Uvod

Raspoređivanje prema redu prispijeća ili prema prioritetu se najčešće koristi u ugradbenim sustavima, pogotovo onim s ograničenim sredstvima. Ipak, naglim razvojem i sve širom primjenom ugradbenih računala, javljaju se situacije u kojima ti raspoređivači nisu dovoljni. Zadatak ove vježbe je osmisliti i ostvariti novi raspoređivač za jednu takvu okolinu, opisanu ispod.

Zadatak

Osmisliti algoritam za raspoređivanje zadataka s posebnim svojstvima.

Svi su zadatci periodički, zadani sa:

  1. T - periodom
  2. C - procesorskim vremenom potrebnim unutar svake periode
  3. w - težinom zadatka (bitnost za sustav/kvalitetu, "prioritet")
  4. k(t) - korisnost raspoređivača prema tome kad je posao dovršen, zadana grafom i parametrima t1, t2 i t3.
Slika korisnosti
Slika 1. Korisnost obrade zadatka ovisno o trenutku završetka
Nula označava početak periode. Korisnost obrade zadatka je unutar [0,1] ovisno o tome kad je obrada završila u odnosu na početak intervala, tj. u ovisnosti o varijabli t:
  1.  0 ≤ t ≤ t1 → k(t) = t / t1
  2. t1 ≤ t ≤ t2 → k(t) = 1
  3. t2 ≤ t ≤ t3 → k(t) = (t3 - t) / (t3 - t2)
Parametar t1 može biti u rasponu [0, t2].

Parametar t3 može biti u rasponu [t2, 10*t2].

Npr. kad je t1=0 i t3=t2 radi se o "strogom zadatku".

Zadaci se mogu (privremeno) prekidati u izvođenju radi izvođenja drugih.

Najprije napraviti nekoliko primjera (barem tri) sustava zadataka (barem po tri zadatka u svakom sustavu)

Sami osmisliti algoritam raspoređivanja. Algoritam ne mora biti optimalan, ali mora imati neku logiku zašto je tako napravljeno. Pritom, logika ne smije biti suviše jednostavna (npr. koristiti samo težinu/prioritete).

Pokazati rad programa nad izgrađenim primjerima (zapisati rezultate raspoređivanja).