I/O System Overview
- I/O Mechanisms
- How to send data between processor and I/O device (프로세서와 장치들이 어떻게 데이터를 주고받는지에 대한 매커니즘)
- I/O Services of OS
- OS Supports for better I/O performance
- (OS가 입출력을 어떻게 효율적으로 할 것인가에 대한 내용)
- Disk Scheduling
- Improve throughput of a disk
- RAID Architecture
- Improve the performance and reliability of disk system
I/O System (HW)
I/O system: 입출력 장치
I/O: 프로세스가 필요한 정보를 요청하면 데이터를 읽어오거나 내보내는 것.
데이터는 메인 메모리에 저장되어 입출력 장치를 통해 내보내거나 프로세서가 가져다 쓴다.
필요한 데이터는 메인 메모리에 있어야 한다.
I/O Mechanisms (I/O가 어떻게 이루어지는가?)
프로세서와 입출력 장치 사이에 데이터를 내보내고 들여오는데 크게 2가지 방법이 있다.
I/O Mechanisms - Overview
- Processor controlled memory access
CPU가 제어하는 메모리 접근 방법
- Polling (Programmed I/O)
- Interrupt
- Direct Memory Access (DMA)
Polling (Programmed I/O)
- 프로세서(CPU)가 주기적으로 I/O device에 상태를 확인 (전송할, 전송받을 데이터가 있는지 확인)
- 모든 I/O 장치를 순환하면서 확인함
- 전송 준비, 전송 상태 등
- 장점
- 간단하다
- I/O장치가 빠르고, 데이터 전송이 잦은 경우에 효율적임
- Ex) 키보드 입력, 마우스 입력 등
- 단점
- 프로세서의 부담이 크다 => Polling Overhead (I/O가 느린 경우 Overhead가 더 커지게 됨)
Interrupt
- Polling방식에서 프로세서가 계속 돌면서 부담이 발생한다.
- I/O 장치가 작업을 완료한 후, 자신의 상태를 프로세서에게 전달한다
- Interrupt 발생 시, 프로세서는 데이터 전송 수행한다.
- 장점
- Polling 대비 low overhead발생
- 불규칙적인(가끔씩) 요청 처리에 적합함
- 단점
- Interrupt handling overhead (인터럽트를 핸들링 하는 오버헤드가 크다: 계속 인터럽트가 발생하면 문제)
Direct Memory Access (DMA)
Processor controlled memory access에서의 단점은 프로세서가 모든 데이터 전송을 처리해야하는 단점이 있다.
=> Processor에 대한 매우 큰 오버헤드 발생됨 (고정적으로 할당됨.)
(단순히 메모리를 전송하는데에 프로세서가 작업이 완료될때까지 확인해야함)
이를 보완하는 방법으로써 프로세서가 명령만 내리고 자기 일을 수행할 수 있도록 하면 될 것이다.
- Direct Memory Access
I/O 장치와 Memory 사이의 데이터 전송을 Processor 개입 없이 수행
메모리와 입출력 모듈이 직접적으로 연결되어 있어 CPU가 이 사이에 개입을 하지 않아도 데이터를 주고받을 수 있다.
Processor controlled memory access는 프로세서를 거쳐서 데이터를 주고받았다면 DMA는 직접 주고 받는다.
프로세서의 오버헤드를 줄일 수 있다.
Direct Memory Access (DMA) 의 작동과정
- Processor 는 데이터 전송의 시작 종료 만 관여 => 오버헤드가 적다는 것이 장점
I/O Services of OS
I/O Services가 위치한 곳은 다음과 같다.
- I/O Scheduling
- I/O시스템에서 많은 데이터가 동시에 주고 받고 하면 누구를 먼저 처리해야할지 결정해야 한다.
= 입출력 요청에 대한 처리 순서 결정- 시스템의 전반적 성능 향상
- Process 의 요구에 대한 공평한 처리
- E.g., Disk I/O scheduling
- Error handling
- 입출력 중 발생하는 오류 처리 (디스크를 쓰고있는데 에러가 발생할 수 있음)
- E.g., disk access fail, network communication error 등
- I/O device information managements
- (시스템에 대한 I/O 장치들에 대한 정보 유지)
- Buffering
- I/O 장치와 Program 사이에 전송되는 데이터를 Buffer 에 임시 저장
- 전송 속도 (or 처리 단위 차이 문제 해결)
- 데이터를 보내는 것, 저장하는 디스크가 있다고 가정하자
- 1초에 100개를 보내는데 디스크는 1초에 10개밖에 저장하지 못한다면 디스크는 90개를 저장하지 못한다.
- 중간에 이 과정들을 중재하는 것이 필요하며 이것을 버퍼라고 한다.
- 버퍼가 데이터를 저장하는 속도에 맞추어 데이터를 전송하게 된다.
- Caching
- 자주 쓸 데이터를 일정 공간에 저장하여 접근하는 방법(자주쓸 데이터를 예측하여 저장)
- 자주 사용하는 데이터를 미리 복사해 둠
- Cache hit 시 I/O 를 생략 할 수 있음
- Spooling
한 I/O 장치에 여러 Program이 요청을 보낼 시 문제가 발생할 수 있으므로, 출력이 섞이지 않도록 하는 기법
- 각 Program에 대응하는 disk file 에 기록 (spooling)
- (A, B, C가 있다면 해당 프로그램이 쓰는 전용 disk file에 기록함)
- Spooling이 완료 되면, spool 을 한번에 하나씩 I/O 장치로 전송
본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.
상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다.
아래의 출처에서 자세한 내용을 수강하실 수 있습니다.
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'CS > OS' 카테고리의 다른 글
[OS] Lec 12-3. RAID Architecture (0) | 2022.07.19 |
---|---|
[OS] Lec 12-2. Disk Scheduling (0) | 2022.07.19 |
[OS] 11-5. File System Implementation (0) | 2022.05.17 |
[OS] 11-4. File Protection (0) | 2022.05.11 |
[OS] 11-3. Directory Structure (0) | 2022.05.09 |