파일 시스템은 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말이다.
파일(File)
컴퓨터에서 데이터를 저장하는 데 사용되는 단위이다.
파티션(Partition)
연속된 저장 공간을 하나 이상의 연속되고 독립적인 영역으로 나누어 사용할 수 있도록 정의한 규약이다. 하나의 물리적 디스크 안에 여러 파티션을 두는 게 일반적이지만, 여러 물리적 디스크를 하나의 파티션으로 구성하기도 한다.
ex. c드라이브 d드라이브
디렉토리(Directory)
파일들을 분류, 보관하기 위한 개념이며 폴더라고 한다.
시스템이 파일에 접근하여 데이터를 읽는 방법에는 3가지가 있다.
- 순차 접근(Sequential Access)
가장 단순한 방법으로 파일의 정보가 레코드 순서대로 처리된다. 카세트테이프를 사용하는 방식과 동일하다.
현재 위치에서 읽거나 쓰면 offset이 자동으로 증가하고, 뒤로 돌아가기 위해선 되감기가 필요하다.
- 직접 접근(Random Access)
파일의 레코드를 임의의 순서로 접근할 수 있다. LP 판을 사용하는 방식과 동일하다.
- 색인 접근(Index Access)
파일에서 레코드를 찾기 위해 색인을 먼저 찾고 대응되는 포인터를 얻는다. 이를 통해 파일에 직접 접근하여 원하는 데이터를 얻을 수 있다. 따라서 크기가 큰 파일에서 유용하다.
1단계 디렉터리(Single-Level Directory)
파일 시스템 내에 하나의 디렉토리만 존재한다.
문제점
폴더가 하나라면 파일이름이 중복됐을때 충돌이 발생한다.
파일이 많아지거나 다수의 사용자가 사용하는 시스템에서는 심각한 제약을 갖는다.
2단계 디렉터리(Two-Level Directory)
사용자 마다 하나의 디렉토리를 배정한다.
1단계의 파일 이름이 충돌하는 문제가 사라진다.
UFD : 자신만의 사용자 파일 디렉터리
MFD : 사용자의 이름과 계정 번호로 색인되어 있는 디렉터리. 각 엔트리는 사용자의 UFD를 가리킨다.
문제점
서브 디렉토리 생성 불가능하다.
사용자간 파일을 공유시 보안이슈가 발생한다.
트리 구조 디렉터리(Tree-Structured Directory)
Tree 형태의 계층적 디렉토리 사용 가능
사용자가 하부 디렉토리 생성/관리 가능
대부분의 OS가 사용
비순환 그래프 디렉터리(Acyclic-Graph Directory)
사이클이 없는 그래프는 디렉터리들이 서브디렉터리와 파일들을 공유할 수 있도록 허용한다.
Hierarchical directory structure 확장
Link의 개념 사용 ex. 바로가기
파일을 무작정 삭제하게 되면 현재 파일을 가리키는 포인터는 대상이 사라지게 되기 때문에 파일을 삭제할 때 대상이 없는 포인터(dandling pointer) 를 남긴다. (참조 계수가 0이면 포이터가 존재하지 않아 삭제 가능)
일반 그래프 디렉터리(General Graph Directory)
비순환 그래프 디렉터리에서 사이클을 허용한 구조
문제점
파일 탐색시 무한루프를 고려해서 하위 디렉터리가 아닌 파일에 대한 링크만 허용하는 등 조치가 필요하다.
https://noep.github.io/2016/02/23/10th-filesystem/
https://www.youtube.com/watch?v=bRwjKvmeyZQ
https://www.youtube.com/watch?v=3VOqyi-wbJU
File System 이 무엇인지 설명해주세요
파일 시스템은 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말입니다.
비순환 그래프 디렉터리의 특징을 말해보세요
비순환 그래프 디렉터리는 트리 구조 디렉터리를 확장한 것으로 디렉터리들이 서브디렉터리와 파일들을 공유할 수 있도록 허용합니다.
이름 그대로 순환을 허용하지 않고 파일 삭제할때 해당 파일을 가리키는 포인터는 대상이 사라지게 되기 때문에 삭제하려는 파일을 가리키는 포인터가 없는지 확인을 해야합니다.