[ Pobierz całość w formacie PDF ]
.Zadanie dla studentaZadanie 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) funkcjaktóra tworzy semafor o stanie początkowym state, prawach dostępu do niegoperms i zwraca jego identyfikator lub -1 i ustawia errno na stosowną (należysprawdzić jakie wartości przyjmuje errno po wyjściu ze stosownych operacjisemaforowych 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 zadanianależy zadeklarować własne struktury (kolejkę procesów), takie abynp.przy podniesieniu semafora nie budzićwszystkich czekających na tym semaforze (jak ma to obecnie miejscew semaforach systemowych).Opuszczenie semaforama być funkcją w której proces przyjmuje sygnały.Przy wykonaniu wszystkichfunkcji semaforowych mają być sprawdzane prawa dostępu.Funkcje mają być w plikachgsem.h, gsem.c wkompilowywanych w jądro.Trzebatakż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żytkownikafunkcje mają być definiowane poprzez makrasyscall[n] (gdzie n-liczba parametrów) - Czytelnikunie twórz własnej biblioteki.Oprócz tego zapogramowaćprogram służący do sprawdzenia nowych funkcji jądra np.czytelnikówi pisarzy.Bartosz Kruszyński
[ Pobierz całość w formacie PDF ]