ОС2/Пројекат 2022

Извор: SI Wiki
< ОС2
Датум измене: 3. фебруар 2022. у 23:29; аутор: TopOfKeks (разговор | доприноси) (Нова страница: {{tocright}} Пројекат 2022. године је први пројекат из Оперативних система 1 и 2 у ком се користи ''xv6''…)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Пројекат 2022. године је први пројекат из Оперативних система 1 и 2 у ком се користи xv6 оперативни систем на RISC-V архитектури. У овом водичу се налазе корисни савети при изради пројекта.

Додавање интерфејса распоређивача

Интерфејс дефинисан поставком за распоређивач је исти онај из школског језгра:

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

xv6 у себи садржи Round-robin распоређивач директно имплементиран у функцији scheduler(). Неопходно је заменити овај алгоритам са траженим интерфејсом. Места од значаја су она где процес мења стање.

  1. get() у scheduler() након укључивања прекида - прелаз из RUNNABLE у RUNNING.
  2. put() у yield() - кад процес предаје контекст неком другом процесу.
  3. put() у userinit() - кад се креира први кориснички процес.
  4. put() у fork() - кад се форкује нов процес.
  5. put() у wakeup() - прелаз из SLEEPING у RUNNABLE.
  6. put() у kill() - кад процес треба да се заврши треба да га пробудимо.

Имплементирање преотимања по временском квантуму

Окружење

Makefile

Дебаговање корисничких програма

Промена учестаности тајмерског прекида

Тумачење scause и sepc