[OS] File System : Logical Directory Structure

parkheeddong·2023년 6월 5일
0

Operating System

목록 보기
57/63
post-thumbnail

Logical Directory Structure

대부분의 컴퓨터 시스템은 논리적 디렉토리 구조가 Hierarchical Structure을 가지고 있다.

1) Flat (single level) Directory Structure


📌 하나의 파일 시스템에 하나의 디렉토리만 있는 구조이다.
sub-directory는 있지 않다.
📌 파일 이름, 파일 보호, 파일 관리 등의 문제가 존재한다.
디렉토리가 하나뿐이면 모든 파일의 이름이 달라야 하므로 불편하다.
다중 사용자 시스템의 경우 서로의 파일을 구분하기 어렵다.

2) 2-level Directory Structure

📌 n개의 사용자가 있다면, 사용자별로 n개만큼 디렉토리가 있는 경우이다.
📌sub directory는 만들 수 없다.
MFD = master file directory.(root directory 역할)
UFD = User File Directory (사용자별 sub directory)
📌사용자간의 파일 구분 문제는 해결됐지만 이 이상의 sub directory는 없기 때문에, 여전히 문제가 남아 있다.

3) Hierarchical Directory Structure

📌 트리 구조를 가지는 디렉토리이다.
📌 유저들은 각자의 sub directory를 생성할 수 있다.
📌 이 구조로 인해 다양한 용어들이 생겨났다.
홈 디렉토리 = 처음 로그인 했을 때 놓이는 디렉토리
Current directory = 현재 놓인 디렉토리
absolute pathname, relative pathname
📌 디렉토리 생성, 제거, 변경 등을 위한 인터페이스가 제공되어야 한다.

4) Acyclic Graph Directory Structure

📌 Acycle Graph = 방향성이 없는 사이클 그래프

(트리는 사이클이 없지만 그래프는 사이클이 존재할 가능성이 있다)

Hard Link : ln 커맨드
Soft Link : ln -s 커맨드
➡ 두 개의 파일을 연결해서 하나로 만들라는 뜻.

cp a b a를 b로 카피해라
(copy하면 둘은 서로 독립적 파일)
mv a b a를 b로 옮겨라
(a파일을 없애고, b로 옮겨 가라. 즉 a이름을 b로 바꾸는 것과 다름없음)
ln a b a를 b로 링크 걸어라 ❗❗
(a파일과 b파일이 같은 메타데이터, inode를 공유하게 한다. 따라서 a에서 접근해도 b에서 접근해도 같은 파일에 접근하게 된다! 즉 한 파일에 이름 두개를 준 것.)

링크된 파일은 같은 파일이다.

즉, 같은 파일 a가 경로 1로도, 경로 2로도 접근가능한 것이다.
➡ 이 링크로 인해서 방향이 없는 사이클이 생기게 된다.


sys와 sys, readfile과 testfile은 각각 같은 파일이다.
즉 path name은 다르지만 같은 파일을 가리키게 된다!
link("/user/src/uts/sys/", "/usr/include/sys") (전자를 후자로 링크해라) 와 같은 명령어를 통해 구현된다.

5) General Directory Structure

Cycle이 존재하는 것이다. (방향이 존재하는 사이클)

예시를 보면 a -> b -> d -> a 로의 사이클이 존재한다.
이 경우는 경로이름이 이상해질 가능성이 있기 때문에 조심해야 한다.

0개의 댓글