파일과 파일 시스템
- 파일(File)
- 논리적인 저장 단위로, 관련된 정보 자료들의 집합에 이름을 붙인 것
- 컴퓨터 시스템의 편리한 사용을 위해 정보 저장의 일관된 논리적 관점을 제공
- 파일 속성(File attribute)
- 파일을 관리하기 위한 각종 정보이며, 파일 자체의 내용은 아님
- 파일 이름, 유형, 저장된 위치, 파일 사이즈, 접근 권한, 소유자 등 파일에 대한 전반적인 정보
- 파일 시스템(File System)
- 운영체제와 모든 데이터, 프로그램의 저장과 접근을 위한 기법을 제공
- 시스템 내의 모든 파일에 관한 정보를 제공하는 계층적 디렉터리 구조이고, 파일 및 파일의 메타데이터, 디렉터리 정보 등을 관리
- 파티션(Partition)
- 연속된 저장 공간을 하나 이상의 연속되고 독립적인 영역으로 나누어 사용할 수 있도록 정의한 규약
- 하나의 물리적 디스크 안에 여러 파티션을 두는 게 일반적이지만, 여러 물리적 디스크를 하위 파티션으로 구성하기도 함
접근 방식(Access Methods)
순차 접근(Sequential Access)
- 가장 단순한 방법으로 파일의 정보가 레코드 순서대로 처리됨
- 카세트테이프를 사용하는 방식과 동일
- 현재 위치에서 읽거나 쓰면 offset이 자동으로 증가하고, 뒤로 돌아가기 위해선 되감기가 필요

직접 접근(Random Access)
- 파일의 레코드를 임의의 순서로 접근할 수 있음
- LP 판을 사용하는 방식과 동일
- 읽기나 쓰기의 순서에 제약이 없으며, 현재 위치를 유지할 수 있다면 이를 통해 순차 접근 기능도 구현 가능
색인 접근(Index Access)
- 파일의 레코드를 찾기 위해 색인을 먼저 찾고 대응되는 포인터를 얻음
- 이를 통해 파일에 직접 접근하여 원하는 데이터를 얻을 수 있음
- 따라서 크기가 큰 파일에서 유용

디렉터리(Directory)
- 파일의 메타데이터 중 일부를 보관하고 있는 일종의 특별한 파일
- 해당 디렉터리에 속한 파일 이름과 속성들을 포함하고 있고, 다음과 같은 기능들을 제공
- 파일 찾기(Search)
- 파일 생성(Create)
- 파일 삭제(Delete)
- 디렉터리 나열(List)
- 파일 재명명(Rename)
- 파일 시스템 순회(Traverse)
디렉터리는 파일을 빠르게 탐색해야 하며, 적절한 이름 및 파일들을 적절하게 분류 및 그룹화로 사용자들이 사용하기 편리해야 한다. 이를 위해 디렉터리의 논리적 구조를 정의하는 여러 방법이 있음
1단계 디렉터리(Single-Level Directory)
- 모든 파일들이 디렉터리 밑에 존재하는 형태
- 파일들은 서로 유일한 이름을 가지고 서로 다른 사용자라도 같은 이름을 사용할 수 없음
- 파일 이름 충돌 및 파일 검색의 비효율성 존재

2단계 디렉터리(Two-Level Directory)
- 각 사용자별로 별도의 디렉터리를 갖는 형태

- UFD : 자신만의 사용자 파일 디렉터리
- MFD : 사용자의 이름과 계정 번호로 색인되어 있는 디렉터리, 각 엔트리는 사용자의 UFD를 가리킨다.
- 서로 다른 사용자가 같은 이름의 파일을 가질 수 있고 효율적인 탐색이 가능
- Sub-directory 생성 및 사용자간 파일 공유가 불가능
트리 구조 디렉터리(Tree-Structed Directory)
- Tree 형태의 계층적 디렉터리 사용 가능
- 사용자가 하부 directory 생성 및 관리 가능
- System call이 제공되어야 함
- 하나의 루트 디렉터리를 가지며 모든 파일은 고유한 경로(절대/상대 경로)를 가지며, 이를 통해 효율적인 탐색이 가능하고, 그룹화 가능
- 대부분의 OS가 사용

일반 그래프 디렉터리(General Graph Directory)
- 순환을 허용하는 그래프 구조
- 하위 디렉터리 간의 링크를 허용하지 않고, 디렉터리에서 파일로의 링크만 허용
- garbage collection을 통해 전체 파일 시스템을 순회하며 접근 가능한 부분만을 식별하고, 사용되지 않는 데이터를 제거

참고
https://rebro.kr/181
https://beatmejy.tistory.com/30