CS/운영체제

[Chapter 6] 개념 이해를 위한 운영체제 [파일 시스템 - 개요]

devrabbit22 2025. 3. 2. 22:15

파일 시스템은 일반 사용자가 가장 가깝게 접하게 되는 운영체제의 구성 요소로써 사용자의 편의성 제공을 위하여 보다 쉽게 파일을 저장하고 저장된 파일을 접근할 수 있도록 하는 것이 가장 중요하다.

파일 시스템에서 제공하는 기능

  1. 파일 생성(creation)과 삭제(deletion)
  2. 파일 열기(open)와 닫기(close)
  3. 파일 읽기(read)와 쓰기(write)
  4. 파일 공유(sharing)와 보호(protection)

파일 시스템은 사용자의 요청에 따라 디스크와 같은 보조 기억 장치에 파일의 내용을 저장하고 저장된 파일의 내용을 다시 사용할 수 있도록 사용자의 보조 기억장치 사이의 인터페이스 기능을 제공한다. 이러한 기능을 제공하기 위하여 피일 시스템은사용자의 논리적 단위인 파일과 보조 기억장치의 물리적 단위인 블록 사이의 효율적인 매핑 과정이 요구된다.

ex)문서 혹은 프로그램을 작성한 후 이를 보조기억 장치에 저장하기 위하여 파일명을 부여한다. 저장된 파일의 내용을 다시 사용하기 위하여 파일 시스템은 파일명에 해당하는 블록 번호로의 매핑이 효율적으로 이루어져야한다.

 

파일 접근

컴퓨터 시스템에서 파일이란 관련이 있는 레코드(record)들의 집합으로써 일반 사용자들이 자료를 저장하기 위한 논리적인 단위로 사용된다. 사용자는 임의의 파일명을 부여하여 데이터를 저장한 후 그파일명을 사용하여 참조한다. 파일에는 파일명 외의 파일의 종류, 크기, 작성 날짜 및 시간 등의 여러가지 속성을 가지고 있다.

이러한 파일은 보통 여러 개의 레코드들로 구성되며 물리적으로는 레코드 혹은 블록 단위로 보조 기억장치에 저장된다. 여기에서 논리적 레코드의 크기와 물리적 블록의 크기는 반드시 일치하는 것은 아니다. 여러 개의 레코드를 하나의 물리적 블록으로 구성할 수도 있다. 또한 하나의 파일은 보통 여러 개의 레코드들로 구성되며 이들의 구성은 논리적으로 연속적이지만, 보조 기억장치에 배치될 때 물리적으로 반드시 연속적인 것은 아니다.

