I/O subsystem
커널은 장치 차이를 파일과 드라이버 경계로 숨긴다
사용자 프로그램은 open, read, write를 호출하고 커널과 드라이버가
버퍼, 권한, 장치 레지스터 차이를 처리한다.
| 층 | 역할 | 장치 차이 | 점검 기준 |
|---|---|---|---|
| Application시스템 호출 | 파일처럼 장치를 열고 읽고 쓰는 요청을 만든다. | 장치 세부 제어 대신 파일 디스크립터와 권한만 본다. | open, read, write 실패 코드와 권한 오류를 구분한다. |
| Kernel I/O공통 계층 | 요청 큐, 버퍼, 캐시, 보호 검사를 관리한다. | 블록, 문자, 네트워크 장치를 공통 인터페이스로 연결한다. | 동기·비동기 요청과 버퍼링 지점을 확인한다. |
| Driver장치 제어 | 컨트롤러 레지스터, 인터럽트, DMA 같은 하드웨어 작업을 수행한다. | 장치별 명령과 상태 비트를 드라이버가 알고 있다. | major 번호가 올바른 드라이버로 연결되는지 본다. |
| Block device블록 단위 | 디스크, SSD처럼 고정 크기 블록을 읽고 쓴다. | 위치 지정, 캐시, 스케줄링이 성능에 크게 영향을 준다. | 블록 크기, 큐 깊이, 캐시 적중률을 확인한다. |
| Character device스트림 | 키보드, 터미널처럼 바이트 흐름을 순서대로 전달한다. | 임의 위치 접근보다 입력 이벤트와 버퍼 상태가 중요하다. | 읽기 대기, EOF, 인터럽트 처리를 구분한다. |
| Network소켓 | 네트워크는 별도 소켓 인터페이스로 패킷과 연결을 다룬다. | 장치 파일보다 프로토콜, 주소, 포트 상태가 중심이다. | 연결 상태, 송수신 버퍼, 타임아웃을 함께 본다. |