디렉터리 구조의 종류에는 크게 5가지가 있다.

1. 1단계 디렉터리

가장 간단한 구조로, 모든 파일이 하나의 디렉터리 내에 위치해 관리되는 구조이다.
하지만 모든 파일이 하나의 디렉터리에 존재하기 때문에 각각의 파일 이름이 달라야하고, 파일이나 사용자의 수가 증가하면 파일을 관리하는데에 어려움이 생긴다. 파일명은 보통 내용과 관련되어있고, 시스템에 따라 길이에 제한을 받는다.

2. 2단계 디렉터리

2단계 디렉터리 구조에서 루트는 마스터 파일 디렉터리(MFD)이고, 아래로 사용자 파일 디렉터리(UFD), 그 아래로 파일이 있다. 여기서 파일은 트리의 리프에 해당한다.

사용자 이름과 파일 이름은 루트 디렉터리로부터 리프까지의 경로로 정의되는데, 이를 경로명이라 한다. 원하는 파일의 경로명을 알아야 해당 파일을 지정할 수 있다.

마스터 파일 디렉터리는 각 사용자 이름, 계정 번호, 사용자 파일 디렉터리를 가리키는 포인터를 갖고 있으며, 사용자 파일 디렉터리를 관리한다.

사용자 파일 디렉터리는 한 사용자가 갖고 있는 파일들에 대한 정보를 가지고 있고, 해당 사용자의 파일을 관리한다.

두 파일이 서로 다른 사용자 파일 디럭터리에 속하는 경우, 동일한 파일 이름을 사용할 수 있다.

3. 트리 구조 디렉터리

말 그대로 트리의 형태를 띄는 디렉터리 구조다.

하나의 루트 디렉터리와 여러 개의 서브 디렉터리로 구성되어있다.

각 디렉터리에는 파일과 서브 디렉터리가 존재한다. 우리가 흔히 사용하는 폴더 안에 폴더나 파일이 들어있는것을 생각하면 이해가 편하다.

트리 구조 디렉터리는 디렉터리의 생성과 제거가 비교적 용이하다.

디렉터리 탐색은 포인터를 이용하고, 경로명은 절대 경로명상대 경로명이 있다.

절대 경로명은 루트에서부터 가리킨 파일까지 모든 경로를 지정하는것이고, 상대 경로명은 현재 디렉터리의 위치를 기준으로 목적하는 파일까지의 경로를 지정하는것이다.

4. 비순환 그래프 디렉터리

트리 구조 디렉터리를 확장한것이다.

트리 구조 디렉터리에서는 디렉터리간 파일이나 서브 디렉터리의 공유를 금지한 반면, 비순환 그래프 디렉터리에서는 디렉터리간에 파일이나 서브 디렉터리의 공유가 가능하다. 이는 한 폴더에 다른 폴더에 있는 파일이나 폴더의 바로가기를 생성한것을 생각하면 이해가 편하다.

여기서 일어나는 공유는 복사의 개념이 아니다. 한 디렉터리에서 공유한 파일이나 폴더에 수정이 일어나면 다른 디렉터리에서도 해당 파일이나 디렉터리의 변화를 볼 수 있다.

디렉터리 구조가 복잡하고, 공유된 하나의 파일에 대해 두번 이상 탐색될 수 있기 떄문에 시스템 성능이 저하될 수 있다.

그리고 한 디렉터리에서 공유된 파일을 삭제할 경우, 고아 포인터가 발생하는데, 이는 바로가기를 눌렀을 때 해당 파일이 없다는 문구가 뜨는것을 생각하면 이해가 쉽다. 

5. 일반 그래프 디렉터리

트리 구조에 링크를 더해 순환을 허용하는 그래프 구조이다.

디렉터리와 파일 공유에 대해 융통성이 있고, 탐색 알고리즘이 간단해 파일과 디렉터리에 대한 엑세스가 쉽다.

일반 그래프 디렉터리는 마지막 참조가 끝났음에도 메모리를 재할당 할 수 있는지 결정하는 쓰레기 수집(Garbage Collection)이 필요하다. 쓰레기 수집은 전 파일 시스템을 탐색해 엑세스할 수 있는 파일에 표시하고, 두번째 탐색에서는 표시하지 않은 메모리를 사용 가능 메모리 리스트에 추가하는 것이다.

'운영체제' 카테고리의 다른 글

[운영체제 공부] 제어 비트  (0) 2020.03.03
[운영체제 공부] RAID  (0) 2020.03.02
[운영체제 공부] 입출력 모듈  (0) 2020.03.02
[운영체제 공부] 가상 메모리  (0) 2020.02.27
[운영체제 공부] 세그먼테이션  (0) 2020.02.25

+ Recent posts