Plik urządzenia
| Ten artykuł należy dopracować zgodnie z zaleceniami edycyjnymi: encyklopedyzacja. Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się na stronie dyskusji tego artykułu. Po wyeliminowaniu niedoskonałości prosimy usunąć szablon {{Dopracować}} z kodu tego artykułu. |
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.