장치 유형 번호는 무엇을 의미합니까?

장치 유형 번호는 무엇을 의미합니까?

file /dev/*여러 파일의 설명을 "Block Special (M/N)" 및 "Character Special (M/N)"로 인쇄합니다. 여기서 M과 N은 숫자입니다. 예를 들어:

$ file /dev/null
/dev/null: character special (1/3)

man file이는 문서화되지 않은 것 같지만 모호하게 참조되어 있으며 man stat이를 기본 장치 유형과 보조 장치 유형으로 지칭하는 것으로 보입니다. apropos 'device type'아무것도 발견되지 않았습니다. 그렇다면 이 숫자는 무엇을 의미하는가?

답변1

Unix의 장치에는 유형(예: 문자 또는 블록), 주 번호(일반적으로 드라이버) 및 부 번호(일반적으로 인스턴스)가 있습니다.

예를 들면 다음과 같습니다.

% ls -l /dev/vda
brw-rw---- 1 root disk 253, 0 Feb  3 09:09 /dev/vda

이것은 블록 장치, 기본 장치 253, 보조 장치 0입니다.

살펴보면 /proc/devices다음과 같이 끝나는 것을 알 수 있습니다.

Block devices:
  2 fd
259 blkext
  9 md
253 virtblk
254 mdp

따라서 253이 "virtblk"임을 알 수 있습니다. 이것은 가상 디스크가 있는 가상 머신이기 때문에 의미가 있습니다!

이 드라이버의 경우 부 장치 번호는 장치 내의 블록 장치 및 파티션을 나타냅니다.

% ls -l /dev/vd*
brw-rw---- 1 root disk 253,  0 Feb  3 09:09 /dev/vda
brw-rw---- 1 root disk 253,  1 Feb  3 09:09 /dev/vda1
brw-rw---- 1 root disk 253,  2 Feb  3 09:09 /dev/vda2
brw-rw---- 1 root disk 253,  3 Feb  3 09:09 /dev/vda3
brw-rw---- 1 root disk 253, 16 Feb  3 09:09 /dev/vdb
brw-rw---- 1 root disk 253, 32 Feb  3 09:09 /dev/vdc
brw-rw---- 1 root disk 253, 33 Feb  3 09:09 /dev/vdc1

"실제" 하드웨어와 관련되지 않은 특수 드라이버가 있습니다. 예를 들어

% ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Feb  3 09:09 /dev/null

캐릭터 장치, 메이저 1, 마이너 3 입니다. /proc/devices드라이버 1에 대해 알려주세요.

  1 mem

이 "mem" 드라이버가 다른 장치도 처리하는 것을 볼 수 있습니다.

% ls -l /dev | grep ' 1, '
crw-rw-rw- 1 root root      1,   7 Feb  3 09:09 full
crw-r--r-- 1 root root      1,  11 Feb  3 09:09 kmsg
crw-r----- 1 root kmem      1,   1 Feb  3 09:09 mem
crw-rw-rw- 1 root root      1,   3 Feb  3 09:09 null
crw------- 1 root root      1,  12 Feb  3 09:09 oldmem
crw-r----- 1 root kmem      1,   4 Feb  3 09:09 port
crw-rw-rw- 1 root root      1,   8 Feb  3 09:09 random
crw-rw-rw- 1 root root      1,   9 Feb  3 09:09 urandom
crw-rw-rw- 1 root root      1,   5 Feb  3 09:09 zero

답변2

각 장치 노드의 유형(블록 또는 문자)과 번호(주 및 부 번호라고 함)는 커널의 식별자로 사용됩니다.

Linux에서는 장치의 표준 목록과 해당 기능에 대한 간략한 설명이 유지됩니다.커널에서. 여기에서 일반적으로 드라이버를 식별하는 주요 번호(예를 들어TTY 장치 드라이버) 및 부 번호는 드라이버가 관리하는 장치를 식별합니다.

관련 정보