[Computer Science]/[운영체제(OS)]

[운영체제(OS)] 13-2) 디렉토리 구조

극꼼 2023. 4. 14. 01:49
반응형


<디렉토리의 구조>

디렉토리의 연산에는 파일 찾기, 파일 생성, 파일 삭제, 디렉토리 나열, 파일의 재명명, 파일 시스템 순회(여러 디렉토리를 순회하며 파일을 볼 수 있게 해주는 것) 등이 있습니다. 

 

가장 일반적인 디렉토리의 논리적 구조는 다음과 같습니다.

1) 1단계 디렉토리(Single-Level Directory) : 가장 간단한 디렉토리 구조로, 모든 파일이 한 개의 디렉토리의 밑에 있습니다. 파일이 많아지거나 다수의 사용자가 사용하는 시스템에서는 제약이 심한데, 한 디렉토리에 모든 파일이 있기 때문에 각각의 파일은 유일한 이름을 가져야 합니다.

 

2) 2단계 디렉토리(Two-Level Directory) : 각 사용자는 자신만의 디렉토리(UFD, user file directory)를 가지고 한 사람의 파일만을 저장합니다. 사용자 작업을 시작하거나 시스템에 사용자가 로그인하면 시스템은 마스터 파일 디렉토리(MFD, master file directory)를 탐색하고, MFD에는 사용자 이름이나 계정 번호로 색인이 되어 있고 각 엔트리는 사용자의 UFD를 가리키고 있습니다.

2단계 디렉토리 구조는 파일 이름이 충돌하는 문제를 해결했지만, 두 사용자가 한 파일을 사용해야할 때 사용자끼리 서로 UFD 접근을 허용해야만 공유가 가능해집니다. 접근을 허용한 후에는 다른 사용자의 디렉토리에 있는 파일을 지칭할 수 있게 되는데, 반드시 사용자의 이름과 파일 이름을 사용해서 경로명을 써야합니다.

* 탐색 경로 : 명령이 주어질 때 일정하게 디렉토리를 탐색하는 순서로, 수시로 변경할 수 있습니다.

 

3) 트리 구조 디렉토리(Tree-Structured Directories) : 가장 일반적인 디렉토리 구조로, 최상위에 하나의 root 디렉토리가 존재하며, 모든 파일은 고유한 경로명을 가집니다.

각 프로세스는 현재 디렉토리(current directory)를 가지고 있고, 파일의 참조가 일어나면 현재 디렉토리를 가장 먼저 검색합니다. 현재 디렉토리에 없는 파일을 검색하려면 change directory 시스템 콜을 호출하고, 가고자 하는 디렉토리 이름을 매개변수로 사용합니다.

경로명에는 절대 경로명(absolute path name)과 상대 경로명(relative path name)이 있습니다.

  • 절대 경로명 : 루트부터 지정된 파일까지의 경로
  • 상대 경로명 : 현재 디렉토리를 기준으로 목적 파일까지의 경로

트리 구조 디렉토리에서 디렉토리 삭제가 일어난다면 디렉토리가 비어있지 않으면 삭제하지 않거나, 디렉토리의 모든 파일을 지운 후 삭제하는 두 방법 중 하나를 선택할 수 있습니다. 

 

4) 비순환 그래프 디렉토리(Acyclic-Graph Directory) : 트리 구조는 파일이나 디렉토리의 공유를 허용하지 않고, 비순환 그래프는 공유할 수 있도록 허용하는 구조로 되어 있습니다. 파일을 복사해오는게 아닌 물리적으로 공유하기 때문에 파일을 변경하면 다른 사용자가 즉시 볼 수 있게 됩니다. 사이클을 허용하지 않는 구조로, 디스크 공간을 절약할 수 있는 장점이 있습니다.

* 링크(link) : 공유 파일 구현 방법으로, 다른 파일이나 서브 디렉토리를 가리키는 포인터입니다.

 

비순환 그래프 디렉토리의 단점은 다음과 같습니다.

  • 디렉토리 구조가 복잡합니다.
  • 공유된 하나의 절대 경로명이 여러개일 수 있으므로 탐색할 때 서로 다른 경로로 찾아갈 수 있어 시스템 성능이 저하됩니다.
  • 공유된 파일을 삭제할 때 고아 포인터(Dangling Pointer)가 발생할 수 있습니다. 이에 대한 해결책으로는 모든 참조가 지워질 때까지 원본 파일을 보존하는 것으로, 파일에 대한 모든 참조 리스트를 저장했다가 참조가 비어있을 때 원본 파일을 삭제합니다. 참조 리스트를 저장할 때는 전체를 모두 저장하기보다는 참조 숫자를 저장합니다. 

5) 일반 그래프 디렉토리(General Graph Directory) : 트리 구조에 링크를 더해서 순환을 허용하는 그래프 구조입니다. 디렉토리와 파일 공유에 융통성이 있고, 탐색 알고리즘이 간단하며, 파일과 디렉토리에 접근하기 쉽습니다. 

* 가비지 수집 기법 : 사용되지 않은 디스크 공간을 찾기 위한 기법입니다. 전체 파일 시스템을 검색하고 접근 가능한 모든것을 표시하고, 탐색에 표시되지 않은 것들을 수집하고 사용 가능한 공간 리스트에 추가합니다. 

 

반응형