1. 공간 할당 방식(Allocation Methos)
- 연속 할당(Continuous Allocation)
- 한 File을 디스크상의 연속된 공간에 저장
- file이 물리적으로 연속된 공간에 존재하기 때문에 순차접근, 직접접근 모두 효율적으로 가능
- 구현이 간단하고 관리가 쉬움
- 외부 단편화(external fragmentation) 문제가 발생할 수 있음
- 파일의 크기가 변화할 경우를 고려하기 어려움
- 비연속 할당(Non-Continuous Allocation)
- 파일을 연속되지 않은 여러 블록에 나누어 저장
- 연결 할당(Linked Allocation)
- 파일을 구성하는 블록들을 순서대로 linked list 의 형태로 관리
- 구현이 간단하고 외부 단편화가 발생하지 않으며 파일의 크기가 변화해도 문제가 없음
- 포인터를 관리하기 위한 공간이 추가적으로 필요
- 블록이 linked list 형태로 관리되기 때문에 직접 접근이 비효율적
- 저장된 포인터에 문제가 생길경우 파일에 치명적인 문제가 발생
- FAT 포맷이 대표적인 Linked Allocation 방식의 파일시스템
- 색인 할당(Indexed Allocation)
- 파일이 저장된 블록의 위치정보를 index 블록에 저장해두는 방식
- index를 참조하여 원하는 블록에 바로 접근할 수 있기 때문에 직접 접근이 효율적
- 블록 하나에 접근할 때마다 index 블록을 참조해야하기 때문에 순차접근은 비효율적
- 파일마다 index 블록을 유지할 추가공간이 필요
- 파일의 최대 크기가 index블록의 크기에 종속적
- UNIX 등에서 사용
- 파일을 연속되지 않은 여러 블록에 나누어 저장
2. 빈 공간 관리(Free Space Management)
- Bit Vector
- 디스크 내 모든 블록의 사용중 여부를 bit 로 표시 (0: free / 1: allocated)
- 구현이 간단하며 n개의 연속된 빈공간을 탐색하는데 효율적
- bit vector 가 모두 메모리에 적재되어있어야 함 => 대규모 시스템엔 부적합
- 규모가 작은 마이크로 컴퓨터에 적합
- Linked List
- 빈 블록을 linked list 형태로 관리
- 포인터를 관리할 추가 공간을 필요로함 => 공간적으로 비효율적
- n개의 빈 공간을 찾기 위해 n번의 참조가 필요함 => 시간적으로 비효율적
- Grouping
- 몇개의 빈 블록을 그룹으로 묶고 그룹단위로 linked list를 구성하여 관리
- linked list 방식에 비해서 관리해야할 포인터의 갯수나 빈공간 탐색 시간을 많이 줄일 수 있음
- n개의 연속된 빈 블록 탐색이 효율적
- Counting
- 연속된 빈 블록의 첫 번째 주소와 연속된 빈 블록의 갯수를 테이블로 관리
- 빈 블록들이 서로 연속되지 않을수록 테이블의 크기가 늘어나 비효율적일 수 있음
- 연속 할당 기법을 사용하는 시스템에 유리
'CS > 운영체제' 카테고리의 다른 글
#24 디스크 스케줄링(Disk Scheduling) (0) | 2022.02.07 |
---|---|
#23 입출력 시스템(I/O System) (0) | 2022.02.05 |
#21 파일 보호(File Protection) (0) | 2022.02.02 |
#20 디렉토리(Directory) (0) | 2022.01.31 |
#19 파일 시스템(File System) (0) | 2022.01.28 |