파일 시스템은 3가지 요구 사항을 만족
1. 많은 양의 정보를 저장
2. 사용 중에 정보의 손실이 발생하지 않아야 한다
3. 여러 프로세스가 동시에 파일에 접근 가능함 : 파일의 무결성 보장
파일의 구성 및 접근
파일 유형
정규 파일(regular file), 디렉토리(directory), 문자 특수 파일(charater special file), 블록 특수 파일(block special file)
파일 속성
- 각 파일의 생성 및 변경 날짜, 파일 크기, 파일 소유자 등의 정보를 가진다
- 커널 내에서 모든 파일의 정보를 관리한다
문자 special file: 문자 단위 데이터 처리를 하는 IO 장치를 파일처럼 사용 가능
블록 special file: 블록 단위 데이터 처리를 하는 IO 장치를 파일처럼 사용 가능
파일 구현
(1) 연속적 할당 (contiguous allocation)
보조기억장치 내의 연속된(이웃한) 공간에 블록 할당
장점: 구현이 간단하고 필요한 파일을 읽는데 연산이 줄어들어 성능이 우수하다
단점: 연속된 큰 공간이 필요하다
(2)연결 리스트 할당 (linked list allocation)
보조기억장치 내에 파일 블록들을 링크드 리스트로 연결하여 할당
장점: 공간 사용 효율이 좋다
단점: link 정보의 파손으로 읽을 수 없는 경우 발생 (파일 시스템 신뢰성이 취약해짐)
연속할당 방식에 비하여 성능이 느리다
(3) 색인(index)을 이용한 연결 리스트 할당
- 링크 정보를 모아서 index table 형식으로 관리
- 주기억장치에 load하여 사용 가능
- MS-DOS에서 사용
장점: 필요한 자료의 접근에 대한 디스크(IO연산)이 불필요 (성능 우수)
단점: 메모리에 색인 정보의상주로 인해 파일 시스템 신뢰성이 취약해질 수 있다
(4) I-node (Index-Node)
(1), (2), (3) 방식을 통합하여 사용하는 방식
UNIX 파일 시스템에서 사용
큰 파일의 경우 간접 블록(single, double, triple)을 이용
디스크 공간 관리
블록(block)
블록은 일정한 크기로 보조기억장치를 나눈 단위를 말한다 일반적인 커널(최근 운영체제)의 경우 블록의 크기는 512바이트에서 32KB 크기로 사용
저장장치와 주기억장치 간에는 블록 단위로 데이터 이동이 발생
블록의 크기는 성능을 좌우하는 중요한 요소이다
블록 크기(block size)
작은 크기 블록
장점: fragment가 줄어듬
단점: 블록을 읽어들이는데 소요시간이 길어짐
큰 크기 블록
장점: 블록을 읽어들이는데 소요시간이 짧아짐(IO 연산 횟수가 줄어들기 때문에)
단점: 낭비되는 공간이 늘어남
커널 내에서 블록 크기는 일반적으로 512바이트에서 32KB 정도 크기이다. 커널 내에서 블록 크기는 클수록 좋다(입출력 연산 횟수를 줄이므로)
블록 크기를 너무 크게 할 경우는 낭비되는 공간이 많이 발생한다
블록 크기를 너무 작게하면 보조기억장치에서 주기억장치로 읽어들이는 시간이 많이 소요된다
공간 낭비는 줄어든다
블록 관리 방법
일반적으로 블록을 관리하는 방법으로 linked list 방식을 사용한다
디스크 할당량(disk quotas)
사용자들에 대한 디스크 사용량을 일정 크기로 제한
버퍼 관리 기법
write-through
버퍼 캐쉬에 변경된 데이터가 발생하면 즉시에 보조 기억 장치에 쓰기를 하는 방법
단점: 성능이 느리다 (IO 연산이 많이 일어나기 때문에)
write-back(delayed-write)
버퍼 캐쉬의 변경된 데이터를 일정한 시간이 지난 후에 보조기억장치로 쓰기를 하는 기법
장점: 성능이 우수하다, IO 연산의 수가 줄어듦
단점: 전원 공급이 차단되면 데이터 소실 (파일 시스템 신뢰성이 저하)
(휘발성 : 전기 공급이 차단되면 데이터가 소실)