이제 파일시스템을 구현을 위한 디스크공간 할당과 디스크의 빈공간을 관리하는 방법에 대해 알아보자
Allocation methods
먼저 file 저장을 위한 디스크 공간 할당 방법에 대해 알아보자
1.Continous allocation
Continous allocation은 말 그대로 하나의 file을 디스크의 연속된 block에 저장하는 할당방법이다.
이 방법을 사용하면 파일에 직접접근이나 순차접근을 하는데 용이하나 새로운 file을 위한 공간 확보가 어렵고
파일의 크기가 크다면 External fragmentaion이 발생할 수 있다. 또한 파일이 할당이후 증가해야 할 경우 추가 공간을 할당하는데 제약이 있을 수 있다.
2. Linked allocation
Linked allocation은 file이 저장되어있는 block 들을 포인터를 이용해 linked list로 연결 하는 방법이다.
디렉토리는 각 file에 대한 첫번째 block의 포인터를 가지고 있으면 된다.
위 방법을 사용하면 비연속적으로 할당하여 외부단편화 현상이 없고 간단하다
하지만, block들의 포인터를 저장하기 위한 별도의 공간이 추가로 필요하고 파일의 특정부분에 직접접근시 블럭들을 타고 들어가야 하기때문에 비효율적이다. 또한 실수로 포인터를 건드린다면 파일자체가 변질되어 신뢰성의 문제도 존재한다.
3. FAT(File Allocation Table)
FAT은 MS-DOS, Windows등에서도 사용되는 방법으로 각 block의 시작 부분에 다음블럭의 번호를 기록하는 방법으로 Linbked Allocation과 유사한 방법이다.
파일의 직접접근 또는 탐색시 용이하다.
4. Indexed allocation
file 이 저장된 block의 정보를 index block에 모아두는 방식으로 직접 접근에는 용이하나 순차적으로 접근하는 경우 다시 index block을 탐색하여 다음위치로 이동해야 하기 때문에 비효율 적이다.
또한 File마다 index block을 유지해야 하기 때문에 Space overhead가 존재하고 index block의 크기에 따라 파일의 최대 크기가 제한된다.
Free Space Management
이제 디스크를 할당하고 남은혹은 삭제후 남은 빈공간의 관리를 알아보도록 하자.
1.Bit Vector
먼저 비트백터 방식이다.
시스템 내의 모든 block들에 대한 사용 여부를 1bit flg로 표시하는 방법으로 간단하고 실용적이나 bit vector 전체를 메모리에 보관해야 하므로 디스크 공간이 큰 대형 시스템의 경우 Bit vector 또한 커져 부적합하다.
2. Linked list
빈 블럭들을 linked list로 연결하는 것이다. 빈공간을 찾는데 개별적으로 블럭들을 접근해야 하므로 비효율적이다.
3.Grouping
빈공간을 linked list로 연결하되 빈공간을 그룹으로 묶어 그룹단위로 연결하는 방식이다. 연속된 빈 block을 찾는데 용이하다.
4.Counting
연속되어 있는 빈 block들중 첫번째 block의 주소와 연속된 bloick의 수를 Table로 유지하는 방법이다. 연속 할당 시스템에는 유리하지만 만약 빈 블록과 할당된 블록이 연속적으로 나오게 되면 그만큼 table의 크기가 커진다는 단점이 있다.
'OS > os 공부' 카테고리의 다른 글
12-2. 디스크 스케쥴링 (0) | 2022.01.27 |
---|---|
12-1. 입출력 시스템 관리 (0) | 2022.01.27 |
11-4. File Protection Mechanism (0) | 2022.01.26 |
11-3. Directory Structure (0) | 2022.01.26 |
11-2. File System overview (0) | 2022.01.25 |