Plik urządzenia
Plik urządzenia – specjalny plik reprezentujący sterownik urządzenia. Dzięki takiemu zabiegowi zostaje znacznie uproszczona komunikacja z urządzeniem, 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 systemu plików, z dwiema wartościami. Pierwsza wartość jest numerem głównym urządzenia (ang. major device number), który służy do identyfikacji programu zajmującego się obsługą tego urządzenia (sterownik) przez jądro systemu operacyjnego. Druga wartość to numer podrzędny urządzenia (ang. minor device number) i jest ona przekazywana sterownikowi, aby mógł on zidentyfikować z jakiego urządzenia fizycznego dane mają zostać pobrane/wysłane – w sytuacji, gdy jeden sterownik zajmuje się obsługą wielu urządzeń. Obie wartości są liczbami jednobajtowymi razem tworząc dwubajtowy numer urządzenia.
Pliki urządzeń można podzielić na dwie grupy:
Tworzenie plików urządzeń
edytujDo tworzenia plików urządzeń znakowych lub blokowych służy program mknod:
mknod mojeurzadzenie c 100 102
Powyższe polecenie tworzy plik specjalny urządzenia znakowego (parametr c) mojeurzadzenie o numerze głównym 100 i numerze podrzędnym 102. Ze względów bezpieczeństwa pliki urządzeń może tworzyć jedynie root.
W celu odczytania informacji dotyczących konkretnego pliku urządzenia należy użyć polecenia:
ls -l /dev/hda
Wynik jego działania może mieć postać:
b[a]rw-rw---- 1 root disk 3[b], 0[c] 2007-07-03 21:43 /dev/hda[d]
Uwagi
edytujSposób działania
edytujPo wykonaniu niniejszego polecenia, którego efektem ma być wysłanie tekstu na ekran pierwszej konsoli:
echo "tekst" > /dev/tty1
realizowane są następujące operacje:
1. Sprawdzenie, czy użytkownik ma możliwości wykonywania działań na pliku (istnienie pliku, prawa dostępu itp.).
2. Odczytanie numeru głównego urządzenia z i-węzła i na jego podstawie określenie sterownika, w tak zwanych tablicach rozdzielczych jądra systemu, który zajmuje się fizyczną obsługą tego urządzenia.
3. Przekazanie do sterownika numeru podrzędnego urządzania odczytanego z i-węzła, rodzaju operacji (tutaj zapis) oraz danych.
4. Wykonanie przez sterownik żądanych operacji, co w tym przykładzie sprowadza się do wypisania ciągu znaków na ekranie konsoli.
Proces odczytu danych odbywa się podobnie, jednak w przypadku braku kolejnych danych wymaganych przez działający program, zostaje on wstrzymany przez jądro systemu do czasu otrzymania nowych danych od sterownika urządzenia.