파일시스템
- file과 directory를 보조기억장치에 저장하고 접근하게 하는 운영체제의 내부 프로그램
- ex.FAT 파일 시스템, 유닉스 파일 시스템
파일 할당
- 파일과 디렉터리를 읽고 쓰는 단위: 블록
- 블록에 사용할 파일을 할당
- 할당 방식
- 연속 할당 (contiguous allocation)
- 불연속 할당
- 연결 할당 (linked allocation)
- 색인 할당 (indexed allocation)
연속 할당 contiguous allocation
- 이름 그대로 보조기억장치 내 연속적인 블록에 파일을 할당
- 파일 접근을 위해서 첫 번째 블록 주소, 파일 길이만 알면 됨
- 단점
- 메모리 할당에서도 배웠듯 외부 단편화를 일으킴 (파일이 삭제됐을 때를 상상해 보삼)
- 외부 단편화: 파일이 삭제됐다고 가정하면, 한 파일을 할당할 수 있는 빈 블록의 총 개수는 충분하지만, 연속적인 블록으로 존재하지 않아서 결국에는 할당이 불가능해짐

- 0번 블록에서 시작하여 길이 2만큼 연속으로 할당된
count
파일
- 14번 블록에서 시작하여 길이 3만큼 연속으로 할당된
tr
파일
연결 할당 linked allocation
- 각 블록에 다음 블록의 주소를 저장하는 방식
- 자료구조의 연결리스트 형식
- 각 블록이 다음 블록을 가리키고 있으므로, 파일이 여러 블록에 흩어져 있을 수 있음
- 대표적인 파일 시스템 → FAT 파일 시스템
- 단점
- 파일의 중간 부분에 접근하고 싶어도, 반드시 첫 번째 블록부터 읽어야 함 → 임의 접근 시 속도 느림
- 오류 발생 시, 오류가 발생한 블록 이후 블록은 접근할 수 없음

색인 할당 indexed allocation
- 파일의 모든 블록 주소를 하나의 블록(index block)에 모아서 관리
- 임의 위치의 파일에 접근하기 쉬움 → index block의 i번째 블록에 접근하면 되므로
- 대표적인 파일 시스템: 유닉스 파일 시스템

FAT 파일 시스템
- 연결 할당(linked allocation) 기반
- 연결 할당의 단점
- 임의 접근 시 속도 느림
- 고장/오류 발생 시 해당 블록 이후 블록은 접근할 수 없음
- 연결 할당의 단점을 보완하기 위해 FAT(File Allocation Table) 활용
- 블록을 나타내는 비트 수를 기반으로 하여 FAT12, FAT16, FAT32 버전 존재
FAT(File Allocation Table)
- 각 블에 저장된 다음 블록의 주소들을 테이블 형태로 관리함, 이 테이블이 FAT
- 파일의 첫 번째 블록만 알면 모든 블록에 접근할 수 있음
- FAT의 일부나 전체가 메모리에 적재됨 → 연결 할당 방식보다 임의 접근 성능이 개선됨

유닉스 파일 시스템
- 색인 할당(indexed allocation) 기반
- 색인 블록은 i-node(index-node)라고 부름
i-node
- i-node는 기본적으로 15개의 블록을 차지하는 파일까지를 가리킴
- 파일 데이터가 저장된 블록을 직접 블록(direct block)이라고 함
Q. 오잉 그럼 블록이 15개 이상이 필요할 때는?
A. 이러한 케이스를 위해 아래와 같은 시스템 구축. 이렇게하면 웬만한 크기의 파일은 모두 표현 가능
1. 12개의 블록에는 직접 블록 주소를 저장
- 직접 블록(direct block): 파일 데이터가 저장된 블록
2. 1번으로 충분하지 않다면, 13번째 블록 주소에는 단일 간접 블록 주소 저장
- 단일 간접 블록(single indirect block): 파일 데이터를 저장한 블록 주소가 저장된 블록
3. 2번으로 충분하지 않다면, 14번째 블록 주소에는 이중 간접 블록 주소 저장
- 이중 간접 블록(double indirect block): 단일 간접 블록들의 주소를 저장하는 블록
4. 3번으로 충분하지 않다면, 15번째 블록에는 삼중 간접 블록 주소 저장
- 삼중 간접 블록(triple indirect block): 이중 간접 블록들의 주소가 저장된 블록

저널링 파일 시스템
- 파일 시스템 업데이트 과정 중 시스템 크래시가 일어난다면?
- 데이터가 유효하지 않은 상태가 될 수 있음
- 이를 해결하기 위한 방법 → 저널링
- 저널링: 작업 로그를 통해 시스템 크래시 발생 시 빠르게 복구하기 위한 기법
- 수행 방식
- 작업 직전 파티션의 로그 영역에 작업에 대한 로그 남김
- 작업 수행
- 작업이 끝나면 로그 삭제
- 시스템 크래시가 발생하여 다시 부팅해야 할 때, 파일 시스템 전체를 검사하지 않고 로그 영역에 남긴 로그만 검사 → 빠르게 복구 가능
마운트
-
한 저장 장치의 파일 시스템에서 다른 저장 장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입시키는 것
-
ex. USB 메모리의 파일 시스템을 컴퓨터의 파일 시스템에 마운트하면, 컴퓨터는 USB의 파일 시스템에 접근 가능!
-
보통 mount
명령어로 간편하게 마운트 가능
Reference