[Operating System] Chapter 12 - File Management

이한량·2024년 6월 12일

Operating System

목록 보기
12/12

1. File System

  • File : 사용자에 의해 생성된 데이터 컬렉션으로, 사용자는 파일 시스템을 이 데이터 컬렉션을 생성한다.

    • 파일의 특징

      • 파일은 저장 장치에 저장되며, 반영구적으로 유지된다.

      • 파일은 여러가지 속성을 가지며, 서로 다른 프로세스들은 파일을 공유할 수 있다.

      • 파일은 특정 응용 프로그램에 대한 내용을 정의할 수 있다. 또한, 파일 간의 관계를 표현하기 위해 계층적 구조나 더 복잡한 구조로 조직될 수 있다.

    • 파일의 속성 : 파일 이름, 확장자, 파일 위치, 파일의 크기, 소유자, 마지막 수정 시간, 접근 권한 등.

  • File System : 파일로 조직된 데이터를 저장하는 방법뿐만 아니라 파일에 대한 연산을 제공하는 System Call 함수의 집합이다.

    • Create : 새로운 파일을 정의하고 생성한다.

    • Delete : 파일을 제거한다.

    • Open : 기존 파일을 프로세스에 의해 '열린' 상태로 불러오며, 해당 프로세스가 파일에 대한 작업을 수행하도록 한다. 만약 존재하지 않는 파일에 대해 Open 연산을 수행하면, Create System call을 통해 새로운 파일을 생성한다.

      • 프로세스가 Open System Call을 통해 파일을 열면, 페이지로 나누어진 파일이 메인 메모리로 올라온다.
    • Close : 프로세스가 참조중인 파일을 닫아, 파일에 대한 프로세스의 작업을 중단시킨다.

    • Read : 프로세스가 파일의 데이터 일부 또는 전체를 읽는다.

    • Write : 프로세스가 파일을 업데이트하여 기존 데이터를 수정하거나 새로운 데이터를 추가할 수 있다.

2. File Directory Structure

2-1. Single Level Directory

  • Single Level Directory : 파일 시스템에서 가장 단순한 디렉토리 구조이다. 이 구조는 모든 파일 시스템에 존재하는 파일들이 하나의 디렉토리에 존재하는 형태이다. 즉, 모든 파일이 하나의 디렉토리에 저장되므로, 구현이 매우 단순하고 파일을 관리하는 데 있어 복잡한 데이터 구조가 필요없다.

    • 장점 : 구조가 단순하여 사용 및 관리가 직관적이며, 파일 검색이 빠르다.

    • 단점 : 모든 파일의 이름이 고유하게 존재해야한다. 따라서 파일 이름 충돌이 빈번하기 때문에 확장성에 있어 한계가 크다.

2-2. Two Level Directory

  • Two Level Directory : 이 시스템은 마스터 디렉토리의 하위 디렉토리로 사용자 디렉토리가 존재한다. 2단계 디렉토리 구조를 구성한다.

    • Master Directory

      • 시스템에 존재하는 모든 사용자 디렉토리가 존재하는 디렉토리이다.

      • 일반적으로 OS가 관리하며, User Directory에 대한 접근 권한 정보등이 포함된다.

    • User Directory

      • 각 사용자는 자신의 디렉토리를 갖는다.

      • 이 디렉토리에는 해당 사용자가 소유한 모든 파일이 포함된다.

      • 사용자는 자신의 디렉토리에 대해서만 접근 권한이 존재한다.

    • 장점

      • 이름 충돌을 최소화 할 수 있으므로 확장성이 개선되었다.

      • OS가 모든 디렉토리를 관리하기 때문에 보안 및 접근 제어를 강화가 강화된다.

      • 파일 시스템이 보다 구조화되고 조직화되므로 관리가 용이하다.

    • 단점

      • Single Level Directory에 비해 복잡성이 증가한다.

      • 디렉토리에 접근하여 파일을 찾아야하므로, 검색 시간이 증가한다. (예, User_A/dirname/filename)

