I/O를 다루는 OS 설계의 목적 2가지
1. 속도 이슈
2. 통일된 방식으로 모든 I/O 기기를 다루는 것
속도 이슈에서 중요한 것은 Seek time(탐색시간)이다
Seek time(탐색시간) - 시간 大
Rotational delay(회전지연)
Transfer Time(전송시간)
(참고) 탐색시간, 회전지연, 전송시간
우리는 이 탐색시간을 줄이기 위해 디스크 스케줄링과 RAID에 대해 공부할 거다
앞으로의 상황 가정)
200개의 트랙이 있는 디스크라 가정
헤드 디스크의 초기위치는 100
ㅇ디스크 스케줄링(Disk Scheduling): 이 request들을 어떤 순서대로 처리할 것인가?
1. FIFO(First-In, First-Out)
seek time 多 / 공정성 ↑, 예측가능성 ↑
2. SSTF(Shortest Service Time First): 현재 트랙에서 가장 가까운 request를 처리
가장 optimal한 방법이지만 starvation(기아) 문제 때문에 실제로 사용하지는 않는다
seek time best / starvation O, 예측가능성 ↓
3. SCAN: 디스크 암을 한 방향으로 request를 처리
가장 많이 사용하는 방식이다
seek time 평타 / starvation 평타, 예측가능성 평타
3가지의 SCAN 방식이 더 있다
3-1. C-SCAN: 오직 한 방향으로만 request를 처리
3-2. N-Step-SCAN: N개씩 끊어서 큐에 저장
N: 큐의 길이
starvation 가능성이 아예 X
성능: N값에 따라 천차만별이다
3-3. FSCAN: 큐를 딱 2개 사용
메인 큐 + 임시저장 큐 느낌이다
starvation 가능성이 아예 X
추가)
4. 우선순위 스케줄링(Priority Scheduling): request를 보낸 task에 따라 우선순위를 부여
5. LIFO(Last-In-First-Out)
둘 다 많이 사용은 안 한다
ㅇRAID(Redundant Array of Disks)
RAID는 [컴퓨터 구조] ep7) 보조기억장치에서 자세히 다루므로 생략하고 넘어가겠다
ㅇ디스크 캐시(Disk Cache): m.m. 안의 버퍼
캐시 관리 방법으로 3가지가 있다
1. LRU(Least Recently Used): 최근에 사용하지 않은 block 큐를 버린다
2. LFU(Least Frequently Used): 자주 사용하지 않은 block 큐를 버린다
각각의 디스크 블록마다 카운터를 두고 블록에 액세스 할 때마다 카운터값을 증가시킨다
3. Frequency-based Replacement: LRU와 LFU의 절충안
가장 많이 사용하는 방법이다
참고 및 출처: Operating Systems: Internals and Design Principles(William Stalling), Operating System Concepts(Silberschatz, Abraham)
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] IPC(Inter-Process Communication) (0) | 2024.11.06 |
---|---|
[운영체제] 후기 (0) | 2024.07.07 |
[운영체제] ep9) Multiprocessor and Real-Time Scheduling (0) | 2024.07.04 |
[운영체제] ep8) Uniprocessor Scheduling (0) | 2024.07.04 |
[운영체제] ep7) Virtual Memory (0) | 2024.07.02 |