파일 시스템
컴퓨터에는 다양한 종류의 파일이 있고, 이들은 하드디스크 같은 제 2저장장치에 보관된다. 보관 과정에 사용자가 개입하게 되면, 다른 파일들이 훼손되거나 저장장치 내부가 어지럽혀질 수 있다. 따라서 운영체제는 파일 관리자를 두어 저장장치의 전체 관리를 맡기는데 이를 파일 시스템이라고 한다.
주요 개념
-
파일 테이블: 파일 시스템에서 파일의 메타데이터와 상태 정보를 관리하는 구조
- 주로 운영체제가 파일과 관련된 정보를 효율적으로 추적하고 접근하기 위해 사용
-
블록: 저장장치에서 파일을 관리하는 단위
- 일반적으로 4KB, 8KB
파일 종류
파일은 운영체제 입장에서 다음과 같이 나뉜다.
- 실행 파일: CPU를 이용해 작업하는 파일로 메모리에 올라가 프로세스가 되는 파일
- 데이터 파일: 실행 파일이 작업하는 데 필요한 데이터를 모아놓은 파일
파일 속성
-
파일 이름:
- 파일의 논리적 이름으로 파일을 식별하기 위해 사용됩니다.
-
파일 크기:
- 파일의 총 크기(바이트 단위).
-
생성/수정/접근 시간:
- 파일이 생성된 시간, 마지막으로 수정된 시간, 마지막으로 접근한 시간.
-
파일의 위치 정보:
- 파일이 디스크에 저장된 블록(또는 클러스터)의 위치.
-
접근 권한:
- 읽기, 쓰기, 실행 권한 등 파일의 접근 제어를 위한 정보.
-
파일 속성 정보:
- 숨김 파일, 시스템 파일, 읽기 전용 여부와 같은 속성.
-
파일 상태:
- 파일이 열려 있는지, 닫혀 있는지 등.
-
파일 소유자 및 그룹:
- 파일을 소유한 사용자 및 그룹 정보. 파일 속성은 파일의 파일 헤더에 기록되며, 파일 헤더는 각 파일의 맨 앞부분에 저장된다.
저장장치 관리 기법
파티션
저장장치를 2개 이상의 묶음으로 나누는 것을 파티션을 나눈다고 하며, 파티션은 논리적으로 구분된 저장장치 영역을 의미한다. 분리된 파티션마다 파일 시스템을 탑재해 논리적으로 구분하는 방식으로 구현된다. 하지만 파티션 확장성 부족과 자원 분배가 비효율적인 문제가 있어 유닉스에서는 여러 개의 파티션을 하나로 통합하는 기능을 제공하는데 이를 마운트라고 한다.
포맷
포맷은 저장장치의 파일 시스템을 초기화하는 작업이다.
조각 모음
조각 모음은 디스크에 저장된 조각난 파일 데이터를 재배치하여 데이터 접근 속도를 최적화하는 과정이다.
장점
- 데이터 접근 속도 향상: 디스크의 읽기/쓰기 속도 증가
- 디스크 수명 연장: 헤드의 이동이 줄어들어 디스크 마모 감소
단점
- 시간 소모: 시간이 오래 걸림
- SSD 비효율: SSD에서 조각 모음을 수행하면 오히려 불필요한 쓰기로 수명이 단축될 수 있음
파일 구조
파일은 하나의 데이터 덩어리다. 파일 구조는 이 덩어리를 어떻게 구성하느냐에 따라 다음과 같이 구분된다.
순차 파일 구조
가장 기본적인 파일구조다. 순차 파일 구조는 파일 내용이 하나의 긴 줄로 늘어선 형태다.
장점
- 단순성: 구현이 쉽고, 데이터가 정렬되어 있어 검색과 처리가 직관적이다.
- 효율적 일괄 처리: 데이터를 순차적으로 처리하는 작업에 적합하다.
단점
- 랜덤 접근 비효율: 특정 데이터를 검색하려면 순차적으로 읽어야 하므로 시간이 오래 걸린다.
- 삽입/삭제의 비효율: 중간에 데이터를 삽입/삭제 하려면 데이터를 재구성해야 한다. 사용 사례
- 거래 내역, 로그 파일 등 순차적으로 추가되고 전체를 자주 처리하는 데이터에 적합하다.
인덱스 파일 구조
순차 파일 구조의 단점을 해결한 파일 구조다. 데이터 파일과 별도로 키 값과 해당 데이터 위치를 저장한 인덱스 파일을 사용한다.
장점
- 빠른 검색: 순차 파일보다 특정 데이터를 빠르게 검색 가능하다.
- 효율적 수정: 데이터를 수정해도 전체 파일을 재구성할 필요 없다.
단점
- 추가 저장 공간 필요: 인덱스 파일을 유지하기 위한 추가 공간이 필요하다.
- 인덱스 유지 비용: 데이터가 변경될 때마다 인덱스 파일을 업데이트해야 한다.
사용 사례
-
데이터베이스처럼 데이터가 많고 특정 키 값으로 자주 검색되는 경우에 적합하다.
직접 파일 구조
저장하려는 데이터의 특정 값에 어떤 관계를 정의해 물리적인 주소로 바로 변환하는 파일 구조다.
장점
- 빠른 검색 속도: 데이터 위치를 직접 계산하여 접근하므로 검색 속도가 매우 빠르다. 단점
- 충돌 문제: 서로 다른 키 값이 동일한 해시 주소로 계산되는 경우 충돌 발생
- 복잡한 구현: 해시 함수 설계와 충돌 처리 메커니즘이 필요
사용 사례
- 빠른 검색이 중요한 캐시 등에 적합하다.
경로
경로는 전체 디렉터리 중 파일이 어디에 있는지를 나타내는 정보다.
절대 경로
파일 시스템의 루트 디렉터리를 기준으로 파일이나 디렉터리의 위치를 나타내는 경로
ex) /home/user/documents/file.txt
상대 경로
현재 있는 위치를 기준으로 파일의 위치를 나타내는 경로
ex) .\file.txt
할당 방식
연결 할당
파일에 속한 데이터를 연결 리스트로 관리하는 방식이다. 파일 테이블에는 시작 블록에 대한 정보만 저장하고, 나머지 데이터는 시작 블록부터 연결하여 저장한다.
장점
- 외부 단편화 방지: 연속적인 물리 배치가 필요 없으므로 빈 블록을 효율적으로 활용 가능하다.
- 동적 파일 크기 증가 가능: 필요한 만큼 블록을 추가할 수 있어 크기 제한이 상대적으로 적다.
- 블록 삽입 및 삭제 용이: 중간에 블록을 추가하거나 삭제해도 다른 블록에 영향을 미치지 않는다.
단점
- 랜덤 접근 어려움: 데이터 블록이 물리적으로 연속되지 않아 순차 접근만 가능하다.
- 추가 저장 공간 필요: 다음 블록의 포인터를 저장해야 하므로, 일부 공간이 낭비된다.
인덱스 할당
이 할당 방식에서 파일 제어 테이블은 인덱스 블록을 연결한다. 인덱스 블록 안에는 실제 데이터의 위치 정보(블록 정보)가 순서대로 보관되어 있다. 유닉스는 인덱스 할당 방식을 사용해 크기에 제한이 없다.
- 인덱스 블록: 데이터 블록들의 주소를 저장한 테이블
- 데이터 블록: 실제 데이터가 저장된 블록들
빈 블록 관리
파일 시스템은 빈 블록의 정보만 모아놓은 빈 공간 리스트를 사용해 빈 공간을 효율적으로 관리한다. 파일이 삭제되면 해당 파일의 데이터 블록들 주소를 빈 공간 리스트에 등록하는 방식이다.
장점
- 디스크 복구 가능
- 시간이 오래 걸리는 공간을 비우는 작업 생략 가능