하나의 파일을 구성하는레코드들을 보조 기억장치에 배치하는 방법은 보조 기억장치의 특성과 밀접한 관계가 있으며 파일의 레코드를 접근하는 방법은 이 보조 기억장치에 배치된 방법에 따라 다르게 된다.

 

  1. 순차 접근
    • 순차접근 (sequential access)은 파일을 구성하는 임의의 레코드를 순차적으로 접근하는 방식이다. 순차 접근에서는 파일을 구성하는 레코드들을 논리적 순서와 동일하게 보조 기억장치에 연속저으로 배치되어야 한다. 이러한 구조의 파일은 레코드 배치가 단순하며 저장된 순서에 따라 연속적으로 접근하기 때문에 다음 레코드의 접근 속도가 빠르다. 그러나 특정 레코드를 접근할 경우 항상 파일의 첫 번째 레코드부터 찾아야 하기 때문에 매우 번거롭다. 
    • 파일의 레코드들을 연속적으로 배치해야 함으로 보조 기억장치의 외부 단편화 현상이 발생할 수 있으며 파일 내용을 추가 혹은 삭제할 경우 파일 전체의 레코드를 재배치해야 하는 어려움이 있다.
    • 순차접근은 자기 테이프와 같이 순차적인 저장 특성을 갖는 보조 기억장치에 적합하며 디스크와 같이 직접 접근이 가능한 보조 기억장치에도 적용할 수 있다.
  2. 직접 접근
    • 직접 접근(direct access)은 파일을 구성하는 임의의 레코드를 직접 접근하는 방식이다. 직접 접근에서는 파일을 구성하는 레코드들을 논리적 순서와 무관하게 보조 기억장치에 불연속적으로 배치할 수 있다. 이러한 구조의 파일은 레코드가 불연속적으로 배치되기 때문에 다음 레코드를 직접 접근할 수 있어야 한다. 따라서 디스크와 같이 직접 접근이 가능한 보조 기억장치에서만 적용할 수 있다.
    • 직접 접근이 가능할 경우 파일의 레코드들을 불연속적으로 배치할 수 있기 때문에 보조 기억장치의 빈 공간을 효과적으로 이용할 수 이씅며 파일의 내용을 추가 혹은 삭제할 경우 파일 전체의 레코드를 재배치할 필요가 없다. 그러나 하나의 레코드를 접근하여 처리한 후 다음 레코드를 찾는데 오버헤드가 발생한다.
  3. 색인 접근
    • 색인 접근(indexed access)은 파일을 구성하는 임의의 레코드를 색인표를 통하여 순차 혹은 직접 접근하는 방식이다. 색인표에는 파일의 레코드가 저장된 보조 기억장치의 주소를 가지고 있다.
    • 파일을 구성하는 레코드들은 연속 혹은 불연속적으로 배치할 수 있다. 연속적으로 배치된 구조의 파일 색인 순차 접근이 가능하며 불연속으로 배치된 구조의 파일은 색인 직접 접근이 가능하다. 따라서 색인 접근은 자기 테이프와 같이 순차적인 저장 특성을 갖는 보조 기억장치와 디스크와 같이 직접 접근이 가능한 보조 기억 장치에 적용할 수 있다.

디렉토리 구조

디렉토리(directory)는 파일과 연관된 중요한 개념으로써 일종의 파일이지만 보통 파일(ordinary file)과 구별된다. 

보통 파일의 내용은 프로그램 혹은 데이터를 가지고 있지만 디렉토리는 파일 관리에 필요한 정보(파일명 및 속성, 파일의 주소 등)를 가지고 있다. 일반 사용자들은 보통 파일의 내용을 필요로 하며 디렉토리 파일의 내용은 파일 시스템에서 사용된다. 따라서 보통 파일을 접근하기 위해서는 반드시 그 파일이 속한 디렉토리를 참조하게 되며 디렉토리 구조 및 내용은 운영체제에 따라 다르게 정의된다. 따라서 파일의 내용은 동일하더라도 운영체제 혹은 응용 프로그램에 따라 접근 가능성이 결정된다.

  • 1-단계 디렉토리
    • 1-단계 디렉토리(single-levle directory)는 파일 시스템 내부에 오직 하나의 디렉토리만을 유지하는 구조이다. 따라서 모든 보통 파일의 접근은 한 번의 디렉토리 참조로 이루어진다. 
    • 디렉토리 구조는 매우 간단하지만 파일의 수가 증가할 경우 모든 파일명을 다르게 부여해야 하는 불편함이 있다.

1-단계 디렉토리

  • 2-단계 디렉토리
    • 2-단계 디렉토리(two-level directory) 구조는 1-단계 디렉토리 구조의 단점을 개선하기 위한 것으로써 마스터 디렉토리(master directory)와 사용자 디렉토리(user directory)를 유지한다. 마스터 디렉토리는 모든 사용자 디렉토리에 관한 정보를 가지고 있으며 사용자 디렉토리는 각 사용자의 파일에 관한 정보를 갖는다.
    • 모든 보통 파일을 접근하기 위해서 사용자명과 파일명을 반드시 명시해야 하며 항상 두 번의 디렉토리 참조가 요구된다.
    • 이러한 디렉토리 구조는 사용자마다 자신의 디렉토리를 유지해야 하며, 사용자가 다를 경우 동일한 파일명을 부여할 수 있지만 사용자 디렉토리 내에서의 파일명은 다르게 부여해야 한다.