2-3. Tree Structure Directory

  • Tree Structure Directory : 디렉토리를 계층적(Tree 구조)으로 구성하여 파일과 디렉토리를 보다 효율적으로 관리할 수 있도록 하는 구조이다. 이 구조는 이전 디렉토리 구조의 한계를 극복하고 파일 관리와 검색을 용이하게 하며, 파일 이름의 중복 문제를 더욱 완벽히 해결한다.

    • Hierarchical Structure (계층적 구조) : 디렉토리와 파일이 계층적으로 구성되어, 상위 디렉토리와 하위 디렉토리 관계를 형성한다.

      • Absolute Path (절대 경로) : 루트 디렉토리에서 시작하는 경로

      • Relative Path (상대 경로) : 현재 작업 디렉토리 기준에서 시작하는 경로

      • Root Directory : 트리 구조의 최상위 디렉토리로, 모든 파일과 하위 디렉토리는 루트 디렉토리에 속한다.

      • Sub Directory : 루트 디렉토리 아래에 위치한 디렉토리로, 추가적인 하위 디렉토리나 파일을 포함할 수 있다. 계층 구조를 이루며, 트리 구조로 확장된다.

      • File : 각 디렉토리 내에 포함된 데이터의 단위로, 고유한 경로를 통해 접근 가능하다. (예시, root/User/Document/OS/Chapter11.pdf)

    • 장점

      • 파일과 디렉토리를 논리적으로 그룹화하여 관리하므로, 각 파일의 성격에 따라 효율적으로 관리가 가능하다.

      • 파일 이름 및 디렉토리 이름 중복 문제를 해결하기 용이하다. 따라서, 확장성이 좋다고 할 수 있다.

    • 단점

      • 구조가 복잡해질 수 있으며, 깊은 곳에 위치한 특정 파일을 검색하는 데 오랜 시간이 걸린다.

3. File Management in UNIX

  • UNIX : UNIX 파일 시스템에서는 6가지 유형의 파일을 구분한다.

    • Regular or Ordinary file (일반 파일) : 바이트 스트림으로 이루어진 데이터의 집합이다.

    • Directory file (디렉토리 파일) : UNIX에선 Directory 또한 파일로 간주하며 관리한다. 실제로 디렉토리 파일은 파일 시스템만이 디렉토리 파일에 쓰기 권한이 존재하며, 사용자 프로그램은 읽기 권한만 부여된다.

    • Special file (특수 파일) : 데이터를 포함하지 않지만, 물리적 장치를 파일 이름으로 매핑한다. 즉, I/O 장치와 특수 파일이 연결되어 있다.

    • pipes (파이프) : 파이프는 프로세스 간 통신을 지원하는 파일 시스템이다. 하나의 프로세스에서 데이터를 생성하고 다른 프로세스에서 이를 소비하는 형태로 동작한다.

    • Links : 특정 파일을 참조하는 파일이다.

    • Symbolic links : 연결된 파일의 이름을 포함하는 데이터 파일이다.

  • Index Node (Inode) : UNIX 파일 시스템에서 파일을 관리하기 위해 사용하는 자료구조이다. 모든 파일과 디렉토리는 기본적으로 1개의 Inode를 갖는다.

    • Inode에 포함되는 정보 : 파일 유형, 접근 권한, 파일 소유자, 파일 크기, 파일 생성 및 수정 시간, 데이터 블록 위치, 링크 수 (해당 Inode를 참조하는 링크의 수), Inode 번호 (Inode의 고유 식별 번호)...

    • 특징

      • 하나의 Inode를 참조하는 여러 파일이 존재할 수 있다. (Hard Link)

      • 각 파일은 정확히 하나의 Inode에 의해 제어된다.

  • Hard Link : 원본 파일과 동일한 Inode를 갖는 링크이다. 즉, 여러 이름을 갖는 각 파일들이 동일한 Inode를 참조하고, 같은 파일 정보를 갖는다. 마치 파일 복사와 비슷한 이치이다.

    • 원본 파일이나 하드 링크 파일에 변경사항이 적용되면 서로에게 영향을 미친다.

    • 하드 링크를 갖는 파일 중 하나가 삭제되더라도, 다른 파일은 독립적으로 존재한다. 심지어 원본 파일이 삭제되더라도, 하드 링크 파일은 독립적으로 존재할 수 있다.

    • 하드 링크는 동일한 파일 시스템 내에서만 사용 가능하다.

    • 디렉토리에 대한 하드 링크는 불가능하다.

  • Symbolic Link : 원본 파일을 참조하는 파일이다. 심볼릭 링크는 파일의 경로를 저장하고, 해당 경로를 통해 원본 파일에 접근한다. Windows의 바로가기와 비슷하다.

    • 심볼릭 링크는 원본 파일과 다른 Inode를 갖는다. 심볼릭 링크 파일은 원본 파일의 경로를 텍스트 형태로 저장한다.

    • 실제 데이터를 저장하지 않는다.

    • 원본 파일이 삭제되면, 심볼릭 링크는 더이상 유효하지 않은 파일이 된다.

    • 심볼릭 링크는 다른 파일 시스템 간에도 생성 가능하다.

    • 디렉토리에 대한 심볼릭 링크는 가능하다.

  • File Allocation (파일 할당) : 파일 시스템에서 파일을 저장하기 위해 디스크 공간을 할당하는 방법을 의미한다. UNIX 시스템에서는 파일 할당이 주로 디스크 블록 단위로 이루어진다.

  • File Allocation Table (FAT) : 파일이 디스크에 저장된 위치를 추적하고 관리하기 위한 테이블이다. 이 방식은 매우 단순하면서도 강력하지만, 저장 장치의 블록만큼의 Size가 필요하다. 또한 빈 공간에 대한 항목도 포함해야하므로, 오버헤드가 크다.

