plik


7.1.2 Pliki specjalne - sposob dostepu do urzadzen Do spisu tresci tematu 7 7.1.2 Pliki specjalne - sposob dostepu do urzadzen Spis tresci Sposob dostepu do urzadzen Bibliografia Pytania i odpowiedzi Sposob dostepu do urzadzen Pliki specjalne Kazde urzadzenie w Unixie jest instalowane w systemie jako osobny plik. Jest to tzw. plik specjalny. Taki sposob dostepu do urzadzen zapewnia miedzy innymi: mozliwosc rozmieszczania "urzadzen" w roznych miejscach systemu plikow identyczny sposob dostepu do urzadzen co do plikow (open, close, read, write ...) latwe zarzadzanie dostepem (identyczne mozliwosci dotyczace praw dostepu jak dla zwyklych plikow) Przy operacjach na zwyklych plikach po wywolaniu okreslonej funkcji na zadanym pliku system operacyjny szuka wlasciwego odpowiednika dla danego systemu plikow (np. open dla ext2 o ile dany system plikow jest typu ext2). Dla pliku specjalnego odpowiadajacego pewnemu urzadzeniu system szuka funkcji wlasciwych dla danego urzadzenia. Dostarczaniem takich funkcji zajmuja sie sterowniki urzadzen. Pliki specjalne tworzymy za pomoca instrukcji mknod. Przyklady dotyczace tworzenia plikow znajdziecie tutaj (link do tutaj). Zapis typu pliku znajduje sie w strukturze i-wezla: struct inode { dev_t  i_dev;                // NR URZADZENIA unsigned long i_ino; umode_t i_mode;              // TYP PLIKU nlink_t i_nlink; uid_t i_uid; gid_t i_gid; dev_t i_rdev; ... } fs.h typedef unsigned short dev_t; typedef unsigned short umode_t; types.h TYPY PLIKOW (zapis bitowy): 0010 urzadzenie znakowe 0100 urzadzenie blokowe Jedno urzadzenie moze miec dwa pliki - jeden dla dostepu blokowego, a drugi dla dostepu znakowego. Otrzymujemy wtedy dwa niezalezne dostepy do jednego urzadzenia. Wada takiego rozwiazania jest to, ze nie jestesmy w stanie uzyskac jednoznacznej kontroli dostepu do danego urzadzenia. W szczegolnosci trudno jest uzyskac wylaczny dostep do urzadzenia (tzn. zeby dane urzadzenie bylo naraz otwarte tylko przez jeden proces). Numer glowny i drugorzedny Aby dane urzadzenie mozna bylo zidentyfikowac w systemie potrzebny jest jakis unikatowy identyfikator. Jest nim wewnetrzny numer urzadzenia, zakodowany w polu "i_dev" i-wezla danego pliku. Czesto zdarza sie, ze do systemu mamy podlaczone wiele urzadzen tego samego typu (np. identyczne dyski). Nic nie stoi na przeszkodzie aby obslugiwac je identycznie. Dlatego tez kazdemu urzadzeniu zostaje przypisany numer glowny (MAJOR) oraz numer drugorzedny (MINOR). Numer glowny okresla nam grupe urzadzen do ktorej nalezy dane urzadzenie, natomiast numer drugorzedny zapewnia nam unikatowosc w danej grupie numeru glownego. Wszystkie urzadzenia z danym numerem glownym sa obslugiwane identycznie (co okaze sie dokladniej przy tablicach rozdzielczych). Numery glowne i drugorzedne zaleza bezposrednio od wewnetrznego numeru urzadzenia. Z numeru wewnetrzego mozemy wyliczyc pozostale numery: #define MAJOR(a) (int)((unsigned short)(a) >> 8) #define MINOR(a) (int)((unsigned short)(a) & 0xFF) fs.h Bibliografia Maurice J. Bach "Budowa systemu operacyjnego UNIX", WNT, Warszawa 1995 Pytania i odpowiedzi Mile widziane... Aby zadac pytanie Autor: Stanislaw Orzel

Wyszukiwarka

Podobne podstrony:
Linux714 (3)
Linux714
Linux735
linux721
Linux736 (4)
Linux736 (3)
Linux722 (4)
Linux713 (2)

więcej podobnych podstron