Podsystem Wejścia/Wyjścia w systemie Linux 2.4.7
Urządzenia znakowe i blokowe. Funkcja block_read(), block_write().
1. Wstęp
< Poprzednia strona Następna strona >

1. Wstęp


1.1 Ogólny opis podejścia twórców systemu Linux do urządzeń wejścia/wyjścia

Twórcy systemu Linux umożliwiają programom użytkowym komunikację z urządzeniami wejścia/wyjścia przez pliki specjalne w wirtualnym systemie plików. Urządzeniom odpowiadają pliki w systemie plików (standardowo znajdują się one w katalogu /dev). Komunikacja z urządzeniem odbywa się przez zapis/odczyt do takich plików. Takie podejście do problemu ma wiele zalet, najważniejszymi są: proste definiowanie ograniczeń dostępu do danego urządzenia i unifikacja interfejsu użytkownik - urządzenie.

Możliwość tworzenia i korzystania z plików specjalnych musiała oczywiście zostać zaimplementowana także na poziomie wirtualnego systemu plików Linuxa. Rzeczywiście w strukturze i-węzła znajdują się odpowiednie pola (i_rdev, i_mode, i_cdev, i_bdev), które przechowują informacje, z jakim urządzeniem związany jest plik specjalny.



1.2 Urządzenia blokowe i urządzenia znakowe.

W systemie Linux wyróżniamy dwa rodzaje urządzeń: urządzenia blokowe, urządzenia znakowe. Podstawową różnicą pomiędzy tymi dwoma typami urządzeń jest jednostka wielkości danych, jakimi operuje jądro przy przesyłaniu danych z/do urządzenia. W przypadku urządzeń znakowych jest to zawsze jeden bajt, w przypadku urządzeń blokowych jest to blok określonej wielkości. Ważną różnicą pomiędzy urządzeniami znakowymi i blokowymi jest także czas dostępu do nich. Urządzenie znakowe charakteryzuje się szybkim dostępem (przykładami takich urządzeń jest pamięć ram, karta dźwiękowa, karta telewizyjna), a urządzenia blokowe są to urządzenia powolne (twarde dyski, napędy dyskietek, napędy CD-ROM, streamery), w których pojawia się potrzeba buforowania, oraz szeregowania zleceń.

Z każdym urządzeniem związany jest jego typ (znakowe, blokowe) oraz numer pierwszo- i drugorzędny. Dla danego typu urządzenia ta trójka wartości jest unikalna. Listę tych urządzeń oraz odpowiadających im trójek można znaleźć w pliku Documentation/devices.txt w katalogu zawierającym źródła jądra.




Autor: Filip Łukasik