Computer Science/Operating System
9. I/O 시스템
Kim Jinung
2023. 1. 13. 20:54
운영체제와 I/O 장치들이 커뮤니케이션 하는 방법의 종류 그리고 운영체제가 I/O 장치를 위해 제공하는 서비스는 무엇이 있는가?
I/O Mechanism
- Processor Access: 입출력 장치와 CPU가 직접 통신, 주기적으로 CPU가 입출력 장치의 상태를 확인하는 pooling 기법과 DMA를 거치지 않는 기본 인터럽트가 그 예시
- Direct Memory Access(DMA): DMA 제어기를 중간에 끼고 통신 ex) CPU - DMA 제어기 - I/O 장치
운영체제의 I/O Service
Buffering
두 장치간의 속도 차이를 조절하기 위한 기법이다. Buffer(메모리 영역)라는 임시 저장소를 만들어서 더 느린 장치에 속도를 맞춘다. ex) 초당 네트웍 속도가 10MB이고 데이터 저장 속도가 1MB라면 네트웍 속도 그대로 전부 받으면 파일이 손상될 수 있다. 따라서 버퍼가 이를 1MB씩 받고 디스크에 이를 넘겨서 저장한다. 반대로 영상 속도 보다 네트웍의 전송 속도가 더 느리다면 버퍼가 다 찰 때까지 대기하게 되므로 영상이 끊킨다.
Caching
사용할 데이터를 더 상위 메모리에 카피 해두는 방법 ex) 자주 사용하는 특정 데이터 블록 A가 메인 메모리에 위치하고 있다. 이를 추가로 CPU 내 캐시 메모리에 저장해둔다. CPU는 연산 시 먼저 캐시 메모리에 블록 A가 있는지 체크한다. 이와 같은 Cache hit 상황에서 속도가 향상 된다. (계층적 메모리 구조에서 캐시 메모리가 DRAM보다 속도가 더 빠르기 때문에)
Spooling
여러 프로그램에서 한 I/O 장치에 여러 요청을 보낼 때, 상대적으로 더 느린 I/O 장치에서 입력이 섞이지 않도록 보조 기억 저장장치인 Disk에 임시 저장을 통해 분리하는 기법이다. 프린터에서 출력 여러개를 걸 때 각 태스크를 독립적으로 유지하는 예시가 대표적이다.