보조기억장치는 일반적으로 자기 디스크를 가장 많이 사용한다. 운영체제가 수행하는 디스크 스케줄링 기법의 개념과 종류에 대해 알아보자.


 일단 디스크 스케줄링(Disk Scheduling)기법이란 무엇일까??

디스크 스케줄링은 사용할 데이터가 디스크 상의 여러 곳에 저장되어 있을 경우 데이터를 엑세스하기 위해 디스크 헤드가 움직이는 경로를 결정하는 기법이야. 하드웨어 편에서 다뤘었지??
디스크 스케줄링은 일반적으로 탐색 시간을 최적화하기 위해 수행되며, 다음과 같은 목적을 가지고 있어.


 처리량 최대화 일정 시간에 디스크 입출력 요구를 서비스해 주는 수를 최대화한다. 
 응답 시간의 최소화 어떤 요청이 있은 후 결과가 나올 때까지 걸리는 시간을 최소화한다. 
 응답 시간 편차의 최소화 각 요청의 응답 시간과 평균 응답 시간의 편차를 최소화한다. 
 

디스크 스케줄링의 종류에는 FCFS, SSTF, SCAN, C-SCAN, N-step SCAN, 에센바흐, SLTF 스케줄링 기법 등이 있어...
토나오지..??  맞아.. 하나 하나 다 알아야해..ㅋㅋ 그럼 FCFS부터 보자.(근데 우리 이미 배운거임ㅋㅋ)

1) FCFS(First Come First Service) = FIFO(First IN First Out)

FCFS는 가장 간단한 스케줄링으로, 디스크 대기 큐에 가장 먼저 들어온 트랙에 대한 요청을 먼저 서비스하는 기법이야.
예전에 한번 했었지??
간단하게 설명해 보자면 아래와 같아.

- 디스크 대기 큐에 있는 트랙 순서대로 디스크 헤드를 이동시킨다.
- 디스크 대기 큐에 들어온 순서대로 서비스하기 때문에 더 높은 우선순위의 요청이 입력되어도 순서가 바뀌지 않아 공평성이 보장된다.
- 디스크 오버헤드가 적을 때 효율적이며, 프로그래밍이 쉽다.
- 헤드 이동 거리가 상당히 길어질 수 있다. (단점 ㅋㅋ)
- 디스크 오버헤드가 커지면 응답 시간이 길어진다. (역시 단점이지)
- 탐색 시간을 최적화하려는 시도가 없는 기법이다.

※ 탐색 시간은 헤드가 지정된 트랙에 도달하는 데 걸리는 시간이고, 회전 시간은 헤드가 지정된 트랙을 찾은 후 디스크가 회전하여 원하는 섹터에서 읽기/쓰기가 시작될 때까지 걸리는 시간을 의미한다.
 
2) SSTF(Shortest Seek Time First)

SSTF는 탐색거리(Seek Distance)가 가장 짧은 트랙에 대한 요청을 먼저 서비스하는 기법이야.

- 현재 헤드 위치에서 가장 가까운 거리에 있는 트랙으로 헤드를 이동시킨다.
- FCFS보다 처리량이 많고, 평균 탐색 시간이 짧다.
- 처리량이 많은 일괄 처리 시스템에 유용하다.
- 현재 서비스한 트랙에서 가장 가까운 트랙에 대한 서비스 요청이 계속 발생하는 경우, 먼 거리의 트랙에 대한 서비스는 무한   정 기다려야 하는 기아 상태가 발생할 수 있다. 
- 응답 시간의 편차가 크기 때문에 대화형 시스템에는 부적합하다.


3) SCAN

SCAN은 SSTF가 갖는 탐색 시간의 편차를 해소하기 위한 기법이야.

- Denning이 개발한 것으로, 대부분의 디스크 스케줄링에서 기본 전략으로 이용된다.
- 현재 헤드의 위치에서 진행 방향이 결정되면 탐색 거리가 짧은 순서에 따라 그 방향의 모든 요청을 서비스하고, 끝까지 이동한 후 역방향의 요청 사항을 서비스한다.
- 헤드가 안쪽과 바깥쪽을 왔다갔다 하면서 지나는 길에 있는 대기 요청뿐만 아니라 새로운 요청도 서비스하며, 현재의 진행 방향에 더 이상의 요청이 없을 때에만 이동방향을 바꾼다.
- SSTF에서 발생하는 응답 시간의 편차를 줄일 수 있다.
- 오버헤드가 작을 경우 가장 효율적인 기법이다.


4) C-SCAN(Circular SCAN)

C-SCAN은 항상 바깥쪽에서 안쪽으로 움직이면서 가장 짧은 탐색 거리를 갖는 요청을 서비스하는 기법이다.

- 헤드는 트랙의 바깥쪽에서 안쪽으로 한 방향으로만 움직이며 서비스하여 끝까지 이동한 후, 안쪽에 더 이상의 요청이 없으면 헤드는 가장 바깥쪽의 끝으로 이동한 후 다시 안쪽으로 이동하면서 요청을 서비스한다.
- 마치 처음과 마지막 트랙(Track)을 인접시킨 것과 같은 원형 형태로 Disk를 처리한다.
- 요청을 서비스하는 도중 새로운 요청 사항이 도착하면 다음 헤드가 진행할 때 서비스한다.
- 트랙의 안쪽과 바깥쪽의 요청에 대한 서비스가 공평하다.





FCFS : FIFO = 대기큐 순서대로 빠져나감 
SSTF : 가까운 순서대로 
SCAN : 좌우왔다갔다


 ※ LOOK / C-LOOK

- LOOK : SCAN 기법을 기초로 사용하되 진행 방향의 마지막 요청을 서비스한 후 그 방향의 끝으로 이동하는 것이 아니라 바로 역방향으로 진행하는 기법이다.
- C-LOOK : C-SCAN 기법을 기초로 사용하되 바깥쪽에서 안쪽 방향의 모든 요청을 처리한 후 바깥쪽 맨 끝으로 이동하는 것이 아니라 가장 바깥쪽 요청 트랙으로 이동한 후 안쪽 방향으로 요청을 서비스 하는 기법이다.


위의 두가지는 SCAN과 C-SCAN보다 총 이동거리가 작아서 더 발전된 형태라 할 수 있다.


5) N-step SCAN

N-step SCAN은 SCAN 기법을 기초로 하며 어떤 방향의 진행이 시작될 당시에 대기중이던 요청들만 서비스하고, 진행 도중 도착한 요청들은 한데 모아서 다음의 반대 방향 진행 때 서비스하는 기법이다.

SSTF나 SCAN 기법보다 응답 시간의 편차가 적다.
특정 방향에 많은 수의 요청이 도착할 경우 반대 방향에서의 무한 지연 발생을 방지할 수 있다.
진행 도중 도착한 요청은 반대 방향 진행 시 서비스하기 위해 디스크 대기 큐에 저장한다.


6) 에센바흐(Eschenbach) 기법

에센바흐는 부하가 매우 큰 항공 예약 시스템을 위해 개발되었다.
탐색 시간과 회전 지연 시간을 최적화하기 위한 최초의 기법이다.

7) SLTF(Shortest Latency Time First)

SLTF는 섹터 큐잉(Sector Queuing)이라고 하며, 회전 시간의 최적화를 위해 구현된 기법이다.
디스크 대기 큐에 있는 여러 요청을 섹터 위치에 따라 재정렬하고, 가장 가까운 섹터를 먼저 서비스한다.
헤드의 이동이 거의 없는 고정 헤드 장치인 드럼과 같은 장치에서 사용된다. 



+ Recent posts