이 글은 개인적으로 공부한 내용을 정리한 것이므로 틀린 내용이 포함되어 있을 수 있습니다.
파일을 사용할 때 운영체제로부터 부여받은 접근 권한을 파일 디스크립터라고 한다.
파일 구조 중 처음부터 순서대로 접근하는 구조는 순차 파일 구조이다. 파일 내용이 하나의 긴 줄로 늘어선 형태로 카세프테이프가 대표적인 예이다.
파일 구조 중 순차 접근과 직접 접근이 모두 가능한 구조는 인덱스 파일 구조로, 현대의 파일 시스템이다. 이 구조는 플로피디스크, CD-ROM, 하드디스크 등 디스크를 이용한 저장장치가 보급되면서 개발되었다.
저장하려는 데이터의 특정 값에 어떤 관계를 정의하여 물리적인 주소로 바로 변환하는 파일 구조는 직접 파일 구조이다.
직접 파일 구조에서 데이터의 변환에 사용하는 함수는 해시 함수이다.
파일이 전체 디렉터리 가운데 어느 위치에 있는지 나타내는 정보는 경로이다.
루트 디렉터리를 기준으로 정하는 경로를 절대 경로라고 하며, 현재 디렉터리를 기준으로 정하는 경로를 상대 경로라고 한다.
여러 개로 나뉜 파티션을 하나로 묶는 명령어는 마운트이다.
디스크 할당 방식에서 파일에 속한 데이터를 연결 리스트로 관리하는 방식을 연결 할당이라고 한다.
윈도우의 FAT은 연결 할당 방식을 사용한다.
디스크 할당 방식에서 데이터의 인덱스를 담고 있는 인덱스 블록끼리 연결하여 최대 할당 크기의 제약이 없는 방식은 인덱스 할당 방식이다.
유닉스의 I-node는 인덱스 할당 방식을 사용한다.
디스크의 빈 공간을 관리하기 위해 사용하는 자료 구조는 빈 공간 리스트이다.
빈 공간 리스트에서 방금 지워진 파일은 리스트에 있던 블록 중 맨 앞에 있는 블록에 할당한다.
파일 내용이 하나의 긴 줄로 늘어선 형태로 저장되어 있어 순차 접근만 가능한 구조이다.
장점은 모든 데이터가 순서대로 기록되기 때문에 저장 공간에 낭비되는 부분이 없고, 구조가 단순하여 테이프는 물론 플로피디스크나 메모리를 이용한 저장장치에도 적용할 수 있다. 또한 순서대로 데이터를 읽거나 저장할 때 매우 빠르게 처리된다.
단점은 새로운 데이터를 삽입하거나 삭제할 때 시간이 많이 걸리며, 특정 데이터로 이동할 때 직접 접근이 어렵기 때문에 앞에서부터 순서대로 움직여야 한다. 따라서 순차 파일 구조는 데이터 검색에 적당하지 않다.
순차 파일 구조에 인덱스 테이블을 추가하여 순차 접근과 직접 접근이 가능한 구조이다.
장점은 인덱스 테이블을 여러 개 만들면 다양한 접근이 가능하다는 것이다.
저장하려는 데이터의 특정 값에 어떤 관계를 정의하여 물리적인 주소로 바로 변환하는 구조이다.
장점은 해시 함수를 이용하여 주소를 변환하기 때문에 데이터 접근이 매우 빠르다는 것이다.
단점은 직접 파일 구조를 제대로 작성하려면 해시 함수의 선정이 매우 중요한데, 전체 데이터가 고르게 저장될 수 있는 해시 함수를 찾아야 한다는 것이다. 또한 해시 함수를 잘 찾았다고 하더라도 저장 공간이 낭비되는 문제도 있다.
파일이 전체 디렉터리 중 어디에 있는지를 나타내는 정보이다.
루트 디렉터리를 기준으로 파일의 위치를 나타내는 방식을 절대 경로라고 하는데, 이는 루트 디렉터리에서 시작하는 절대적인 위치를 의미한다.
이와 달리 현재 있는 위치를 기준으로 파일의 위치를 표시할 수도 있는데 이를 상대 경로라고 한다. 절대 경로와 달리 문자로 시작하며 언제나 자신이 위치한 디렉터리를 기준으로 한다.
연속 할당은 파일을 구성하는 데이터를 디스크상에 연속적으로 배열하는 간단한 방식이다.
불연속 할당은 비어 있는 블록에 데이터를 분산하여 저장하고 이에 관한 정보를 파일 시스템이 관리하는 방식이다. 연결 리스트를 이용한 연결 할당과 인덱스를 이용한 인덱스 할당이 있다.
디스크의 내부 단편화를 줄이고 빈 공간을 효율적으로 관리하기 위해 파일 시스템은 빈 블록의 정보만 모아놓은 빈 공간 리스트를 유지한다. 디스크에 빈 블록이 생기면 빈 공간 리스트에 추가되고, 빈 공간 리스트를 보고 새로운 블록을 할당할 때는 리스트에 먼저 들어온 블록부터 할당한다.
📌 조성호, 『쉽게 배우는 운영체제』, 한빛아카데미(2018)