[CS] 운영체제 (21) 디스크 관리

do yeon kim·2022년 10월 24일
0

CS-운영체제

목록 보기
20/20

http://www.kocw.net/home/cview.do?cid=3646706b4347ef09

Disk

디스크는 어떤 구조로 되어 있는가?

디스크를 관리하는 단위는 내부와 외부에 따라서 그 단위가 다르다.
내부의 경우 디스크 관리 단위가 Sector(섹터) 이다.
그리고 섹터의 데이터를 읽고 쓰라는 명령은 디스크 컨트롤러가 직접관리한다.

외부의 경우 디스크 관리하는 단위는 Logical block(논리적 블록) 단위이다.

논리적 블럭이 물리적 디스크에 맵핑되서 들어간 위치가 섹터이다.




디스크 관리

디스크를 처음 구매해서 사용하기 까지 어떤 흐름으로 진행될까?

Physical Formatting
디스크컨트롤러가 읽고 쓸 수 있는 섹터 단위로 나눈다. 이런 과정을 physical formatting이라고 한다.
각각의 섹터는 실제 디스크 외부에서 요청하는 논리적 블럭을 저장하기도 하지만 부가적으로 저장할 수 있는 공간이 추가된다. 섹터의 앞뒤에 붙는 header 와 trailer이다.

Partitioning
섹터영역들을 묶어 준다. 그래서 독립적인 디스크로 만들어 준다. 이를 partitioning이라고 한다.

Logical formatting
각각의 파티션을 용도에 따라서 파일시스템을 만드는 것을 logical formatting이라고 한다.

Booting
파일시스템에 있는 운영체제가 부팅이된다.




디스크 스케쥴링

디스크 접근 시간(Access time)
접근시간의 세가지 요소 Seek time, Rotational latency, Transfer time 이다.

  • Seek time
    디스크 헤드가 읽고 쓰기 요청을 한 실린더, 트랙으로 이동하는데 걸리는 시간을 의미하며 거의 대부분의 시간을 차지한다.

  • Rotational latency
    헤드가 원하는 섹터에 도달하기까지 걸리는 회전지연시간을 의미한다.

  • Transfer time
    실제 데이터의 전송시간이다.

Disk bandwidth
단위 시간 당 전송된 바이트 수를 의미한다. seek time을 줄이면 높어진다.
그렇기 때문에 disk scheduling이 필요하다.

Disk Scheduling
디스크 스케쥴링은 디스크 외부에서 읽고쓰는 요청이 들어 왔을 때 가능한 seek time을 줄여서 disk bandwidth를 높히려고 하는 것이다.
만약 안쪽과 바깥쪽위치가 번갈아 가면서 요청이 들어온다고 가정하고 디스크 스케쥴링은 들어온 순서대로 처리하게 되면 seek time이 늘어서 비효율적이 될 것이다. 그렇기 때문에 최대한 seek time을 줄이면서 요청에 대한 응답을 하는 것이 가능하게 해야 한다.




디스크 스케쥴링 알고리즘

Seek time을 줄이면서 Disk bandwidth를 높히기 위해서는 적절한 알고리즘을 이용해서 디스크 스케쥴링을 해주어야 한다.
디스크 스케쥴링에는 FCFS, SSTF, SCAN, C-SCAN, N-SCAN, LOOK, C-LOOK 가 있다.



FCFS 알고리즘

들어온 순서대로 처리해주는 알고리즘이다.
이런식으로 순서가 안쪽트랙과 바깥쪽 트랙이 번갈아 가면서 요청이 오면은 헤드의 이동거리가 늘어나기 때문에 비효율적이다.



SSTF 알고리즘

현재 헤드위치에서 가장 가까운 요청을 먼저 처리한다.
가까운 위치에 있는 것을 처리하기 때문에 헤드의 이동거리가 줄어들긴한다.
하지만 starvation문제가 발생해서 요청에 대한 처리를 하지 못할 수도 있다.



SCAN 알고리즘

