파일 관리자가 파일 테이블을 사용해 파일을 관리
사용자가 특정 파일에 접근하려면 파일 관리자에게서 접근 권한(키)를 획득해야함
파일 시스템의 기능
블록: 저장장치에서 사용하는 가장 작은 단위, 한 블록에 주소 하나 할당.
여러개의 섹터로 구성, 블록의 크기는 시스템마다 다름
블록 크기 작을 때: 내부 단편화 현상 줄어듬(효율적), 파일이 여러 블록이 됨(속도 느려짐)
큰 파일 多 -> 블록 크기를 크게 잡기
파일 헤더
파일테이블에서 관리
일반적인 내용(파일 이름, 종류, 크기, 시간 , 접근 권한 등)
파일이 몇 번째 블록에 있는지에 대한 정보
고유 헤더
데이터 파일에는 응용 프로그램이 필요로 하는 고유 헤더가 따로 달려있음
(파일 버전 번호, 크기, 특수 정보 등)
순차 파일 구조
파일 내용이 하나의 긴 줄로 늘어선 형태
- 장점
순서대로 기록 -> 저장공간에 낭비되는 부분 없음
순서대로 데이터를 읽거나 저장할 때 빠르게 처리
- 단점
새로운 데이터를 삽입/삭제 시 오래 걸림
직접 접근이 어려움(앞에서부터 순서대로), 데이터 검색에 부적합
인덱스 파일 구조
순차파일 구조 + 인덱스테이블 => 순차 접근 & 직접 접근 가능
- 저장-> 순차파일구조
- 접근->인덱스 테이블
직접 파일 구조
저장하려는 데이터의 특정값에 어떤 관계를 정의하여 물리 주소로 바로 변환
특정 함수(해시 함수)를 이용해 직접 접근 가능
-장점
해시함수 -> 데이터 접근 빠름
-단점
전체 데이터가 고르게 저장되는 해시 함수를 찾기 어려움
해시함수 계산이 복잡할 수도 있다
저장공간 낭비 문제
관련있는 파일을 하나로 모아 놓은 곳
루트 디렉터리: 최상위 디렉터리
일반 파일 -> 데이터 담김
디렉터리 -> 파일정보 담김 (디렉터리 이름, 만든 시간, 접근 권한 등)
파일이 전체 디렉터리 중 어디에 있는지
서로 다른 디렉터리에 같은 이름의 파일 있을 수 있음
유닉스에서 여러 개의 파티션을 통합하는 명령어
여러 개의 데이터 파일 그룹을 하나인 것처럼 사용
리눅스는 하드 드라이브, 시디롬, USB 외의 물리적인 장치 파일 시스템으로 인식되어야 사용할 수 있다. 이러한 하드웨어 장치에 접근하기 위해서 특정한 위치에 연결해줘야 하는데 이러한 과정을 마운트라고 한다.
연속 할당 방식
연속적으로 배열
저장하거나 삭제하면 빈공간 생김 -> 맞는 공간 없으면 연속 할당 불가 -> 실제 사용X
불연속 할당 방식
빈 블록에 데이터 분산 저장 -> 정보를 파일 sys가 관리
연결 할당(연결 리스트), 인덱스 할당(인덱스)
연결 리스트로 관리
파일 테이블 -> 시작 블록 정보만
윈도우 FAT
인덱스 블록: 실제 데이터의 위치에 관한 정보를 순서대로 저장
테이블이 꽉 참 -> 간접 인덱스 블록(인덱스 블록 연결) -> 테이블 무한 확장 가능
유닉스 I-node
유닉스 파일 시스템의 접근 패턴