ZADANIE 07 (10)







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 10
CAD ZADANIA 4 6 10
ZADANIE (10)
cw3 zadanie 10
ZADANIE (10)
stat zadania1 10
zadania 10
ZADANIE (10)
ZADANIE (10)
Analiza Zadania 10
ZADANIE (10)
ZADANIE (10)
ZADANIE (10)
ZADANIE (10)
Zadanie20 10 11
Zadanie20 10 11

więcej podobnych podstron