27.연속할당, 연결할당의 장단점

하드디스크는 poll of free blocks 즉 빈 블록들의 집합이다.

한블록이 1kb이고 파일A 5kb, 파일B 3kb, 파일C 4kb 일때 어느블록에 넣을까?
0~19까지의 블록이 있을때 어떤식으로 배치할 수 있을까??

연속할당

각 파일에 대해 디스크 상의 연속된 블록을 할당
즉 A는 04까지 할당, B는 57 , C는 811 까지 연속적으로 할당하는 방법
60
70년대에 사용되는 방법

장점 : 일고 쓸때 디스크 헤더의 움직임을 최소화 할 수 있다. 이는 빠른 i/o 성능과 직결
동영상, 음악, VOD 등에 적합
sequential access 순차접근이라고 한다.
특정 부분을 바로 읽을 수도 있다 (direct access 직접접근)

단점 : 파일을 지울 경우 문제가 된다. A,C를 지우고 6kb의 데이터를 넣으려고 하면 못넣는다. 외부단편화가 발생!
즉 외부 단편화로 인한 디스크 공간 낭비
이를 방지하기 위해 hole을 모으는 Compaction을 하면 되지만 시간이 오래걸린다.
또한 파일을 생성할 때 파일의 크기를 예측 할 수 없기 때문에 어디에 할당해야 할지 알 수 없다. 또한 파일의 크기가 계속증가할 수 있기때문에 기존의 hole로는 배치가 불가능하게 될 수 있다.

연결할당

연속할당을 개선하기 위해 나온것이 연결할당

각 블록들에 포인터를 달아놓고 이어지는 블록을 가르킨다. 처음 블록 위치는 파일 디렉토리가 갖고 있다. 각 블록은 포인터 저장을 위한 4바이트 또는 이상 소모. 이는 외부단편화를 없앨 수 있다.
디렉토리라는것은 메인메모리에 저장되고 OS에서 관리된다. 파일 이름, 만들어진날짜 등등을 보관한다. 하지만 우리눈엔 안보이고 커널에만 보이는것이 있는데 파일의 위치가 그것이다

단점 : 연속할당의 경우 블록의 위치를 가늠할 수 있지만 연결할당의 경우 중간부터 읽기는 어려움이 있다. 즉 Direct access가 불가하고 동영상의 중간부터 보기가 불가능하다는것이다. 포인터 저장을 위해서 4바이트 이상이 손실한다, 또한 포인터가 끊어질 경우 접근이 불가능하므로 신뢰성이 낮다. 외부단편화는 없지만 데이터들이 흩어져있기 때문에 헤더가 계속 움직여야하기 때문에 io시간이 오래걸린다.

연속할당의 문제(단편화)를 해결했지만 이 또한 문제가 있다.

연결할당을 개선한 FAT 파일 시스템

USB메모리가 주로 FAT32를 쓰는데 뭔지 알아보자
연결할당의 변종으로서 File Allocation Table 파일 시스템이다. MS-DOS, OS/2, Windows 등에서 사용한다,

포인터들을 따로 모아서 포인터 테이블을 디스크 블록에 따로 저장한다. 포인터들만 모인 테이블을 FAT라고 한다. 이를 통해 블록을 읽지 않고 테이블만 읽음으로써 direct access 또한 가능하게 된다. 주기적으로 FAT에 변동사항을 넣어주고 하나의 블록이 깨지더라도 FAT 내용만 살아있다면 나머지를 읽을 수 있다. 즉 신뢰성 향상. FAT가 고장나면 큰일나기 때문에 보통 FAT 카피본을 저장하고 있다. FAT 는 일반적으로 메모리 캐싱

즉 direct access , 신뢰성(FAT 손실 시 복구 위해 이중 저장)을 높였다.
FAT를 얼마나 할당할까? 32비트를 할당하면 2^32 개의 주소를 저장할 수 있다. 이를 FAT32라고 한다.

색인할당.

다음 포스팅에..

Share