1. I/O란?
Input과 Output
즉, 입출력을 의미함.
2. I/O Mechanisms
1) CPU 제어
CPU가 I/O 장치와 메모리 사이의 모든 데이터 전송을 처리하는 기법
(1) Polling
<1> 특징
- CPU가 모든 I/O 장치의 상태를 주기적으로 조사
<2> 장점
- 간단함
- I/O 장치가 빠르고, 데이터 전송이 잦은 경우에 효율적임
<3> 단점
- CPU의 부담이 큼
(2) Interrupt
<1> 특징
- I/O 장치가 작업을 완료한 후, 자신의 상태를 CPU에게 전달
- Interrupt가 발생하면 CPU는 데이터를 주거나 받는 일을 수행함
<2> 장점
- Pooling 방식보다 overhead가 적음
- 불규칙적인 요청 처리에 적합함
<3> 단점
- Interrupt handling overhead
2) 직접 제어
DMA(Direct Memory Access)라고 하며, CPU의 개입 없이 I/O 장치와 메모리 사이의 데이터 전송을 수행하는 기법
Processor(CPU)는 데이터 전송의 시작과 종료에만 관여함
3. OS가 제공하는 I/O Service
1) I/O Scheduling
2) 입출력 중 발생하는 오류 처리
3) I/O 장치 정보 관리
4) 버퍼링(Buffering)
- I/O 장치와 Program 사이에 전송되는 데이터를 Buffer에 임시 저장하는 것
- 전송 속도나 처리 단위의 차이에 의한 문제를 해결할 수 있음
(5) 캐싱(Caching)
- 자주 사용하는 데이터를 미리 복사해두는 것
- Cache hit가 발생하면 I/O를 생략할 수 있음
(6) Spooling
- 다수 프로세스들이 한 I/O 장치로 요청을 보냈을 때, 각 프로세스의 요청이 독립적으로 수행될 수 있도록 하는 기법
- 요청을 Disk file (spool)에 기록해두고, spool을 한번에 하나씩 I/O로 전송함
4. Disk Scheduling
1) 의미
- Disk access 요청들의 처리 순서를 결정하는 것
- Seek time과 Rotational delay time을 줄이기 위한 것
2) 평가 기준
- Throughput : 단위 시간당 처리량
- Mean response time : 평균 응답 시간
- Predictability : 응답 시간의 예측성
3) Seek time 최적화 기법
디스크는 여러 개의 Cylinder로 구성되어 있다. 각 Disk access 요청에 대한 Cylinder 위치(번호)가 주어 졌을 때, Head가 모든 요청을 처리하기 위한 총 이동 거리를 줄여나가는 기법들을 소개한다.
(1) FCFS
<1> 특징
- 요청이 도착한 순서에 따라 처리
<2> 장점
- Disk access 부하가 적은 경우에 적합
- 공평하고 무한 대기 방지 현상이 없음
- 간단하고 overhead가 작음
<3> 단점
- 최적 성능 달성에 대한 고려가 없음
(2) SSTF(Shortest Seek Time First)
<1> 특징
- 현재 head 위치에서 가장 가까운 요청 먼저 처리
<2> 장점
- 처리량 증가
- 평균 응답 시간 감소
- 일괄 처리 시스템에 적합
<3> 단점
- 기아 현상 발생 가능
- 응답 시간의 예측이 어려움
(3) Scan Scheduling
<1> 특징
- 현재 head의 진행 방향에서, head와 가장 가까운 요청 먼저 처리
- 끝 cylinder에 도착하면, 반대 방향으로 진행
<2> 장점
- 기아 현상 문제가 해결된 SSTF
- 처리량 증가
- 평균 응답 시간 감소
<3> 단점
- 진행 반대 방향 끝에 있는 요청의 응답시간 증가
(4) C-Scan Scheduling
<1> Scan Scheduling과의 차이
- Head가 미리 정해진 한 방향으로만 이동
- 끝 cylinder에 도착하면, 반대쪽 끝 cylinder로 이동 후 재시작
<2> 장점
- Scan Scheduling보다 공평함
<3> 단점
- 반대쪽 끝 cylinder로 이동할 때 많은 지연 시간 발생
(5) Look Scheduling
<1> Scan Scheduling과의 차이
- 현재 진행 방향에 요청이 없으면 방향 전환 (엘리베이터 알고리즘)
<2> 장점
- Scan Scheduling에서 불필요한 head 이동이 제거됨
4) Rotational Delay time 최적화 기법 : SLTF(Shortest Latency Time First)
- Disk queue에 있는 요청들을 sector 위치를 기준으로 정렬하고, 가장 가까운 sector에 있는 요청부터 처리
- Sector Queuing 이라고도 함
5) SPTF(Shortest Positioning Time First)
(1) 특징
- Seek time, Rotational delay time을 모두 고려하는 알고리즘
- 대표적으로 에센바흐(Eschenbach) 알고리즘이 있음
(2) 장점
- 처리량 증가
- 평균 응답 시간 감소
(3) 단점
- 기아 현상 발생 가능
※ Positioning time = Seek time + Rotational delay time
※ 에센바흐 알고리즘 : 헤드는 C-Scan처럼 움직이면서, Disk가 1회전 하는 동안 요청을 최대한 많이 처리할 수 있도록 요청을 정렬해두는 알고리즘
5. RAID
Redundant Array of Inexpensive Disks
1) 특징
- 여러 디스크들을 하나의 저장 장치로 묶어서 사용하는 방식
- 디스크 시스템의 성능 향상을 위해 사용됨
2) RAID 아키텍쳐
(1) RAID-0
<1> 특징
- 모든 디스크에 입출력 부하를 균등하게 분배
- 성능만 고려한 기법
- Block striping 사용
※ Block striping : block을 일정한 크기로 나누어 각 디스크에 나누어 저장하는 기법
<2> 장점 : 병렬이기 때문에 데이터 접근이 빠름
<3> 단점 : 한 디스크에서 장애가 발생하면 그 디스크에 있는 파일들은 사용할 수 없음
<4> 사용 예시 : 영상처럼 데이터를 빠르게 읽어내야 하는 곳에 사용함
(2) RAID-1
<1> 특징
- 최소 2개의 디스크로 구성되며, 동일한 데이터를 미러링 디스크에 중복으로 저장
- 신뢰성만 고려한 기법
<2> 장점 : 한 디스크에 장애가 생겨도 데이터 손실이 없음
<3> 단점 : 용량을 많이 차지함
(3) RAID-2
<1> 특징
- ECC 디스크를 추가로 사용하여 데이터의 일관성을 확인하고, 필요한 경우 즉시 보정함
- Bit level striping
※ ECC : Error Correcting Code
<2> 장점 : 성능과 신뢰성을 모두 가짐
<3> 단점 : 구현이 복잡하고 비싸서 잘 사용되지 않음
(4) RAID-3
<1> 특징
- Parity 디스크를 추가로 사용하여 한 디스크에 장애가 발생하면 parity 정보를 이용하여 복구함
- Byte level striping
- 하나의 디스크 오류까지는 허용함
<2> 장점
- 성능과 신뢰성을 모두 가짐
<3> 단점
- 중첩 입출력이 불가능함
- Parity 디스크에 접근이 많이 몰리면 병목 현상이 발생하여 성능이 저하될 수 있음
(5) RAID-4
<1> 특징
- Parity 디스크를 추가로 사용한다는 점에서 RAID3과 유사하지만, Block level striping을 이용한다는 차이점이 있음
- RAID2, RAID3에서는 데이터를 읽거나 쓰기 위해서 모든 데이터 디스크에 동시에 접근 했지만, RAID4는 Block 단위로 한 디스크에 저장되기 때문에 독립적으로 접근됨
<2> 장점
- RAID3과 유사
- 데이터를 읽을 때 중첩 입출력이 가능함
<3> 단점
- RAID3과 유사
- 데이터를 쓸 때는 중첩 입출력이 불가능함
(6) RAID-5
Parity 디스크에 접근을 집중시키지 않고, Parity를 모든 디스크에 분산함
(7) RAID-6
각 데이터 블록에 대해 2개의 Parity를 사용하여 2개의 디스크 오류에도 데이터를 읽을 수 있음
이미지 출처 : 한빛 미디어 운영체제
참고 자료 : 김덕수 교수님 - www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'OS 개념 정리' 카테고리의 다른 글
[OS] File System (0) | 2021.06.28 |
---|---|
[OS] 가상 메모리(3) - 추가적인 고려 사항 (0) | 2021.06.22 |
[OS] 가상 메모리 관리(2) - 페이지 교체 기법들 (0) | 2021.06.17 |
[OS] 가상 메모리 관리(1) - HW/SW상에서의 관리 (0) | 2021.06.15 |
[OS] 가상 메모리의 의미 및 할당 기법들 (0) | 2021.06.10 |
댓글