ZADANIE_07.HTML 

po polsku


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
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • pajaa1981.pev.pl