Plik urządzenia

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Plik urządzenia – specjalny plik, który jest interfejsem dla sterownika urządzenia. Dzięki takiemu zabiegowi wiele rzeczy jest uproszczonych, np. chcąc wykonać kopię partycji, wystarczy skopiować plik, który ją przedstawia.

W systemach operacyjnych Unix pliki urządzeń najczęściej znajdują się w katalogu /dev. Taki plik to i-węzeł w strukturze plików z dwiema wartościami. Pierwsza wartość jest to numerem głównym urządzenia (ang. major device number) i służy do identyfikacji przez jądro systemu operacyjnego, programu, który zajmuje się obsługą urządzenia (sterownik). Druga wartość to numer podrzędny urządzenia (ang. minor device number) i jest ona wysyłana sterownikowi, aby mógł zidentyfikować z jakiego urządzenia fizycznego dane mają zostać pobrane/wysłane (np. w sytuacji gdy jeden sterownik zajmuje się wieloma urządzeniami). Oba te numery są jedno-bajtowe, razem tworzą dwu-bajtowy numer urządzenia.

Pliki urządzeń mają dwa typy:

Tworzenie plików urządzeń [edytuj]

Do tworzenia urządzeń znakowych służy program mknod:

mknod mojeurzadzenie c 100 102

to polecenie stworzy plik specjalny urządzenia znakowego (mówi o tym literka c) mojeurzadzenia o numerze głównym 100 i numerze podrzędnym 102. Tworzyć plik urządzeń może jedynie root, ze względów bezpieczeństwa.

Takim poleceniem możemy odczytać informacje o pliku urządzenia:

ls -l /dev/hda

Dostaniemy np. taki rezultat:

b[1]rw-rw---- 1 root disk 3[2], 0[3] 2007-07-03 21:43 /dev/hda[4]

1  litera "b" mówi o tym że jest to urządzenie blokowe

2  numer główny urządzenia

3  numer podrzędny urządzenia

4  ścieżka pliku urządzenia

Jak to wszystko działa [edytuj]

Gdy użytkownik użyje na przykład takiego polecenia:

echo "tekst" > /dev/tty1

którego efektem ma być wysłanie tekstu na ekran konsoli pierwszej, wykonywane są następujące operacje:

1. Sprawdzane są możliwości działania użytkownika na pliku (istnienie pliku, prawa dostępu itp.)

2. Jest odczytywany numer główny z i-węzła i w tak zwanych tablicach rozdzielczych w jądrze systemu jest sprawdzany numer i odczytywany, dzięki numerowi, program (czyli sterownik) który zajmuje się fizyczną obsługą urządzenia.

3. Do programu jest przekazywany numer podrzędny odczytany z i-węzła, rodzaj operacji (w tym przykładzie – zapis) oraz dane.

4. Program analizuje otrzymane informacje, co w tym przykładzie sprowadza się do wypisania ciągu znaków na ekran konsoli.

Proces czytania odbywa się podobnie, jednak w tym przypadku gdy od programu-sterownika danego urządzenia przestaną napływać dane zatrzymuje się czytanie i jądro zawiesza program który czyta dane na czas otrzymania następnych danych od sterownika.

Zobacz też [edytuj]