2-단계 디렉토리

  • 트리 구조 디렉토리
    • 트리 구조 디렉토리(tree-structured directory)는 2-단계 디렉토리 구조를 일반화하여 디렉토리의 구성을 트리(tree) 형태로 확장한 것으로 가장 많이 사용되고 있는 디렉토리 구조이다. 트리 구조의 디렉토리는 루트 디렉토리(root directory)와 서브디렉토리(subdirectory)로 구성되며 모든 파일은 고유의 경로명(path name)을 갖게된다. 
    • 경로명에는 절대 경로와 상대경로가 있다. 절대경로는 루트 디렉토리로부터 특정 파일까지의 경로가 명시된 것이고 상대 경로는 현재 디렉토리로부터 특정 파일까지의 경로가 명시된 것을 말한다. 상대 경로를 효과적으로 지원하기 위하여 파일 시스템에서는 현재 디렉토리(.)와 부모 디렉토리(..)를 유지한다.

트리 구조 디렉토리

  • 그래프 구조 디렉토리
    • 그래프 구조의 디렉토리(graph-structured directory)는 트리 구조의 디렉토리를 일반화하여 디렉토리의 구성을 그래프(graph)형태로 확장한 것이다.
    • 그래프 구조의 디렉토리는 루트 디렉토리와 서브디렉토리로 구성되며 모든 서브디렉토리와 파일의 공유가 허용된다. 따라서 동일한 파일을 서로 다른 경로명으로 지정할 수 있다.
    • 그래프 구조의 디렉토리에서 디렉토리 혹은 파일을 공유할 경우 이들에 대한 경로명 지정이 간단하기 때문에 파일에 대한 접근이 용이해진다. 그러나 서브디렉토리 혹은 파일들이 순환 구조로 연결되어 있을 경우 이들에 대한 탐색 과정에서 무한루프에 빠질 수 있다.
    • 그래프 구조의 디렉토리를 구성할 때 순환 구조를 허용하지 않는 비순환 그래프로 구성할 수도 있다.

그래프 구조 디렉토리

파일 보호

파일의 내용을 정상적으로 보관하기 위해서는 물리적인 손상과 불법적인 접근으로부터 보호가 필요하다. 물리적인 손상으로부터의 보호는 일반적으로 파일의 내용을 복사해 둠으로써 복구할 수 있도록 한다.

 

  1. 파일명
    • 사용자로 하여금 자신만이 알아볼 수 있는 파일명을 부여함으로써 다른 사용자의 불법적인 접근을 제한하는 가장 소극적인 방법이다. 이 방법은 다른 사용자 파일명을 알 수 없고 추측하기도 어렵다는 가장에 근거하고 있다. 그러나 일반적으로 사용자는 기억하기 쉽고 파일 내용과 유사한 파일명을 부여하기 때문에 다른 사용자에게 불법적으로 접근되기가 쉽다.
  2. 암호
    • 사용자로 하여금 각각의 파일에 대하여 자신만이 알아볼 수 있는 암호를 부여함으로써 다른 사용자의 불법적인 접근을 제한하는 방법이다. 따라서 암호를 아는 사용자들에게만 접근을 허용함으로써 공유가 가능하다. 
    • 사용자가 부여한 암호를 암호화하여 저장하고, 저장된 암호를 해독할 수 있는 알고리즘이 필요하다.
  3. 접근 제어 행렬
    • 각  파일에 대한 사용자의 접근 권한을 접근 제어 행렬(access control matrix)로 부여함으로써 불법적인 접근을 제어하는 방법이다.
    • 파일에 대한 접근이 허용될 사용자에게만 공유가 가능하며 접근 권한에 대한 제어가 가능하다.
    • 모든 파일과 사용자에 대한 접근 관계를 유지하기 위한 행렬이 필요하며, 임의의 파일에 대한 사용자의 접근 권한 여부를 검색하는데 많은 시간이 요구된다. 따라서 리눅스와 같은 운영체제에서는 사용자를 소유자(owner), 소유자가 속한 그룹, 그리고 기타로 구분하고 접근 권한은 읽기, 쓰기, 실행으로 제한하여 보호하고 있다.
  사용자-1 사용자-2 사용자-3
파일-1 R, W R R
파일-2 R, X R, W, X R, X
파일-3 R R R, W

접근 제어 행렬


Reference

개념 이해를 위한 운영체제