보조 기억장치에 저장된 관련 정보의 집합
구성 : 이름, 실행하기 위한 정보, 부가 정보(속성attribute or 메타데이터metadata)
파일속성
파일 유형: 운영체제가 인식하는 파일 종류. 확장자를 이용해 파일 유형을 알린다.
기타 등등
파일들을 관리하기 위해 디렉터리를 이용(윈도우 = 폴더,folder).
최상위는 루트 디렉터리(root directory)라고 부르고 슬래시(/)로 표현한다. 그 아래에 여러 서브 디렉터리(자식 디렉터리)가 있을 수 있고 서브 디렉터리는 또 다른 서브 디렉터리를 가질 수 있다.
같은 디렉터리에는 동일한 이름의 파일이 존재할 수 없지만, 서로 다른 디렉터리에는 동일한 이름의 파일이 존재 할수 있다.
유닉스, 리눅스, masOS 등의 운영체제에서 슬래시 기호는 루트 디렉터리를 표시할 뿐만 아니라 디렉터리와 디렉터리 사이의 구분자로도 사용한다.
많은 운영체제에서는 디렉터리를 '특별한 형태의 파일' 로 간주한다. 파일이 내부에 해당 파일과 관련된 정보를 담고 있다면, 디렉터리는 내부에 해당 디렉터리에 감겨 있는 대상과 관련된 정보를 담고 있다. 그리고 이 정보는 보통 테이블 형태로 구성되어 보조 기억장치에 저장된다.
파티셔닝(partitioning): 저장 장치의 논리적인 영역을 구획하는 작업. 그리고 이렇게 나누어진 영역 하나하나를 파티션이라고 한다.
포매팅(formatting): 파일 시스템을 설정해 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 준비를 하는 작업.
하드 디스크의 가장 작은 저장 단위는 섹터이지만, 운영체제는 하나 이상의 섹터를 블록(block)이라는 단위로 묶은 뒤 블록 단위로 파일과 디렉터리를 관리한다.
파일 할당
└─ 연속 할당
└─ 불연속 할당
└─ 연결 할당
└─ 색인 할당
보조기억장치 내 연속적인 블록에 파일을 할당하는 방식.
구현이 단순하다는 장점이 있지만, 외부 단편화를 야기한다는 치명적인 문제가 있다.
각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식. 마지막 블록(2번 블럭)에는 다음 블록이 없단는 특별한 표시자를 기록한다.
연결 할당은 외부 단편화 문제를 해결하지만 단점이 있다.
반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 한다.
파일의 중간 부분부터 접근하고 싶어도 반드시 파일의 첫 번째 블록부터 접근하여 하나씩 순차적으로 접근해야 하기 때문에 성능 면에서 상당히 비효율적이다.
하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없다.
색인 할당은 파일의 모든 블록 주소를 색인 블록(index block)이라는 하나의 블록에 모아 관리하는 방식.
연결 할당과는 달리 파일 내 임의의 위치에 접근하기 쉽다. 색인 블록 안에 파일을 구성하는 데이터 블록 주소가 있으므로 색인 블록만 알면 해당 파일 데이터에 접근할 수 있다.
색인 할당을 기반으로 만든 파일 시스템이 유닉스 파일 시스템.
연결 할당의 단점을 보완한 파일 시스템으로 각 블록에 포함된 다음 블록의 주소들을 모아 테이블 형태로 관리한다.
이러한 테이블을 파일 할당 테이블(FAT: File Allocation Table)이라고 부르고 FAT을 이용하는 파일 시스템이 FAT 파일 시스템이다. FAT 파일 시스템은 버전에 따라 FAT12, FAT16, FAT32가 있고 FAT 뒤의 숫자는 블록을 표현하는 비트 수를 의미한다.
파일의 첫 번째 블록 주소만 알면 파일의 데이터가 담긴 모든 블록에 접근할 수 있다. 그래서 디렉터리 엔트리에는 파일 이름과 더불어 파일의 첫 번째 블록 주소가 명시 된다.
이외에도 FAT 파일 시스템의 엔트리에는 파일 속성과 관련한 다양한 정보들이 있고 위와 같은 형식으로 블록에 저장된다.
💡 윈도우에서는 블록이라는 용어 대신 클러스터라는 용어를 사용한다.
하드 디스크의 한 파티션을 FAT(FAT12) 파일 시스템으로 포맷하면 다음과 같이 구성된다.
FAT는 하드 디스크 파티션의 시작 부분에 있지만, 실행 도중 메모리에 캐시될 수 있고 그러면 임의 접근의 성능이 개선된다.
유닉스 파일 시스템은 색인 블록으로 파일의 데이터 블록들을 찾는 방식인 색인 할당 기반의 파일 시스템이다. 이 색인 블록을 i-node(index-node)라고 부른다.
i-node에는 파일 속성 정보와 열다섯 개의 블록 주소가 저장될 수 있다.
파일마다 이러한 i-node가 있고, i-node마다 번호가 부여되어 있다.
그리고 i-node들은 파티션 내 특정 영역에 모여 있다.
i-node 하나는 15개의 블록 주소를 저장할 수 있기 때문에 블록 개수를 넘어서는 큰 파일의 경우 파일의 데이터 블록을 가리키기 위해 다음과 같이 해결 한다.
블록 주소 중 열 두 개에는 직접 블록 주소를 저장
직접 블록(direct block): 파일 데이터가 저장된 블록
i-node의 열두 개 주소는 직접 블록 주소를 저장한다.
충분하지 않다면 열세 번째 주소에 단일 간접 블록 주소를 저장
단일 간접 블록(single indirect block): 파일 데이터를 저장한 블록 주소가 저장된 블록
열네 번째 주소에 이중 간접 블록 주소를 저장
이중 간접 블록(double indirect block): 단일 간접 블록들의 주소를 저장하는 블록
열다섯 번째 주소에 삼중 간접 블록 주소를 저장
삼중 간접 블록(triple indirect block): 이중 간접 블록 주소가 저장된 블록