티스토리 뷰

Dev.Basic/운영체제

[OS] 11-2. Disk Management & Scheduling II

글쓰는 개발자 _Jbee 2016. 6. 19. 18:58

Chapter 11-2. Disk Management & Scheduling II

Disk Scheduling Algorithm
큐에 다음과 같은 실린더 위치의 요청이 존재하는 경우,
디스크 헤드 53번에서 시작한 각 알고리즘의 수행 결과는? (실린더 위치는 0-199)
98, 183, 37, 122, 14, 124, 65, 67
각각의 알고리즘에 대입하여 살펴보자.

FCFS(First Come First Service)
들어온 순서대로 처리해주는 방법이다.
=> 98, 183, 37, 122, 14, 124, 65, 67
안쪽과 바깥쪽 번호가 요청되면 굉장히 비효율적인 헤더 이동을 보이게 된다.

SSTF(Shortest Seek Time First)
현재 헤더 위치에서 가장 가까운 위치에 존재하는 헤더 요청을 처리한다.
=> header starts at 53
65, 67, 37, 14, 98, 122, 124, 193, 199
= 236
하지만 이렇게 되면 starvation 문제가 발생하게 된다.
즉, 현재 헤더 위치에서 먼 위치에서 들어온 요청에 대해서 처리하기 전에,
더 가까운 요청들이 들어오게 되는 경우가 발생할 수 있다는 것이다.

SCAN
disk arm이 디스크의 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.
엘리베이터와 같은 동작 방식을 취한다
상황에 좌우하지 않고 자신의 기준에 따라서 읽어들인다.
다른 한 쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하면서 다시 반대쪽 끝으로 이동한다
왔다갔다하지 않기 때문에 header의 이동이 최소화되고, starvation문제가 발생하지 않는다.
하지만 실린더 위치에 따라 대기 시간이 다르다.
가장자리 영역이 가운데 영역보다 대기 시간이 긴 것이다.

C-SCAN (circular - scan)
SCAN변형
한 쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리하는 것은 같다.
하지만 다른 쪽 끝에 도달했으면 요청을 처리하지 않고 곧바로 출발점으로 다시 이동한다.
일반 SCAN방법에 비해 이동 거리가 조금 길어질 수 있지만 보다 균일한 대기 시간을 제공한다.

N-SCAN (n step - scan)
SCAN변형
일단 arm이 한 방향으로 움직이기 시작하면 그 시점 이후에 도착한 job은 되돌아 올 때 service
움직이는 도중에 들어오는 요청은 처리하지 않고,
출발하는 시점에 계획한 요청만 처리한다.
그리고 반대 방향으로 이동할 때, 다시 계획을 세우고 위 방법을 반복한다.
SCAN에 비해 보다 균일한 대기 시간을 제공한다.


LOOK - SCAN변형
C-LOOK - C-SCAN변형
헤드가 진행중이다가 그 방향에 더 이상 기다리는 요청이 없으면 헤드의 이동방향을 즉시 반대로 이동한다.
C-LOOK에서 반대로 이동할 때도 끝까지 가지 않고 요청이 들어온 실린더 번호의 최소 번호까지만 이동한다.
즉, 끝까지 갈 필요가 없어졌기 때문에 이동거리가 짧아지게 된다.


결론
SCAN알고리즘이 효율적이다.
File의 할당 방법에 따라 딛스크 요청이 영향을 많는다.

디스크 스케줄링 알고리즘은 필요할 경우 다른 알고리즘으로 쉽게 교체할 수 있도록 OS와 별도의 모듈로 작성되는 것이 바람직하다.




Swap-Space Management

Disk를 사용하는 두가지 이유
memory의 volatile(휘발성)한 특성 -> file system
프로그램 실행을 위한 memory공간 부족 -> swap area

Swap-space
Virtual memory system에서는 디스크를 memory의 연장 공간으로 사용한다.
파일 시스템 내부에 둘 수도 있으나 별도의 partition사용이 일반적이다
공간효율성보다는 속도 효율성이 우선적으로 고려된다.
일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조되기 때문이다.
따라서 block의 크기 및 저장 방식이 일반 파일시스템과 다르다.



RAID(Redundant Array of Independent Disks)
저렴한 여러 개의 디스크를 묶어서 사용하는 것을 말한다.

사용목적
디스크 처리 속도 향상
여러 디스크에 block 내용을 분산 저장하여
병렬적으로 읽어오게 된다.(interleaving, striping)

신뢰성(reliability)향상
동일 정보를 여러 디스크에 중복저장한다.
하나의 디스크가 고정나도 다른 디스크에서 읽어올 수 있다.(mirroring, shadowing)
단순한 중복 저장이 아니라 일부 디스크에 parity를 저장하여 공간의 효율성을 높일 수 있다.
parity 란 오류를 확인하고 이에 대응하여 복구할 수 있는 정보를 말한다.




Chapter 11-2. 끝

이 포스팅은 이화여대 반효경 교수님 강의를 듣고 요약한 내용을 담고 있습니다.



'Dev.Basic > 운영체제' 카테고리의 다른 글

[OS] 멀티스레딩에 대해서  (0) 2016.12.12
[OS] 11-2. Disk Management & Scheduling II  (0) 2016.06.19
[OS] 11-1. Disk Management & Scheduling I  (0) 2016.06.19
[OS] 10-4. File System IV  (0) 2016.06.18
[OS] 10-3. File System III  (0) 2016.06.17
[OS] 10-2. File System II  (0) 2016.06.16
공유하기 링크
TAG
«   2020/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
Total
1,326,609
Today
44
Yesterday
464