디스크(2차 기억장치, 외부 기억장치, 보조기억장치) 또한 스케쥴링이 필요하다고 합니다.
CPU는 시분할 시스템이기 때문에 현재 어떤 프로세스(혹은 커널)이 CPU 수행권한을 획득하기 위해서 스케줄링이 필요했고
메모리는 공간을 효율적으로 사용하기 위해서 실행에 꼭 필요한 프로세스가 정해진 구간만을 나눠갖았습니다.
디스크는 상대적으로 용량이 크기 때문에 공간을 분할할 필요는 없지만 빨리 데이터를 불러오기 위한 전략이 필요합니다. 이를 디스크 스케줄링이라고 합니다.
디스크의 구조
디스크 = 여러개의 원판
원판 = 여러개의 트랙
트랙 = 여러개의 섹터
실린더 = 서로 다른 원판들에서 같은 위치에 있는 트랙들의 모임
- 논리 블록(Logical Block): 디스크 외부에서 디스크를 불러들이는 단위(1차원 배열처럼 취급)
논리 블록은 섹터와 1:1 대응된다.
섹터 0 : 최외곽 실린더의 첫번째 트렉의 첫 섹터
디스크 스케줄링
-
접근시간(Access Time) = 탐색시간 + 회전지연시간 + 전송시간
-
탐색시간(Seek Time)
헤드가 데이터가 있는 실린더의 위치까지 도달하는 시간
-
회전지연시간(Rotational Latency)
헤드가 실린더의 있는 정확한 섹터의 도달하기 위해서 원판이 회전하는 시간
-
전송시간(Transfer Time)
데이터를 읽고 쓰는 데 사용되는 실제 시간
-
접근시간을 최소화 해야되는데 회전지연시간과 전송시간은 걸리는 시간이 미미한데다가 운영체제가 통제하기도 힘듬 => 탐색시간을 줄이자 => 디스크 헤드의 이동시간을 줄이자
디스크 스케줄링 방식
1 FCFS(First Come First Served) 스케줄링
- 택배를 배달하는데 주소별로 그룹화 하지 않고 먼저 들어온 순서대로 방문하는 방식 -> 매우 비효율
- 위그림에서 움직인 거리 = 644
2. SSTF(Shortest Seek Time First) 스케줄링
- 요청 순서를 파악해서 현재 헤드에서 제일 가까운 위치부터 방문하는 방식
- 단점: 기아현상(Starvation) 발생 = 제일 멀리 있는곳은 영원히 방문 안할 수도 있음
- 위그림에서 움직인 거리 = 236
3. Scan 알고리즘
- 버스 운행처럼 좌우 끝을 왔다갔다 하면서 만나는 헤드가 만나는 섹터를 처리하는 방식
- 단점: 양끝에 위치하는 경우 가운데 위치하는 것보다 평균 접촉 횟수가 절반이다.
4. C-Scan(Circular-Scan) 알고리즘
- Scan 알고리즘의 단점을 보완 -> 한쪽으로 갈때는 만나면서 다 처리하지만 반대쪽으로 갈때는 하나도 처리하지 않음
- 장점: 양끝이나 가운데나 평균 처리 횟수가 같음
- 단점: 반대쪽으로 갈때 하나도 처리하지 않기때문에 Scan 알고리즘에 비해 조금의 시간 소모가 발생함
5. Look, C-Look 알고리즘
- Look 알고리즘은 Scan 알고리즘의 보완
가던 방향에서 더이상 처리 해야할 요청이 없으면 방향을 바꾸는 알고리즘
- C-Look은 C-scan과 Look을 합친 알고리즘
다중 디스크 환경에서의 스케줄링
- 서버와 같이 신뢰성이 중요한 곳에서는 여러개의 디스크를 써서 데이터를 중복 저장함(백업)
- 같은 데이터를 갖고 있는 여러개의 디스크 중에서 어떤 디스크에서 접근할것인지 스케줄링할 필요가 있음
- 탐색시간이 목표
헤드로부터 데이터까지의 거리가 제일 가까운 디스크를 찾아서 시간을 줄임
- 부하균형(Load Balancing)이 목표
여러 디스크를 골고루 사용해서 일부 디스크가 과부하 상태에 걸리지 않도록 분배
- 전력소모가 목표
여러개의 디스크를 동시에 돌리는 것은 전력의 큰 소모가 발생하므로 적당한 선을 정해서 최소한의 디스크만 돌리고 나머지는 비활성화 상태에 둠
디스크의 저전력 관리
디스크의 상태
- 활동(Active): 헤드가 데이터를 읽거나 쓰고 있는 상태
- 공회전(Idle): 디스크가 회전중 but 읽거나 쓰지는 않는 상태
- 준비(Standby): 디스크 회전 X, 인터페이스 활성화
- 휴면(Sleep): 디스크 회전 X, 인터페이스 비활성화
- 비활성화(준비 + 휴면) 상태에서 활성화(활동 + 공회전) 상태로 가는데 시간과 전력이 많이 소요돼서 비활성화 상태로 자주 보낸다고 전력이 많이 아껴지는게 아님
그래서 비활성화로 보내는 여러가지 방법이 연구됨