컴퓨터 시스템에서 데이터의 입력과 출력을 효율적으로 처리하는 과정을 포함
사용자와 시스템 간의 상호 작용 및 데이터 교환을 관리하는 데 핵심 역할
동기 I/O: CPU실행은 I/O가 진행되는 동안 대기
비동기 I/O: CPU실행과 동시에 I/O진행
디바이스 드라이버 관리
디바이스 드라이버
: 하드웨어 디바이스를 컨트롤하기 위한 소프트웨어 모듈
- 운영 체제와 하드웨어 간의 통신을 담당
- 특정 하드웨어와 상호작용
ex) 그래픽 카드, 네트워크 어댑터, 저장 장치 드라이버 등..
버퍼링
I/O 버퍼
: 데이터를 메모리 버퍼에 일시적으로 저장하는 기술 ➡️ I/O 작업 효율성 향상
- 데이터가 메모리 버퍼에 저장되면, 응용 프로그램은 버퍼에서 데이터를 읽거나 데이터를 버퍼에 쓸 수 O
➡️ 디스크 액세스와 네트워크 트래픽 최소화
➡️ I/O 작업을 병렬로 처리
캐싱
캐시 메모리
: 자주 액세스되는 데이터를 빠르게 읽고 쓰기 위해 메모리에 저장하는 기술
- 데이터를 디스크나 원격 서버에서 가져오는 대신 메모리 캐시에서 데이터를 검색 ➡️ 응답시간 少
스케줄링
I/O 스케줄링
: 다수의 I/O 요청을 효율적으로 처리하기 위한 스케줄링 알고리즘
- 이벤트 발생을 대기하면서 다른 작업을 수행하는 방식
- 시스템은 이벤트 발생 시그널을 대기하고 있다가 이벤트가 발생하면 처리
- 이벤트가 발생하지 않을 때 CPU 자원을 낭비하지 않을 수 O / 이벤트 발생 시까지 대기해야 하므로 대기 시간 발생
ex) CFQ (Completely Fair Queuing), NOOP (No-op) 등..
인터럽트 처리
하드웨어나 소프트웨어 이벤트가 발생할 때 시스템에 신호를 보내 시스템이 해당 이벤트에 즉각적으로 반응하는 방식
주기적으로 특정 이벤트가 발생했는지 확인하는 방식
간단하고 예측 가능한 방법이지만, 리소스를 지속적으로 확인하면서 CPU 시간을 낭비하고 지연시간이 발생할 수 O