지난 시간까지 파일과 디렉터리에 관한 전반적인 내용을 다뤘다. 
파일과 파일시스템, 파일에 대한 정보를 가지고 있는 파일 디스크립터, 파일의 구조, 디렉터리의 구조에 대해서 살펴봤는데 이번시간에는 디스크 공간 할당 방법에 대해서 살펴보자.

디스크 공간 할당이란건 뭐냐면 파일을 효율적으로 저장하고 사용하기 위해 파일을 기억공간에 어떻게 할당할 것인가를 결정하는 방법이야. 
파일을 디스크 공간에 할당하는 방법에는 연속 할당 방법과 불연속 할당 방법이 있어. (불연속 할당 방법에는 섹터 단위 할당과 블록 단위 할당이 있는데 지금부터 하나씩 설명해줄께 ㅋㅋ)


연속 할당(Contiguous Allocation)은 파일을 디스크의 연속된 기억공간에 할당하는 방법으로, 생성되는 파일 크기만큼의 공간이 있어야 해.
항상 비슷하지 않아?? 저장장소에 저장시키는 방법 ㅋㅋ 연속, 불연속 ㅋㅋ 연속 할당의 특징은 아래와 같아.

- 논리적으로 연속된 레코드들이 물리적으로 인접한 공간에 저장되기 때문에 접근 시간이 빠르다.
- 디렉터리는 파일의 시작 주소와 길이에 대한 정보만 가지고 있으므로 디렉터리가 단순하고, 관리 및 구현이 용이하다.
- 파일 크기에 알맞은 연속 공간이 없을 경우 파일이 생성되지 않는다.
- 파일의 생성과 삭제가 반복되면서 단편화가 발생한다.
- 단편화를 줄이기 위해 재배치에 의한 주기적인 압축(Compaction)이 필요하다.
- 파일의 크기가 시간에 따라 변경될 경우 구현하기가 어렵다.

                                                  <연속 할당 Contiguous Allocation>

불연속할당(Non-Contiguous Allocation)은 파일의 크기가 변경될 경우 구현이 어려운 연속 할당의 단점을 보완하기 위한 것이야. 이것은 디스크 공간을 일정 단위로 나누어 할당하는 기법이지.ㅋㅋ

불연속 할당에는 섹터 단위 할당과 블록 단위 할당 방법이 있어.
 
1) 섹터 단위 할당

- 하나의 파일이 디스크의 섹터 단위로 분산되어 할당되는 방법으로, 하나의 파일에 속하는 섹터들이 연결 리스트(Linked List)로 구성되어 있다. 
- 하나의 파일에 속하는 각각의 섹터는 연결을 위해 다음 내용이 있는 곳의 포인터를 가지고 있다.
- 디렉터리는 파일의 시작과 마지막 주소에 대한 정보만 가지고 있다.
- 섹터 단위로 저장되므로 디스크의 단편화가 발생되지 않고, 디스크 압축이 불필요하다.
- 파일 생성 시 파일 크기를 알 필요가 없으며, 파일 크기만큼의 연속된 공간이 없어도 저장이 가능하다.
- 레코드를 검색할 경우 파일이 속한 레코드를 순차적으로 검색해야 하므로 탐색 시간이 오래 걸리고, 직접 접근이 불가능하다. ( 이건 단점)
- 각 섹터의 포인터가 차지하는 공간만큼 실제 데이터가 저장될 공간이 감소한다.


2) 블록 단위 할당

블록 단위 할당은 하나의 파일이 연속된 여러 개의 섹터를 묶은 블록 단위로 할당되는 방법이며 블록 체인 할당, 색인 블록 체인 할당, 블록 지향 파일 사상 기법이 있다.

가) 블록 체인 기법
 
- 블록 체인 기법은 섹터 단위 할당 기법과 비슷하나 할당 단위를 블록 단위로 구성하는 기법이다.
- 하나의 블록은 여러 개의 섹터로 구성되어 있다.
- 디렉터리는 파일의 첫 번째 블록을 가리키는 포인터를 가지고 있다.
- 하나의 블록은 데이터와 다음 블록을 가리키는 포인터로 구성되어 있다.
- 삽입과 삭제 시 포인터만 수정하면 되므로 삽입, 삭제가 간단하다.
- 순차적으로 탐색해야 되므로 속도가 느리다.(단점)

나) 색인(인덱스) 블록 체인 기법

- 색인 블록 체인 기법은 파일마다 색인 블록을 두고, 파일이 할당된 블록의 모든 포인터를 이 색인 블록에 모아 둠으로써 직접 접근을 가능하게 한 방법이다.
- 색인 블록 하나로 파일을 전부 나타낼 수 없는 경우 여러 개의 연속된 색인 블록을 서로 링크하여 사용할 수 있다.
- 디렉터리는 파일의 색인 블록에 대한 포인터를 가지고 있다.
- 색인 블록의 포인터를 사용하여 직접 접근이 가능하며, 탐색 시간이 빠르다.
- 삽입 시 색인 블록을 재구성해야 하고, 색인 블록이 차지하는 만큼의 기억장치 낭비가 발생한다.(단점)

 
다) 블록 지향 파일 사상 기법

- 블록 지향 파일 사상 기법은 포인터 대신 파일 할당 테이블(FAT, File Allocation Table)에 있는 블록 번호를 사용하는 기법이다.
- 파일 할당 테이블에는 각 블록에 해당하는 항목이 있고, 각 항목은 블록 번호에 의해 색인된다. 
- 블록 번호에 의해 색인된 테이블의 각 항복은 다음 블록의 블록 번호를 가진다. 
- 디스크 구조의 특성상 블록 번호는 실제 기억공간의 주소로 쉽게 변환할 수 있다.
- 데이터의 삽입, 삭제가 용이하다.
- 디렉터리는 파일 할당 테이블의 시작 위치를 가지고 있다.



출처

http://wingsofgod.tistory.com/190

Posted by cyj4369
,