장치 경로

장치 파일과 major 번호

사용자 프로그램은 파일처럼 열지만, 커널은 major/minor 번호로 드라이버를 고르고 드라이버는 컨트롤러 레지스터를 통해 장치를 제어합니다.

1

사용자 프로그램

open, read, write로 장치를 파일처럼 다룹니다.

2

장치 파일

/dev/sda의 8,0처럼 major와 minor가 장치 식별자가 됩니다.

3

디바이스 드라이버

file_operations의 open, read, ioctl 함수를 구현합니다.

4

컨트롤러

데이터, 상태, 명령 레지스터로 실제 장치 동작을 조율합니다.

5

하드웨어

디스크, 키보드, GPU 같은 장치가 물리적 I/O를 수행합니다.

stat

장치 종류와 번호 확인

major는 드라이버, minor는 같은 드라이버 안의 개별 장치를 가리킵니다.

/dev/sdablock device, major 8
/dev/tty0character device
register

컨트롤러 레지스터 역할

CPU는 장치를 직접 움직이지 않고 컨트롤러의 상태와 명령 레지스터를 봅니다.

data전송할 값 또는 버퍼
statusbusy, ready, error 상태
PMIO/MMIO

레지스터 접근 방식

포트 맵 I/O는 전용 주소 공간을 쓰고, 메모리 맵 I/O는 메모리 주소로 접근합니다.

PMIOx86 in/out 명령
MMIOvolatile 포인터 접근

장치 파일 핵심 구조

OS의 I/O 추상화는 사용자가 보는 파일 인터페이스와 장치별 레지스터 제어 사이에 드라이버 계층을 둡니다. 그래서 새 장치는 드라이버를 추가해 같은 시스템 콜 표면에 붙일 수 있습니다.