본문으로 건너뛰기

파일 시스템

파일과 디렉터리

  • 파일: 의미 있고 관련 있는 정보를 모은 논리적인 단위

    → 모든 파일에는 이름과 파일을 실행하기 위한 정보, 파일 관련 부가 정보가 있다.

    → 부가 정보를 속성 또는 메타 데이터라고 부른다.

  • 파일을 다루는 모든 작업은 운영체제에 의해 이뤄진다. 어떤 응용 프로그램도 임의로 파일을 조작할 수 없으며 운영체제에게 부탁해야 한다. 이를 위해 운영체제는 파일 연산을 위한 시스템 호출을 제공한다.

  • 운영체제는 파일의 확장자를 통해 파일의 유형을 파악할 수 있다.

  • 디렉터리를 이용하면 여러 개의 파일 도는 디렉터리를 묶어 관리할 수 있다.

    → 많은 운영체제에서는 디렉터리를 그저 특별한 형태의 파일로 간주한다. (즉, 디렉터리도 파일!)

    → 운영체제는 디렉터리 연산을 위한 시스템 호출도 제공한다.

  • 경로: 디렉터리를 이용해 위치를 특정 짓는 정보

    절대 경로: 루트 데릭터리부터 시작하는 경로

    상대 경로: 현재 디렉터리부터 시작하는 경로

파일 시스템

  • 파일 시스템: 파일과 디렉터리를 보조기억장치에 일목요연하게 저장하고 접근할 수 있게 하는 운영체제 내부 프로그램

    → 보조기억장치를 사용하려면 파티션을 나누는 작업(파티셔닝)과 포맷 작업(포맷팅)을 거쳐야 한다!

  • 파티셔닝: 하드 디스크나 SSD처럼 용량이 큰 저장 장치를 하나 이상의 논리적인 여러 단위로 구획하는 작업

    → 파티셔닝을 통해 나누어진 영역 하나하나를 파티션이라고 한다.

  • 포매팅: 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 수 있게 하는 작업

  • 운영체제는 파일과 디렉터리를 블록단위로 읽고 쓴다.

    → 하나의 파일이 보조기억장치에 저장될 때는 하나 이상의 블록에 걸쳐 저장된다.

    → 하드 디스크의 가장 작은 단위는 섹터이지만, 운영체제는 하나 이상의 섹터를 블록 단위로 묶은 뒤 파일과 디렉터리를 관리한다.

  • 연속 할당: 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식

    → 구현이 단순

    → 외부 단편화를 야기한다. 외부 단편화 예시)


  • 연결 할당(불연속 할당): 각 블록 일부에 다음 블록의 주소를 저장하여 블록들을 연결 리스트 형태로 관리하는 방식


    단점)


    1. 반드시 첫번째 블록부터 하나씩 차례대로 읽어야 한다.

      파일 내 임의의 위치에 접근하는 속도(임의 접근 속도)가 매우 느리다.

      성능 면에서 상당히 비효율적!


    1. 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없다.

      파일을 이루는 블록에 하나라도 문제가 발생하면 그 블록 이후의 블록에 접근할 수 없다.

    → 오늘날에는 위 내용을 그대로 구현하기 보다 변형하여 사용한다.

  • 색인 할당(불연속 할당): 파일의 모든 블록 주소를 색인 블록에 모아 관리하는 방식


    → 파일 내 임의의 위치에 접근하기 쉽다.


    → 색인 블록 안에 파일을 구성하는 데이터 블록 주소가 있으므로 색인 블록만 알면 해당 파일 데이터에 접근할 수 있다. 따라서 디렉터리 엔트리에 파일 이름색인 블록 주소를 명시한다.

  • FAT 파일 시스템: FAT를 이용하는 연결 할당 기반의 파일 시스템

    → 각 블록에 포함된 다음 블록의 주소들을 한데 모아 테이블(파일 할당 테이블, FAT) 형태로 관리한다. 따라서 파일의 첫번째 블록 주소만 알면 파일의 데이터가 담긴 모든 블록에 접근할 수 있게 된다.

  • 유닉스 파일 시스템: i-node를 이용하는 색인 할당 기반의 파일 시스템

    → i-node: 색인 할당은 색인 블록을 기반으로 파일의 데이터 블록들을 찾는 방식인데 여기서 색인 블록을 i-node라 한다.

    → i-node에는 파일 속성 정보와 열다섯개의 블록 주소가 저장될 수 있다. 하지만 보다 많은 블록을 차지하는 파일의 경우 직접 블록, 단일 간접 블록, 이중 간접 블록을 통해 이를 저장한다.