3-1. Contiguous Allocation

  • Contiguous Allocation : 연속 할당은 파일이 연속된 디스크 블록에 저장되는 방식이다. 즉, 파일이 생성될 때 하나의 연속될 블록 집합을 파일에 할당한다.

    • 장점

      • 연속된 블록에 저장되므로 파일 접근 속도가 매우 빠르다. 즉, 첫 블록의 위치와 길이만 알면, 임의의 위치로 빠르게 접근할 수 있다.
    • 단점

      • 파일의 크기가 동적으로 변경되기 어려워 확장성이 좋지 않다.

      • External Fragment 문제가 발생할 수 있다. 즉, 파일이 삭제되고 추가되는 과정에서 빈 공간이 작은 조각으로 나뉘게 된다.

    • Compaction (조각 모음) : 외부 단편화 문제를 해결하기 위해 디스크의 빈 공간을 모아 하나의 연속된 공간으로 만드는 과정이 필요하다.

3-2. Chained Allocation

  • Chained Allocation : 연결 할당은 파일의 각 블록이 다음 블록의 위치를 가리키는 포인터 역할을 하는 방식이다. 즉, Linked list와 유사한 구조로 볼 수 있다.

    • 장점

      • 연속 할당에 비해 파일의 크기가 동적으로 변경될 수 있어, 확장성이 좋다.

      • 외부 단편화가 발생하지 않는다.

    • 단점

      • Direct Access 방식이 아니므로, 검색 속도가 매우 느리다.

      • 만약 한 포인터(블록)이 유실되면, 그 뒤의 파일 전체가 유실될 가능성이 존재한다.

3-3. Indexed Allocation

  • Indexed Allocation : 인덱스 할당은 연속 할당과 연결 할당의 문제를 해결하기 위해 고안된 파일 할당 방식이다. 이 환경에서 Index Table을 사용하면 FAT로 인해 발생하는 오버헤드를 줄일 수 있다.

    • Index Table : 인덱스 테이블은 각 파일에 대한 별도의 인덱스 블록을 포함하며, 이 블록에는 파일의 데이터 블록에 대한 포인터가 존재한다.

      • Index Block :
profile
한량 극복 프로젝트

0개의 댓글