엘리베이터와 유사한 방식이다. 큐에 어떤 요청이 들어와 있는지 상관없이 안쪽 부터 바깥쪽으로 이동하면서 안에 있는 요청을 처리한다.
그리고 다시 반대로 움직이면서 요청이 있으면 처리한다. 한쪽 방향으로 이동하면서 요청을 모두 처리했다면, 다시 턴을 해서 번갈아가면서 처리한다.
한쪽 방향으로 이동 중 추가 되는 요청에 대해서도 같이 처리를 한다.
한방향으로 가면서 처리하기 때문에 디스크 헤드 이동거리가 줄어들고 starvation문제도 발생하지 않는다.

하지만 위치에 따라서 대기시간이 차이가 나는 문제가 있다.
가운데 부분은 기다리는 시간의 기대치가 짧다. 하지만 가장자리의 경우는 한바퀴 돌고 돌아올때 까지 기다려야 하기 때문에 대기시간이 길다.
대기시간의 편차가 발생한다.



C-SCAN 알고리즘

한쪽 방향으로만 처리를 한다. 되돌아 올때는 되돌아오기만 한다.
이동거리는 다소 길어질수 있다. 하지만 q에 들어온 요청들의 대기시간이 균일해진다. 가장자리에 있는 경우와 가운데에 있는 요청이나 대기하는 시간이 균일하다는 장점이 있다.



N-SCAN, LOOK and C-LOOK 알고리즘

N-SCAN
디스크 헤드가 이동을 하면서 처리하는 것은 SCAN 알고리즘과 똑같은데, 지나가는 도중에 들어오는 요청은 턴을 하고 나서 되돌아 올때 처리를 한다. 다시말해, 다음번 차례에 처리를 한다. 대기시간의 편차를 좀 더 줄일 수 있다.


LOOK and C-LOOK
look and c-look은 SCAN과 C-SCAN의 약간의 비효율적인 부분을 개선한 방법이다.
SCAN과 C-SCAN은 요청이 있든 없든 간에 항상 끝에서 끝으로 이동을 한다. 그리고 턴을 해서 돌아온다. 하지만 요청이 없다면 끝까지 이동할 필요가 없다.
LOOK AND C-LOOK은 끝에서 끝으로 이동을 하면서 요청에 대한 처리를 하는데, 끝에 도달하기 전에 요청이 더이상 없다면 방향을 바꾸어서 돌아가는 알고리즘이다.



어떤 알고리즘을 사용할까?

현재 시스템에서는 SCAN을 기반한 알고리즘을 사용하고 있다.




Swap-Space 관리

하드디스크를 사용하는 두가지 이유

  • 메모리가 휘발성의 성질을 가진다.
  • 메모리가 공간이 부족하다.
    메모리의 연장공간으로 사용하는 swap space(swap area)

하드디스크에서 swap space의 관리
물리적 디스크를 파티셔닝을 해서 논리적디스크를 만들수 있고, 운영체제는 독립적인 디스크로 인식하기 때문에, file 시스템을 설치 할 수도, swap space로 사용할 수도 있다.

swap area에 있는 내용은 프로그램이 실행하는 동안에는 swap area에 프로세스의 주소공간이 머물러 있다가, 프로그램이 끝나면 사라진다. 물리적 메모리의 연장공간으로 쓰기 때문에 페이지 폴트가 발생했을 때 빠르게 읽어 들이고, 종료되면 빠르게 사라져야 한다. 즉, 빠르게 이동을 해야한다.
디스크를 접근하는 시간의 대부분은 헤드가 이동하는 시간이라고 했다. seek time을 줄이기 위해서 swap area는 공간효율성보다는 속도 효율성을 높히는 것이 중요하다.



RAID
디스크 여러개를 묶어서 같이 사용하는 것을 말한다.
목적

  • 디스크 처리 속도 향상
    분산저장, 병렬적으로 읽어온다. (interleaving, striping)

  • 신뢰성 향상
    미러링, 쉐도윙

0개의 댓글