Machineboy空
대표적 파일 시스템 - FAT 파일 시스템 , 유닉스 파일 시스템 본문
파일 시스템이란
파일과 디렉터리를 보조기억 장치에 일목요연하게 저장하고, 접근할 수 있도록 하는 운영체제의 내부 프로그램.
파일 시스템이 파일과 디렉터리를 보조기억장치에 할당하고 접근하는 방법을 알아본다.
정말 다양한 파일 시스템이 있는데,
대표적으로 FAT 파일 시스템, 유닉스 파일 시스템을 학습할 것
하나의 컴퓨터에서 여러 파일 시스템을 사용할 수도 있음
파티셔닝(partitioning)과 포매팅(formatting)
이제 막 공장에서 생산되어 한 번도 사용된 적 없는 새 하드 디스크 / SSD는
파티셔닝과 포매팅을 하기 전까지 사용할 수 없다.
즉, 파티셔닝과 포매팅을 해야 파일시스템을 통해 보조기억장치에 할당, 접근할 수 있다.
- 파티셔닝(partitioning) : 저장 장치의 논리적인 영역을 구획하는 작업
- 서랍에 칸막이 설치하고 용도에 맞게 용품들을 정리한다면
- 파티션(partition): 구획된 영역
- 포매팅(formatting): 파일 시스템을 설정하고 어떤 방식으로 파일을 관리할지 결정, 새로운 데이터를 쓸 준비하는 작업
- USB 포매팅 시, 파일 시스템은 포메팅할 때 결정된다.
- 파일 시스템에는 여러 종류가 있고 파티션마다 다른 파일 시스템을 설정할 수도 있다.
- 포매팅까지 완료하여 파일 시스템을 설정했다면 이제 파일과 디렉터리 생성이 가능해진다.
파일 할당 방법
- 포매팅까지 끝난 하드 디스크에 파일을 저장하기
- 운영체제는 파일/디렉터리를 블록 단위로 읽고 쓴다.
- 즉, 하나의 파일이 보조기억장치에 저장될 때에는 여러 블록이 걸쳐 저장된다.
- *하드디스크의 가장 작은 저장단위는 섹터이지만 보통 블록단위로 읽고 쓴다.
- 하나 이상의 섹터를 블록 단위로 묶은 다음 블록 단위로 관리
- 연속 할당
- 정의
- 이름 그대로 보조기억장치 내 연속적인 블록에 파일 할당
- 디렉터리 엔트리
- 연속된 파일에 접근하기 위해 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 된다
- 파일 위치를 추론하기 위해,
- 디렉터리 엔트리: 파일 이름 & 첫 번째 블록 주소 & 블록 단위 길이 명시
- 한계
- 구현이 단순하지만 외부 단편화를 야기할 수 있다.
- 정의
- 불연속 할당 - 연결 할당
- 정의
- 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당
- 파일을 이루는 데이터 블록을 연결 리스트로 관리
- 불연속 할당의 일종: 파일이 여러 블록에 흩어져 저장되어도 무방
- 디렉터리 엔트리
- 디렉터리 엔트리: 파일 이름 & 첫번째 블록 주소 & 블록 단위 길이
- 끝 블록이라는 표시자로서 -1 기록
- 한계
- 외부 단편화를 해결할 수 있지만
- 반드시 첫 번째 블록부터 하나씩 읽어들여야 한다. (= 파일 임의접근 속도가 느리다)
- 오류 발생시(하드 웨어 고장 등이 일어나면, 다음 주소를 알 수 없기 때문에) 해당 블록 이후 블록은 접근이 어렵다.
- 정의
- 불연속 할당 - 색인 할당
- 정의
- 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식
- 파일 내 임의의 위치에 접근하기 용이하다.
- 디렉터리 엔트리
- 파일 이름 & 색인 블록 주소
- 정의
FAT 파일 시스템 (File Allocation Table)
연결 할당 기반의 파일시스템으로 연결 할당의 단점을 보완함.
USB, SD 카드 등의 저용량 장치에서 많이 사용됨.
각 블록에 포함된 다음 블록 주소를 한데 모아 테이블(FAT, file allocation table)로 관리.
FAT가 메모리에 캐시될 경우 느린 임의 접근 속도 개선 가능
폴더 디렉터리가 생성되면 루트 디렉터리 영역 이후로, 줄줄이 공간이 생기게 되는 것
예제)
- 루트 디렉터리 영역 : home이 3번이니까 3번을 읽어보자.
- home 디렉터리 영역(3번) : 민철은 15번이니까 15번을 읽어보자.
- 민철 디렉터리 영역(15번) : a.sh는 9번이니까 9번을 읽어보자.
- FAT : 9 >> 11 >> 13 순으로 읽으면되는 구나.
유닉스 파일 시스템
색인 할당 기반 파일 시스템.
- 색인 블록 == i-node (index-node)
- 파일의 속성 정보와 15개의 블록 주소 저장 가능
- 유닉스 파일 시스템에서 가장 중추적 역할, 유닉스 파일 시스템의 핵심
- i-node만 읽어서 이 파일이 무엇인지 어디 저장되어 있는지 알 수 있다.
유닉스 파일 시스템에서는 각 파일마다 i-node를 가지고 있고 고유한 번호를 가지고 있다.
15개 블록 이상을 차지하는 파일을 저장하는 법 (= 큰 용량의 파일을 저장하는 법)?
예제 )
- 1. 블록 주소 중 12개에는 직접 블록 주소 저장
- 직접 블록: 파일 데이터가 저장된 블록
- 2. 1번으로 충분하지 않다면 13번째 주소에 단일 간접 블록 주소 저장
- 단일 간접 블록: 파일 데이터를 저장한 블록 주소가 저장된 블록
- 3. 2번으로 충분하지 않다면 14번째 주소에 이중 간접 블록 주소 저장
- 이중 간접 블록: 단일 간접 블록들의 주소를 저장하는 블록
- 4. 3번으로 충분하지 않다면 15번째 주소에 삼중 간접 블록 주소 저장
- 삼중 간접 블록: 이중 간접 블록들의 주소를 저장하는 블록
- 여기까지 하면 왠만한 크기의 파일은 다 저장 가능
예제)
- i-node영역 : 루트 디렉터리 영역을 알아내자(항상 고정된 i-node속 위치에 존재)! 1번이네
- 루트 디렉터리 영역 : home이 3번이니까 3번i-node를 읽어보자. 210번이네
- home 디렉터리 영역(210번) : 민철은 8번 I-node번이니까 121번블록이네.
- 민철 디렉터리 영역(121번) : a.sh는 9번 i -node이니까 9번 i - node을 읽어보자.
- 9번 i-node : 98 >> 12 >> 13 순으로 읽으면되는 구나.
NTFS, EXT 파일 시스템 등 공부해보기...
'Computer > CS' 카테고리의 다른 글
[From Nand to Tetris] 모듈 0. The Nand To Tetris journey (0) | 2025.01.14 |
---|---|
프로그래밍을 배운다는 것?과 UML(Unified Modeling Language) (0) | 2024.07.07 |
파일시스템 - 파일과 디렉터리 (0) | 2024.01.21 |
가상메모리④ - 페이지 교체 알고리즘과 프레임 할당 기법, 스래싱(Thrashing) (0) | 2024.01.19 |
가상메모리 ③ - 쓰기 시 복사와 계층적 페이징 (1) | 2024.01.19 |