짧은 대답은 실제 파일 시스템 백업이있는 경우에만 수행된다는 것입니다 /dev
(현대 Linux 배포판을 사용하는 경우에는 그렇지 않습니다).
긴 대답은 다음과 같습니다.
이 모든 것이 모든 것이 파일이라는 원래의 UNIX 철학으로 돌아갑니다. 이 철학은 UNIX를 다용도로 만든 것의 일부입니다. 응용 프로그램에 물리적 코드와 직접 통신하기 위해 응용 프로그램에 특별한 코드가 없어도 사용자 공간의 장치와 직접 상호 작용할 수 있기 때문입니다.
원래 /dev
는 장치 파일을 넣는 잘 알려진 이름의 다른 디렉토리 일뿐입니다. 일부 UNIX 시스템은 여전히이 접근법을 취합니다 (OpenBSD는 여전히 그렇게 생각합니다). 시스템에 실제로없는 장치 (예 : 모든 파일)가 많은 장치 파일이 있기 때문에 일반적으로 시스템이 이와 같은지 알 수 있습니다 가능한 모든 디스크에서 가능한 파티션). 이렇게하면 약간의 디스크 공간을 사용하는 비용으로 부팅시 메모리 공간과 시간을 절약 할 수 있습니다. 이는 초기 메모리와 비교하면 메모리가 매우 제한적이고 빠르지 않기 때문에 초기 시스템과의 균형이 맞습니다. 이것을 일반적으로 static이라고합니다 /dev
.
현대 리눅스 시스템에서 (그리고 FreeBSD와 아마도 최신 버전의 Solaris라고 생각합니다), /dev
커널에 의해 채워지는 임시 메모리 내 파일 시스템입니다. . 이렇게하면 일부 메모리 (일반적으로 몇 MB 미만)와 매우 작은 처리 오버 헤드로 일부 디스크 공간이 절약됩니다. 또한 다른 많은 장점이 있으며, 가장 큰 장점 중 하나는 핫 플러그 된 하드웨어를 쉽게 감지 할 수 있다는 것입니다. 이를 일반적으로 동적이라고합니다 /dev
.
두 경우 모두 디바이스 노드는 일반 VFS 계층을 통해 액세스됩니다. 즉, 정의 상으로는 노드가 존재 stat()
해야하는 가상 노드 일지라도 inode를 가져야한다는 것을 의미 합니다. 이것은 /dev
inode를 메모리에 저장하거나 필요에 따라 생성하기 때문에 동적을 사용하는 시스템에 영향을 미치지 않으며 /dev
inode가 디스크에서 거의 0 공간을 차지하고 대부분의 파일 시스템에 대한 상한이 없기 때문에 정적 위치에 거의 영향을 미치지 않습니다. 그 어느 누구보다 필요할 것입니다.