[운영체제] 15-2 파일 시스템
이 글을 혼자 공부하는 컴퓨터구조 + 운영체제 (한빛미디어) 책을 읽고 혼자 공부한 내용입니다.
잘못 이해한 부분이 있을 수 있고, 문제가 있는 부분 댓글로 알려주시면 수정하겠습니다.
파티셔닝과 포매팅
파티셔닝은 저장 장치의 논리적인 영역을 구획하는 작업을 의미
서랍의 칸을 나누는 행위가 파티셔닝, 이 나누어진 영역 하나하나를 파티션
포매팅이란 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고,
새로운 데이터를 쓸 준비를 하는 작업
파일 할당 방법
운영체제는 파일과 디렉터리를 블록 단위로 읽고 씀
즉, 하나의 파일이 보조기억장치에 저장될 때는 하나 이상의 블록에 걸쳐 저장
(섹터로 관리하기에는 개수가 너무 많고 크기도 작기 때문)
연속 할당
가장 단순한 방식, 이름 그대로 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식
연속으로 할당된 파일에 접근하기 위해서는 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 됨
디렉터리 엔트리에 파일 이름, 첫 번째 블록 주소, 블록 단위의 길이를 명서
구현이 단순하지만, 외부 단편화를 야기한다는 치명적인 문제가 있음
연결 할당
각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식
파일을 이루는 데이터를 연결 리스트로 관리
불연속 할당의 일종이기에 파일이 여러 블록에 흩어져 저장되어도 무방
디렉터리 엔트리에 연속 할당과 마찬가지로 파일 이름과 함께 첫 번째 주소 블록 주소와 블록 단위의 길이를 명시
외부 단편화 문제를 해결하지만 이 또한 단점 존재
1. 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야함 -> 임의 접근 속도가 매우 느림
2. 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근불가
색인 할당
파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식
파일 내 임의 위치에 접근하기 쉬움
디렉터리 엔트리에 파일 이름과 더불어 색인 블록 주소를 명시
파일 시스템 살펴보기
FAT 파일 시스템
파일 할당 테이블(FAT : File Allocation Table)은 블록의 주소들을 한데 모아 테이블 형태로 관리
FAT를 이용하는 파일 시스템이 FAT 파일 시스템
FAT는 하드 디스크 파티션의 시작 부분에 있지만, 시행하는 도중 FAT가 메모리에 캐시될 수 있음
그러면 기존보다 블록을 찾는 속도가 매우 빨라짐
유닉스 파일 시스템
색인 할당 기반, 유닉스에서는 이 색인 블록을 i-node라고 함
i-node에는 파일 속성 정보와 열다섯 개의 블록 주소 저장
파일마다 이러한 i-node가 있고, i-node마다 번호가 부여되어 있음
그리고 이 i-node들은 파티션 내 특정 영역에 모여 있음
i-node 영역에 i-node들어 있고, 데이터 영역에 디렉터리와 파일이 있음
문제는 i-node크기는 유한함 (15개) 하지만 그 이상의 파일이 존재함 (20개.. 30개..)
이 경우를 해결하는 방법을 알아보자
1. 블록 주소 중 열두 개에는 직접 블록 주소를 저장
파일 데이터가 저장된 블록이 직접 블록
i-node가 가리킬 수 있는 열다섯 개의 블록 주소 중 처음 열두 개에는 파일 데이터가 저장된 블록 주소가 직접적으로 명시
2. 1의 내용으로 충분하지 않다면 열세 번째 주소에 단일 간접 블록 주소 저장
단일 간접 블록이란 파일 데이터를 저장한 블록 주소가 저장된 블록
3. 2의 내용으로 충분하지 않다면 열네 번째 주소에 이중 간접 블록 주소를 저장
이중 간접 블록이란 데이터 블록 주소를 저장하는 블록 주소가 저장된 블록을 의미
단일 간접 블록들의 주소를 저장하는 블록이 이중 간접 블록
4. 3의 내용으로 충분하지 않다면 열다섯 번째 주소에 삼중 간접 블록 주소를 저장
삼중 간접 블록이란 이중 간접 블록 주소가 저장된 블록
이렇게 삼중 간접 블록까지 이용한다면 웬만한 크기의 파일은 모두 표현할 수 있다