[Computer Science]/[운영체제(OS)]

[운영체제(OS)] 11-2) 디스크 스케줄링, NVM 스케줄링

극꼼 2023. 3. 30. 20:09
반응형


<디스크 스케줄링>

: 디스크 스케줄링은 HDD와 같은 기계식 플래터 기반 저장장치에 적용되며, 디스크 헤드 이동량을 최소화하는 데 주로 중점을 둡니다.

프로세스가 입출력을 해야 할 때마다 운영체제에 시스템 콜을 합니다. 원하는 드라이브와 컨트롤러가 쉬고 있다면 요청을 즉시 시작되지만, 그렇지 않다면 해당 드라이브의 큐에 들어가 기다려야 합니다. 다중 프로그래밍 시스템에서는 많은 프로세스가 장치를 공유하기 때문에 큐에 여러 입출력 요청이 대기하고 있을 수 있습니다. 

디스크 스케줄링의 목표는 다음과 같습니다.

  1. 하드 디스크 검색으로 낭비되는 시간 최소화
  2. 특정 프로세스의 입출력 요청 우선순위 할당
  3. 디스크 대역을 실행중인 각 프로세스에 할당
  4. 정해진 기한까지 요청을 처리

1. 선입 선처리(FCFS) 스케줄링

: 가장 간단한 형태의 디스크 스케줄링입니다. 

 

2. SCAN 스케줄링

: 디스크 암이 디스크 한 끝에서 다른 끝으로 왕복하면서 가는 길에 있는 요청을 모두 처리합니다. 엘리베이터 알고리즘이라고도 부릅니다. 

 

3. C-SCAN 스케줄링

: 요청에 걸리는 시간을 더 균등하게 하기 위한 SCAN 스케줄링의 변형입니다. 왕복이 아닌 편도로 이동하며, 한쪽 끝에 다다르면 처음 시작한 자리로 돌아가서 다시 서비스를 시작합니다. 

4. deadline 스케줄러

: SCAN, C-SCAN 스케줄링은 기아 문제를 일으킬 가능성이 작지만, 그래도 기아를 일으킬 수 있기 때문에 Linux는 deadline 스케줄러를 만들었습니다. 읽기와 쓰기별로 큐를 유지 관리하며, 읽기 연산에 높은 우선순위를 줍니다.

 

5. 최소 탐색 시간 우선 스케줄링(SSTF 스케줄링)

: 헤드가 가장 가까운 요청부터 우선 순위를 부여합니다. 어떤 요청들은 아주 오래 기다리게 되는 기아 상태가 발생할 수 있습니다.

 

6. LOOK 스케줄링

: SCAN 방식과 비슷하지만, 이동하느 방향에 기다리는 요청이 없을 경우 이동 방향을 즉시 바꾼다는 점에서 차이가 있습니다. 


<NVM 스케줄링>

: 디스크 스케줄링과는 달리, 이동 디스크 헤드가 없기 때문에 일반적으로는 간단한 FCFS 정책을 사용합니다.

(ex) NOOP 스케줄러(Linux) : FCFS + 인접한 요청 병합(처리하는 요청에 인접한 요청을 함께 처리함).

 

읽기 서비스에 대해 필요한 시간은 일정하지만, 플래시 메모리의 속성 때문에 쓰기 서비스 시간은 일정하지 않습니다. 일부 SSD 스케줄러는 이 속성을 이용해 쓰기 요청은 인접한 요청도 병합하고 읽기 요청을 FCFS 순서로 처리합니다.

 

유효하지 않은 데이터가 차지한 공간을 회수하기 위해 가비지 수집을 할 때, 하나 이상의 페이지 읽기와 하나 이상의 페이지 쓰기가 발생합니다.

* 페이지 쓰기 = 임의의 쓰기 연산 + 유효한 데이터 복사해서 과잉 공급 공간으로 옮김

* 페이지 읽기 = 가비지 수집

이러한 공간 관리를 위한 I/O 요청 생성을 쓰기 증폭(Write amplication)이라 하며, 장치의 쓰기 성능에 영향을 줄 수 있습니다. 최악의 경우 쓰기 요청을 할 때마다 여러 개의 추가 I/O가 발생합니다.

 

 

반응형