사용자 프로그램
open, read, write로 장치를 파일처럼 다룹니다.
사용자 프로그램은 파일처럼 열지만, 커널은 major/minor 번호로 드라이버를 고르고 드라이버는 컨트롤러 레지스터를 통해 장치를 제어합니다.
open, read, write로 장치를 파일처럼 다룹니다.
/dev/sda의 8,0처럼 major와 minor가 장치 식별자가 됩니다.
file_operations의 open, read, ioctl 함수를 구현합니다.
데이터, 상태, 명령 레지스터로 실제 장치 동작을 조율합니다.
디스크, 키보드, GPU 같은 장치가 물리적 I/O를 수행합니다.
major는 드라이버, minor는 같은 드라이버 안의 개별 장치를 가리킵니다.
CPU는 장치를 직접 움직이지 않고 컨트롤러의 상태와 명령 레지스터를 봅니다.
포트 맵 I/O는 전용 주소 공간을 쓰고, 메모리 맵 I/O는 메모리 주소로 접근합니다.
OS의 I/O 추상화는 사용자가 보는 파일 인터페이스와 장치별 레지스터 제어 사이에 드라이버 계층을 둡니다. 그래서 새 장치는 드라이버를 추가해 같은 시스템 콜 표면에 붙일 수 있습니다.