파일 시스템은 무엇일까?
파일 할당 방법
--
운영체제는 파일과 디렉터리를 "블록(block)" 단위로 읽고 쓴다.
즉, 하나의 파일이 보조기억장치에 저장될 때는 하나 이상의 블록에 걸쳐 저장된다.
하드 디스크에서 사용하는 가장 작은 저장 단위는 "섹터"이지만,
운영체제는 하나 이상의 섹터를 블록이라는 단위로 묶은 다음
블록 단위로 파일과 디렉터리를 관리한다.
(파일 시스템이 모든 섹터를 관리하기에는 개수가 너무 많고 크기도 작기 때문이다.)
위 그림처럼
하드 디스크에는 여러 블록들이 존재하고
블록 안에 적힌 번호는 블록의 위치를 식별하는 주소라고 생각하면 된다.
파일을 보조기억장치에 할당하는 방법 종류
오늘날까지 사용되는 방식은 "불연속 할당"이다.
연속 할당 (Contiguous Allocation)
가장 단순한 방법으로
보조기억장치에서 연속적인 블록에 파일을 할당하는 방식이다.
연속으로 할당된 파일에 접근하기 위해서는
해당 파일의 처음 시작 위치(주소)와 블록 단위의 길이만 알면 된다.
연속적으로 저장하기 때문에 "외부 단편화"가 발생한다는 큰 문제가 존재한다.
연결 할당 (Linked Allocation)
연속 할당의 문제(외부 단편화)를 해결할 수 있는 방식으로
각 블록 일부에 다음 블록을 가리키는 주소를 저장하여 떨어져 있는 블록끼리 연결하는 방식이다.
마지막 블록에는 다음 블록 주소를 특별한 표시자로 표기한다. (위 그림에서는 -1로 표기)
"외부 단편화" 문제를 해결했지만 또 다른 단점이 존재한다.
1. 반드시 파일의 첫 번째 블록부터 접근하여 차례대로 읽어야 하므로
파일 내에서 임의의 위치에 접근하는 속도가 매우 느리다. (비효율적)
2. 하나의 블록에 파일 데이터와 추가로 다음 블록의 주소가 포함되어 있는 형태로 연결되어 있다 보니
하드웨어의 고장이나 오류로 인해 블록 하나라도 문제가 발생하면 해당 블록 이후의 블록에는 접근이 불가능
색인 할당 (Indexed Allocation)
각 블록에 다음 블록의 주소를 저장하는 연결 할당과 달리
파일의 모든 블록 주소를 "색인 블록(index block)"이라는 하나의 블록에 모아 관리하는 방식이다.
연결 할당과는 달리
파일 내에 임의의 위치에 접근하기 쉽다.
파일의 n번째 데이터 블록에 접근하고 싶다면
색인 블록에서 n번째 항목이 가리키는 블록에 접근하면 된다.
색인 할당을 기반으로 만든 파일 시스템이 "유닉스 파일 시스템"이다.
--
파일 시스템 (File System)
--
파일 시스템은
운영체제에서 데이터를 하드 디스크에 저장하고 관리하는 방식으로
파일과 디렉터리를 관리하는 운영체제 내부 프로그램이다.
(파일 시스템은 다양한 종류가 있다.)
파일 시스템의 주요 기능
- 데이터 저장 : 데이터를 파일 형태로 저장하고 적절한 위치에 저장(배치)
- 데이터 관리 : 사용자가 파일을 효율적으로 찾을 수 있도록 디렉토리를 이용하여 계층 구조로 관리
- 데이터 보호 : 파일 권한, 접근 제어 등을 통해 파일에 대한 읽기, 쓰기, 실행 권한을 관리
- 공간 관리 : 파일을 효율적으로 배치(저장)하여 저장 공간을 최적으로 활용
- 경로 관리 : 각 파일에 이름과 경로를 부여하여 사용자가 쉽게 식별 및 접근
대표적인 파일 시스템 종류
- FAT 파일 시스템
- 유닉스 파일 시스템
FAT 파일 시스템 (FAT, File Allocation Table)
초기의 파일 시스템으로
주로 USB, SD카드 등의 저용량(휴대용) 저장 장치에서 사용하는 파일 시스템이다.
연결 할당의 단점을 보완한 파일 시스템으로
각 블록에 다음 블록 주소를 보관하지 않고
따로 다음 블록 주소들을 모아서 관리하는 "파일 할당 테이블(FAT, File Allocation Table)"를 이용하는 방식이다.
유닉스 파일 시스템
유닉스 계열 운영체제에서 사용(데이터 저장 및 관리)하는 파일 시스템이다.
색인 할당 기반의 파일 시스템으로
유닉스 파일 시스템에서는 색인 블록을 "i-node(index-node)"라고 부른다.
i-node에는 파일 속정 정보와 15개의 블록 주소를 저장할 수 있다.
파일 속성에는
파일 크기, 생성 시간, 마지막 접근 시간, 마지막 수정 시간, 소유자 등의 정보가 있다.
--
'CS > 운영체제' 카테고리의 다른 글
[메모리 관리] 요구 페이징의 페이지, 프레임 관리 기법 (+ 페이지 교체, 프레임 할당) (0) | 2024.10.03 |
---|---|
[메모리 관리] 페이징을 통한 가상 메모리 관리 (+ 연속 메모리 문제점 해결) (0) | 2024.10.02 |
[메모리 관리] 연속 메모리 할당 (+ 스와핑, 외부 단편화) (0) | 2024.10.01 |
교착 상태 (0) | 2024.09.30 |
프로세스 동기화 (0) | 2024.09.29 |