공부함
Disk Management Scheduling 본문
https://core.ewha.ac.kr/publicview/C0101020140523151255773807?vmode=f
디스크 관리와 스케쥴링에 대해 배워보자
디스크 구조
logical block
디스크 외부에서 디스크를 논리적 블록 단위로 바라본다.
논리적인 블록이 섹터에 매핑이 되어 있다.
주소를 가진 1차원 배열처럼 취급한다.
정보를 전송하는 최소 단위이다.
sector
내부적으로 디스크를 관리하는 최소의 구조는 섹터다. 섹터에 데이터를 읽고 쓰라는 요청은 디스크 컨트롤러가 관리한다.
섹터 0은 최외곽 실린더의 첫 트랙의 첫번째 섹터이다. 부팅과 관련된 정보가 저장된다.
Disk management
피지컬 포맷팅 (로우레벨 포맷팅)
디스크를 만들 때 디스크를 섹터 단위로 나눠 놓는다.
섹터는 헤더 + 실제 데이터(512바이트) + 트레일러로 구성된다.
헤더와 트레일러는 섹터 번호, ECC(에러커렉팅코드)등의 정보가 저장되어 컨트롤러가 직접 접근, 운영한다.
디스크 컨트롤러가 데이터를 읽고 쓰는데 필요한 부가 정보들이 헤더와 트레일러에 저장된다.
데이터를 저장할 때 데이터 자체만 저장하는 것이 아니라 데이터의 축약된 요약본이 ECC이다. 이것을 데이터를 저장할 때 같이 저장한다. 오류를 잡는데 사용한다. 모든 오류를 잡지는 못하지만 유용하다. ECC의 규모에 따라 에러가 발생했을떄 에러를 수정할 수도 있다.
파티셔닝
피지컬 포멧팅을 하고 나서 섹터를 묶어줘서 하나의 로지컬 디스크로 만드는 것을 파티셔닝이라고 한다.
C드라이브, D드라이브가 로지컬 디스크가 된다. 운영체제는 로지컬 디스트를 독립적인 디스크로 취급한다.
각각의 디스크는 파일 시스템이 될수도 스왑 에어리어가 될수도 있다.
로지컬포맷팅
파일시스템을 논리적 디스크에 설치하는 것이다.
FAT, incode, freespace 등의 구조 포함한다.
Booting
CPU는 메모리만 접근하지 하드디스크에는 접근을 못한다.
메모리 영역 중에 롬이 있다. 전원이 나가도 유지되고 부팅을 위한 스몰부트스트랩로더가 있다.
전원이 나가면 이 스몰부트스트랩로더를 가리키고 있는다.
부팅할 때 이것이 실행된다. 하드디스크에서 0번섹터 내용을 메모리에 올리고 그걸 실행하라고 지시한다.
0번섹터는 부트스트랩로더로 하기로 약속되어 있따. 부트스랩로더는 OS를 디스크에서 로드해서 실행한다.
디스크스케쥴링
접근시간의 구성
Seek time
디스크 헤드가 읽고 쓰는 요청을 한 트랙으로 (실린더로) 이동하는 시간 (안쪽 - 바깥쪽 이동)
가장 오래 걸리는 시간이다.
Rotational latency
헤드가 원하는 섹터에 도달하는데 걸리는 회전시간 . 시크 타임의 1/10정도가 된다.
Transfer time
실제 데이터의 전송 시간 . 굉장히 작은 시간을 차지한다.
디스크 bandwith
단위 시간당 전송된 데이터의 수 . 가능한 한 시크타임을 줄여야 높게 나온다.
디스크스케쥴링
시크타임을 최소화하는 것이 목표다.
시크타임은 시크거리와 비례한다.
디스크 스케쥴링 알고리즘
스케쥴링 알고리즘이 대부분 디스크 내부가 아닌 곳에서 구현된다. 디스크 보다 위쪽 OS쪽에 존제하기 때문이다.
따라서 정확한 실린더 위치는 모르고 논리 블록 번호를 보고 스케쥴링을 한다. 어느정도는 디스크 상의 섹터 위치와 대게 맞아 떨어진다. 하지만 설명은 0~199까지의 실린더 번호로 한다.
FCFS
퍼스트 컴 퍼스트 서비스이다. 들어온 순서대로 처리한다.
SSTF
쇼티스트 시크 타임 퍼스트이다. 현재 헤드 위치에서 가장 가까운 요청을 가장 먼저 처리한다
디스크 헤드의 위치 기준 가장 큐에 있는 요청 중 가장 가까운 요청을 먼저 처리한다.
매 요청을 처리할 때 마다 가까운 요청을 계산한다.
장점
장점으로는 디스크 헤드의 이동 거리가 줄어든다.
단점
하지만 단점으로 starvation이 발생할 수 있다.
SCAN
디스크 스케쥴링에서 가장 간단하면서 획기적인 방법이다.
엘리베이터 스케쥴링 이라고도 부른다. 엘리베이터와 스케쥴링 방식이 똑같기 때문이다.
큐에 어떤 위치의 요청이 들어왔는지 상관없이, 상황에 좌우받지 않고 줏대있는 방법이다.
디스크헤드는 안쪽 -> 바깥쪽으로 이동하면서 가는 길목에 요청이 있으면 처리한다. 처리하면서 가장 바깥까지 나간다.
그리고 나서 방향을 바꾼다. 바깥쪽에서 안쪽으로 들어오면서 길목에 요청이 있으면 처리하고 지나간다.
장점
디스크 헤드의 이동거리가 짧아진다. 한 방향으로 가면서 처리하기 때문이다. starvation 문제도 발생하지 않는다.
비교적 공정하면서 디스크 헤드의 이동거리 측면에서 효율적이다.
단점
위치에 따라서 대기 시간이 다른 문제가 있다. 가운데 부분이 양쪽 가장자리보다 기다리는 시간의 기대치가 짧다.
CSCAN
써큘러 스캔이다.
디스크 헤드가 한 방향으로 이동할 때만 요청을 처리하고 반대 방향으로 올 때는 요청을 처리하지 않고 이동만 한다.
스캔과의 차이
헤드의 이동 거리는 조금 길어질 수도 있지만 큐에 들어온 요청들의 대기시간이 더 균일해진다.
기본적으로 디스크 스케쥴링 알고리즘은 스캔에 기반한 알고리즘들을 사용한다.
스캔을 번형한 알고리즘도 있다.
N-SCAN
디스크 헤드가 출발하는 순간 이미 큐에 있는 요청들은 지나가면서 처리한다.
하지만 지나가는 도중에 들어온 요청은 이번 이동에 처리하지 않고 다음 이동떄 처리한다.
큐에 들어온 요청들의 대기시간이 더 균일해진다. (대기시간의 편차를 더 줄일 수 있다)
LOOK, CLOOK
스캔과 씨 스캔의 비효율적인 측면이 있어서 개선한 것이다.
스캔과 씨 스캔은 요청이 있건 없던 간에 항상 끝->끝으로 헤드가 이동한다.
끝까지 찍은 후 턴 해서 돌아온다. 하지만 끝 쪽에 요청이 없으면 끝까지 갈 필요가 없다.
이것을 개선한 것으로 진행중인 방향에 더이상 요청이 없으면 턴해서 돌아오는 것이다.
스캔 -> 룩, 씨스캔 -> 씨룩이다.
어떤 알고리즘이 좋은가?
현재 디스크 스케쥴링에서는 스캔에 기반한 알고리즘을 주로 사용한다.
헤드의 이동거리르 줄이 수 잇끼 때문이다.
파일을 디스크에 할당하는 방법도 디스크 스케쥴링의 성능에 영향을 미친다.
연속할당을 했으면 연속된 실린더 위치에 있어서 이동거리를 줄일 수 있다.
현대에서는 여러 요청을 묶어서 한꺼번에 처리해서 효율을 높이기도 한다.
Swap-Space Management
보조기억장치(하드디스크)를 사용하는 이유는 메모리의 단점을 보완하기 위해서이다.
- 메모리의 휘발성을 보완하기 위해서
- 파일시스템처럼 영속으로 유지해야 하는 것은 비휘발성의 디스크를 사용해야 한다
- 메모리는 공간이 한정적이
- 프로그램의 주소공간 전체를 물리적 메모리에 올리기에는 메모리 공간이 부족하고, 최근에 멀티프로그래밍디그리가 높아지고 있다.
- 메모리의 연장공간으로 디스크가 필요하다. 즉 스왑 스페이스, 스왑 에어리어 용도로 디스크를 사용한다.
Swap Space
하드디스크 관점에서 스왑 스페이스를 어떻게 관리해야 할까?
물리적인 디스크를 파티셔닝을 해서 로지컬 디스크를 만들 수 있다.
각각의 로지컬 디스크는 OS가 독립적인 디스크로 간주하고 각각의 디스크에 파일 시스템을 설치해서 사용하거나 스왑 에어리어로 사용한다.
파일 시스템의 구현은 기본적으로 512바이트의 섹터 단위로 데이터를 저장하고 있다.
파일 시스템에 데이터를 넣는 방식은 여러가지가 있다. 연속할당, 링크드얼로케이션, 유닉스, 팻 파일 시스템 등
반면 스왑 에어리어는 프로그램이 실행되는 도중에 프로세스의 주소공간이 스왑 아웃 되거나, 페이지 폴트가 나면 스왑 인 하는데 사용한다. 물리적 메모리의 연장선 개념이므로 가능한 한 빠르게 쓰고 읽을 수 있어야 한다.
디스크에 접근하는 대부분의 시간은 시크 타임이다. 스왑 에어리어는 따라서 시크 타임을 줄여서 시간 효율성을 높여야 한다. 어차피 프로세스가 끝나면 해당 프로세스 관련 내용은 지워버릴 것이므로 공간효율성은 중요하지 않다.
즉 공간효율성보다 시간효율성이 더 중요하다.
그래서 스왑 에어리어에서는 큰 단위를 순차적으로 할당한다. 512키로바이트, 32키로바이트.. 등
RAID
redundant array of independent disks = 디스크 여러 개를 묶어서 사용하는 것이다.
여러 디스크에 데이터를 중복저장하거나 분산저장하는 것이다.
레이드의 장점
디스크 속도 향상
여러 디스크에 데이터가 중복저장되어 있으면 호스크 컴퓨터에서 디스크에 데이터를 읽어오라고 요청했을 때 여러군데서 조금씩 조금씩 읽어올 수 있다. 따라서 속도가 향상된다. 병렬적으로 읽어올 수 있기 때문이다.
이런기법을 인터리빙, 스트라이핑이라고 부른다.
신뢰성 향상
디스크 하나가 고장나더라도 다른 디스크에서 읽어올 수 있다.
중복해서 저장하는 이런 기법을 미러링, 쉐도잉이라고 부른다.
레이드 기법
디스크 내용을 통째로 다른 디스크에 중복저장하는 단순한 레이드가 있다.
parity라는 중복저장의 정도를 낮게 해서 오류가 생겼는지를 알아내고 복구할 수 있을 정도의 중복저장만 하는 기법도 있다. 공간효율성, 릴라이어빌리티, 처리 속도를 높일 수 있다.
'운영체제 > 이화여대 강의' 카테고리의 다른 글
운영체제 스터디 후기 (2) | 2023.12.03 |
---|---|
File System Implementation (0) | 2023.12.03 |
File System (0) | 2023.12.03 |
Virtual Memory (0) | 2023.11.23 |
Memory Management (0) | 2023.11.17 |