Main Memory는 휘발성이기 때문에, 영구적으로 데이터를 저장할 때비휘발성인 Disk에 저장하여야 한다.

 

 

Hard Disk

Hard Disk는 자기 패턴을 이용해 데이터를 읽고 쓴다. 

Hard Disk는 다음과 같이 구성 된다. 

  • Head : 데이터를 읽고 쓰는 역할을 담당한다.
  • Disk Arm : Head를 데이터가 있는 곳으로 움직인다.
  • Platter : 위 아래 Surface에 자기적 성질을 통해 데이터를 기록한다.
  • Spindle : Platter를 회전 시킨다.
  • Track : Platter에서 회전축을 중심으로 동심원이다. 하나의 Platter에 여러개 존재할 수도 있다. 
  • Cylinder : Platter가 여러 장일 때, Head가 동시에 접근하는 Track들의 집합이다.
  • Sector : Track을 일정한 크기로 나눈 것으로, Hard Disk의 최소 전송단위이다.

 

Disk I/O Service Time

Disk의 I/O 요청이 들어오게 되면 크기 2가지 과정을 거친다. 

첫 번째는 "Access Time"으로 Disk의 Head를 원하는 데이터가 있는 Sector로 이동시켜아 한다.

다음은 "Data Transfer Time"으로 Disk Media의 Data를 Disk Buffer로 옮기는 작업이 필요하다.

 

"Access Time"은 또 다시 2가지로 나뉜다. 

  • Seek Time : Head를 원하는 Cylinder(Track)로 이동시켜는데 필요한 시간. (Seek Distance에 비례)
  • Rotational Delay : Head를 원하는 Sector로 이동하기 위해 Spindle이 회전하는 시간.

즉, Disk I/O Service Time은

Access Time(Seek Time + Rotational Delay) + Data Transfer Time

으로 볼 수 있다.

 

 

Disk Scheduling Algorithms 

Disk에 Request가 들어오면 Request Queue에 위치하게 된다. 

Disk I/O Shcedular는 현재의 Request를 마치면, Request Queue에서 

다음 Request를 가져와 수행한다. 

 

따라서 Disk I/O Service Time을 줄이기 위해서 OS는 적절한 Disk Scheduling Algorithm이 필요하다. 

Disk I/O Service Time에서 Data Transfer Time에 비해

Seek Time 혹은 Rotational Delay가 훨씬 많이 걸리기 때문에, 

이를 최소화 해야 한다.

 

하지만 OS는 Rotational Delay를 예측할 수 없다.

이는 Rotation Speed와 Track마다 Sector의 갯수가 다르기 때문이다.

따라서, Disk Scheduling Algorithm은 Seek Time을 최소화 하기 위해 노력한다. 

 

Scheduling Algorithm의 Evaluation은

Reqeust Queue의 State와 현재 Head의 위치가 주어졌을 때,

Head의 이동 거리로 판단한다.

 

FCFS (First Come First Service)

Queue에 들어온 순서대로 Service한다.

초기 위치는 Disk Head의 위치는 22이였고, 첫 번째 Request의 Cylinder 위치는 25이다. 

따라서 3만큼 Head가 이동한다. 

또한, $R_2$의 경우 Cylinder 위치가 92이기 때문에 67만큼 Head가 이동한다. 

 

FCFS는 Seek Distance가 길다

 

SSTF (Shortest Seek Time First)

Greedy Algorithm의 일종으로,

현재 Head기준으로 가장 가까운 위치부터 이동하는 알고리즘이다.

초기 위치 22에서 가장 가까운 Cylinder위치의 Request는 25이다.

다음은 25기준으로 32가 가장 가깝기 때문에 $R_8$을 수행한다.

 

해당 알고리즘은 Starvation 현상이 발생할 수 있다.

만약, Header위치가 10번이고 90번이 Request Queue에 위치한다고 가정하자. 

만약 10번 근처의 Request가 계속 들어온다면, 90번은 계속 수행되지 못하게 된다.

 

SCAN

