OS2/Projekat 2022

Izvor: SI Wiki
< ОС2
Datum izmene: 3. februar 2022. u 23:29; autor: TopOfKeks (razgovor | doprinosi) (Нова страница: {{tocright}} Пројекат 2022. године је први пројекат из Оперативних система 1 и 2 у ком се користи ''xv6''…)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu

Projekat 2022. godine je prvi projekat iz Operativnih sistema 1 i 2 u kom se koristi xv6 operativni sistem na RISC-V arhitekturi. U ovom vodiču se nalaze korisni saveti pri izradi projekta.

Dodavanje interfejsa raspoređivača

Interfejs definisan postavkom za raspoređivač je isti onaj iz školskog jezgra:

struct proc *get(); // Дохватање спремног процеса из реда чекања
void put(struct proc *); // Убацивање спремног процеса у ред чекања

xv6 u sebi sadrži Round-robin raspoređivač direktno implementiran u funkciji scheduler(). Neophodno je zameniti ovaj algoritam sa traženim interfejsom. Mesta od značaja su ona gde proces menja stanje.

  1. get() u scheduler() nakon uključivanja prekida - prelaz iz RUNNABLE u RUNNING.
  2. put() u yield() - kad proces predaje kontekst nekom drugom procesu.
  3. put() u userinit() - kad se kreira prvi korisnički proces.
  4. put() u fork() - kad se forkuje nov proces.
  5. put() u wakeup() - prelaz iz SLEEPING u RUNNABLE.
  6. put() u kill() - kad proces treba da se završi treba da ga probudimo.

Implementiranje preotimanja po vremenskom kvantumu

Okruženje

Makefile

Debagovanje korisničkih programa

Promena učestanosti tajmerskog prekida

Tumačenje scause i sepc