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