Disk의 한쪽 끝과 다른 쪽 끝을 오가며, 가는 길에 있는 Request를 처리하는 알고리즘이다.

이러한 특성 때문에 Elevator Algorithm이라고도 불린다.

C-SCAN

한쪽 끝(A)에서 다른 쪽 끝(B)으로 이동할 때, 가는 길에 있는 요청을 처리한다. 

만약, 만약 끝(B)에 다다르면 다시 처음(A)로 이동하며, 이동시엔 요청을 처리하지 않는다.

SCAN보다 대기 시간이 균등하다는 장점이 있다.

 

C-LOOK

C-SCAN을 보완한 것으로, 

가는 방향에 더이상 Reqeust가 없다면, 이동을 멈추고 반대 방향으로 이동한다.

해당 그림에서 $R_1$을 처리하고 $R_2$까지 가는 길목에 Reqeust를 모두 처리한다. 

C-SCAN이였다면 100번까지 이동했지만,

C-LOOK에선 92번까지 움직이고 $R_2$를 처리하고 방향을 바꾼다.

 

반대 방향으로는 C-SCAN과 마찬가지로 처리하지 않지만, 

$R_4$ 뒤로 더이상 Request가 없으므로, 방향을 바꾸고 

$R_4$를 수행한다.

 

 

Disk Formatting

OS는 Disk관리 기능 중 일부를 담당한다. 

그중 하나가 Disk 초기화 이다. 

 

Disk의 초기화 단계는 3가지 단계로 나뉜다.

  • Physical Formatting (Low-Level Formatting)
  • Partition
  • Logical Formatting

 

Physical Formatting (Low-Level Formatting)

Disk는 초기에 아무것도 없는 빈 상태이다.

이를 Disk-Controller가 Read-Write 할 수 있도록 하기 위해 Sector단위로 나눈다.

보통 공장에서 Disk 제조단계 마지막에 진행한다.

각 Sector는 Header, Data, Trailer으로 나뉜다. 

Head와 Trailer는Disk Controller가 직접 접근할 수 있는,

Sector Number와 Data가 제대로 쓰였는지를 체크하는 ECC(Error-Correcting Code)가 저장된다.

 

Partition

Physical Formatting을 거친 Disk는 Sector단위로 나뉘게 된다. 

이 Sector를 묶어서 논리적으로 독립적인 Disk를 만든다.

실제로 물리적으로 나뉜 것은 아니며, OS가 이를 독립적인 Disk로 인식한다.

예를 들어, 윈도우는 하나의 Disk로 C드라이브와 D드라이브로 나뉜다.

 

Logical Formatting

Partition이 끝난 후, 각각 Partition은 다양한 용도로 활용될 수 있다. 

그 중 File System 자료구조를 만드는 것을 "Logical Fomatting"이라 부른다. 

 

 

Swap Space Management

앞서 살펴본 Parition은 Logical Fomatting을 거쳐

File System을 위한 공간으로 활용될 수 있지만,

Swap Space로 활용될 수 있다.

 

"Swap Space"란,

Main Memory의 연장선으로 사용하는 Disk 공간을 의미한다.

 

Swap Space는 Process Image를 저장하는 Virtual Memory로도 활용될 수 있다.

Main Memory에 공간이 없을 때, Virtual Memory를 사용하고

Information을 Swap Space에 저장한다.

 

이 Disk의 Swap Space와 Memory간이 데이터 교환이

이전 포스팅에서 살펴본 Swapping이다.

Swap Space는 2가지 타입으로 구현될 수 있다. 

  • File System에서 normal File : Disk의 Swap Space를 만들 수 없을 때 사용
  • Disk의 Partition

 

 

References

Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 9th

'CS > Operating System' 카테고리의 다른 글

[OS] File System(1) - Interface  (0) 2023.05.17
[OS] I/O Systems  (0) 2023.05.16
[OS] Virtual Memory  (0) 2023.05.13
[OS] Main Memory(2) - Memory Allocation  (1) 2023.05.11
[OS] Main Memory (1)  (1) 2023.05.09
복사했습니다!