디스크에는 여러개의 원판들이 존재하고 원판의 트랙에 데이터를 읽고 쓸 수 있다.
트랙은 여러개의 섹터로 구분된다. 섹터에 데이터를 저장하고 읽고 쓰는데, 그 동작을 디스크 헤드가 움직여서 수행하게 된다.
디스크 내부에서는 특정 원판 - 특정 트랙 - 특정 섹터에 데이터를 저장.
디스크 외부(컴퓨터 호스트)에서는 디스크 상의 위치를 이야기할 때, 논리적인 블록번호를 통해 접근한다.
각 파티셔닝된 논리적 디스크에 파일 시스템을 설치하는 것을 의미.
전원을 켜게 되면, CPU는 ROM의 0번 섹터의 기계어를 하나씩 실행시키게 됨. 일반적인 RAM은 휘발성이라 전원이 나가면 데이터가 사라짐. 따라서 전원이 나가도 데이터가 유지되는 ROM이라는 메모리에서 부트로더를 실행하게 되는것임.
헤드가 움직이는 것이 Access time의 대부분을 차지함.
Seek time을 최소화하는 것이 디스크 스케줄링의 목표.
-> Seek time ~= seek distance
디스크 스케줄링은 엘리베이터 스케줄링과 매우 유사.
가장 먼저 온 것을 먼저 처리하는 것.
-> 비효울적.
디스크 헤드의 현재위치로부터 seek time이 가장 짧은 위치를 가장 먼저 서비스하는 알고리즘.
starvation 문제가 발생할 수 있음.
엘리베이터 스케줄링과 동일.
헤드는 디스크의 한 방향을 가면서, 이동하며 가는 길목에 있는 모든 요청 처리.
섹터 위치에 따라 대기시간의 편차가 존재한다.
헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하며 길목에 있는 모든 요청 처리.
다른쪽 끝에 도달하면 요청을 처리하지 않고 곧바로 출발점으로 다시 이동.
SCAN보다 균일한 대기시간을 제공.
SCAN과 동일하나, 한 방향으로 움직이기 시작하면 큐에 새로 들어오는 요청은 다음 턴에 서비스하게 됨.
한쪽 방향으로 이동할 때, 한쪽 끝까지 가는 것이 아니라 큐에 존재하는 최대/최소 번호까지만 서비스를 하고 방향을 바꾸는 방식.
일반적으로 SCAN, C-SCAN 및 LOOK, C-LOOK이 디스크 입출력이 많은 시스템에서 효율적.
파일의 할당 방법에 따라 디스크 요청이 영향을 받음
디스크 스케줄링 알고리즘은 필요한 경우 다른 알고리즘으로 쉽게 교체할 수 있도록 OS와 별도의 모듈로 작성되는 것이 바람직함.
DISK -> file system / swap space 용도.
스왑공간은 공간 효율성 보다는 속도 효율성이 우선시되고, 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조되기 때문에 블록의 크기 및 저장 방식이 일반 파일시스템과는 다르다.
"Redundant Array of Independent Disks"
독립적인 디스크 여러 개를 연속하여 사용하는 방식.
신뢰성 향상
동일 정보를 여러 디스크에 중복 저장(이를 mirroring 또는 shadowing 이라고 함)
하나의 디스크가 고장 시 다른 디스크에서 읽어옴.
단순한 중복 저장이 아니라 일부 디스크에 parity(일종의 축약 정보)를 저장하여 공간의 효율성을 높일 수 있다.
디스크 처리 속도 향상
여러 디스크에 블록의 내용을 분산 저장
병렬적으로 읽어오므로써 속도를 향상시킴. (interleaving, striping)