Zadanie dla studenta
Zadanie dla studenta
Zaimplementować
jako funkcje jądra semafor uogólniony t.j. taki, którego stan można zmieniać
o wartość będącą dowolną liczbą naturalną. Należy w tym celu wkompilować
w jądro własne funkcje systemowe:
int gsem_get(int state, int perms) funkcja
która tworzy semafor o stanie początkowym state, prawach dostępu do niego
perms i zwraca jego identyfikator lub -1 i ustawia errno na stosowną (należy
sprawdzić jakie wartości przyjmuje errno po wyjściu ze stosownych operacji
semaforowych IPC)
int gsem_op(int op)
gdzie op to wartość o jaką należy podwyższyć lub obniżyć semafor.
int gsem_ctl(int nr)
funkcja likwidująca semafor o numerze nr.
Przy rozwiązywaniu zadania
należy zadeklarować własne struktury (kolejkę procesów), takie aby
np. przy podniesieniu semafora nie budzić
wszystkich czekających na tym semaforze (jak ma to obecnie miejsce
w semaforach systemowych). Opuszczenie semafora
ma być funkcją w której proces przyjmuje sygnały. Przy wykonaniu wszystkich
funkcji semaforowych mają być sprawdzane prawa dostępu.
Funkcje mają być w plikach
gsem.h, gsem.c wkompilowywanych w jądro. Trzeba
także pamiętać o prostych modyfikacji dodatkowych plików: /usr/include/syscall.h,
linux/include/asm/unistd.h, linux/arch/i386/entry.S, linux/kernel/ksymc.c.
W programie użytkownika
funkcje mają być definiowane poprzez makra
syscall[n] (gdzie n-liczba parametrów) - Czytelniku
nie twórz własnej biblioteki.
Oprócz tego zapogramować
program służący do sprawdzenia nowych funkcji jądra np. czytelników
i pisarzy.
Bartosz Kruszyński
Wyszukiwarka
Podobne podstrony:
zadania 1 5 10CAD ZADANIA 4 6 10ZADANIE (10)cw3 zadanie 10ZADANIE (10)stat zadania1 10zadania 10ZADANIE (10)ZADANIE (10)Analiza Zadania 10ZADANIE (10)ZADANIE (10)ZADANIE (10)ZADANIE (10)Zadanie20 10 11Zadanie20 10 11więcej podobnych podstron