Krótka odpowiedź brzmi, że dzieje się tak tylko wtedy, gdy masz fizyczne wsparcie systemu plików /dev
(a jeśli używasz nowoczesnej dystrybucji Linuksa, prawdopodobnie nie masz).
Długa odpowiedź brzmi:
Wszystko to wraca do pierwotnej filozofii UNIX, że wszystko jest plikiem. Ta filozofia jest częścią tego, co sprawiło, że UNIX jest tak wszechstronny, ponieważ można bezpośrednio wchodzić w interakcje z urządzeniami z przestrzeni użytkownika bez konieczności posiadania specjalnego kodu w aplikacji, aby rozmawiać bezpośrednio ze sprzętem fizycznym.
Pierwotnie /dev
był to po prostu inny katalog o znanej nazwie, w którym umieszczasz pliki urządzenia. Niektóre systemy UNIX nadal przyjmują takie podejście (uważam, że OpenBSD nadal tak robi) i zazwyczaj można stwierdzić, czy system taki jest, ponieważ będzie miał wiele plików urządzeń dla urządzeń, których system w rzeczywistości nie ma (na przykład pliki dla każdego możliwa partycja na każdym możliwym dysku). Oszczędza to miejsce w pamięci i czas przy rozruchu kosztem użycia nieco więcej miejsca na dysku, co było dobrym kompromisem dla wczesnych systemów, ponieważ były one na ogół bardzo ograniczone w pamięci i niezbyt szybkie. Jest to ogólnie nazywane statycznym /dev
.
W nowoczesnych systemach Linux (i uważam również, że FreeBSD i prawdopodobnie najnowsze wersje Solaris), /dev
to tymczasowy system plików w pamięci zapełniany przez jądro (lub udev, jeśli używasz Systemd, ponieważ nie ufają jądru, że zrobi prawie wszystko) . Oszczędza to miejsce na dysku w cenie pewnej pamięci (zwykle mniej niż kilka MB) i bardzo mały narzut przetwarzania. Ma również szereg innych zalet, z których jedną z największych jest to, że łatwiej jest wykryć sprzęt podłączony na gorąco. Jest to ogólnie określane jako dynamiczne /dev
.
W obu przypadkach dostęp do węzłów urządzeń jest uzyskiwany za pośrednictwem zwykłej warstwy VFS, co z definicji oznacza, że muszą one mieć i-węzeł (nawet jeśli jest to wirtualny, który istnieje, aby rzeczy takie stat()
jak powinny. Z praktycznego punktu widzenia ma to zerowy wpływ na systemy, które używają dynamiki, /dev
ponieważ tylko przechowują i-węzły w pamięci lub generują je w razie potrzeby, i prawie zerowy wpływ tam, gdzie /dev
jest statyczny, ponieważ i-węzły zajmują prawie zerową przestrzeń na dysku, a większość systemów plików nie ma górnego limitu lub zapewnić znacznie więcej niż ktokolwiek może kiedykolwiek potrzebować.