내 질문은 Linux에서 장치 노드가 구현되는 방식과 관련이 있습니다. 나는 udev 또는 devtmpfs와 같은 사용 가능한 의사 파일 시스템이 있다는 것을 알고 있습니다. 이 경우 그 뒤에 실제 저장소가 없으며 파일 시스템은 커널 드라이버가 응용 프로그램에 제공하는 환상입니다. 그러나 내 질문은 여전히 유효합니다.
- devtmpfs 또는 udev를 사용할 때 /dev가 사용자 공간에 표시되는 방식입니다.
- 이는 /dev가 수동으로 생성된 장치 노드를 포함하는 일반 디렉터리인 경우입니다.
문제는 다음과 같습니다
- 장치 노드 파일이 파일 시스템에 저장되어 있습니까(inode 사용), 아니면 단지 디렉토리의 특수 항목입니까?
- 파일로 저장된다면 바이너리 파일과 어떻게 구별되나요? 장치 노드에는 특별한 매직 넘버가 할당됩니까?
답변1
POSIX 모델에서는 모든 파일이 유형에 관계없이 inode를 사용합니다. 디렉토리 항목은 단순히 inode를 가리키는 이름입니다. 파일 유형, 권한 등은 모두 inode에 저장됩니다. 따라서 장치 노드에는 inode도 포함됩니다. 다음을 실행하여 이를 확인할 수 있습니다
ls -li /dev
. 각 항목에는 해당 inode 번호가 있습니다.장치 노드는 inode에 저장된 파일 유형에 따라 다른 파일 유형과 구별됩니다. 이는 파일 패턴의 일부입니다. 다양한 파일 형식(참조UNIX 권한 및 파일 유형 이해)에는 이와 관련된 "마법의" 숫자가 있습니다.