CS/Operating System

[11장] 파일 시스템

Manze 2022. 6. 12. 14:31
더보기

쉽게 배우는 운영체제 (조성호 著, 한빛아카데미) 참고하여 작성했습니다 

파일

개념

  • 프로그램과 데이터 등 정보의 모음(집합)
  • 사용자에게 프로그램, 데이터는 다른 개체이나, 파일 관리 시스템은 동일하게 파일로 처리
  • 텍스트처럼 형태가 자유롭거나 엄격하게 제한 가능, 사용 목적에 따라 구조 특별 가능
  • 파일 내용은 운영체제가 물리적 장치에 저장.
  • 사용자 관점에서 파일은 논리적으로 저장되는 기본 단위로, 프로그램이나 데이터 될 수 있음.
  • 논리적 파일을 실제 저장장치에 매핑시키는 작업은 운영체제가 담당

파일의 유형

파일의 유형으로 파일의 내부 구조 형태가 짐작 가능함 

일반(정규) 파일 : 가장 일반적인 파일과 데이터를 포함하는 데 사용, 텍스트나 이진 형태

디렉터리 파일 : 모든 유형의 파일에 액세스할 수 있는 정보 포함하나, 실제 파일 데이터는 포함하지 않음

특수 파일 : 시스템 장치를 정의하거나 프로세스로 생성한 임시 파일로 파이프라고
                       하는 FIFO(선입선출), 블록, 문자 이에 해당


운영체제가 너무 많은 종류의 파일의 구조를 지원하면 크기가 커져 복잡해지고,

너무 적은 종류의 파일을 지원하면 프로그래밍이 어려워진다. 

 

파일 구성

파일이름에 마침표를 넣어서 파일 유형을 표현 → 파일이름 + .(마침표) + 확장자  

확장자는 3자 이하가 대부분이지만, 4자나 5자로 된 것도 있음 

파일 이름의 마침표는 여러번 사용할 수도 있는데, 마지막 마침표 다음 글자를 확장자로 인식하게 됨.

파일 이름은 현재 경로 이름을 포함하여 최대 255자 

 

파일의 분류

실행 파일 : 운영체제가 메모리로 가져와 CPU를 이용하여 작업을 하는 파일

데이터 파일 : 실행 파일이 작업하는 데 필요한 데이터를 모아놓은 파일

 

 

파일 속성

파일 헤더 : 파일 테이블에서 관리하며 파일의 이름, 종류, 크기, 시간, 접근 권한 등과 같은
                  일반적인 내용과
파일이 저장장치의 몇 번째 블록에 있는지에 대한 정보를 가지고 있음

고유 헤더 : 데이터 파일에는 응용 프로그램이 필요로 하는 고유 헤더가 따로 달려 있는데
                  파일의 버전 번호, 크기, 특수 정보 등 응용 프로그램이 필요로 하는 정보가 있음

 

파일 구조

 

순차 파일 구조

파일 내용이 하나의 긴 줄로 늘어선 형태

모든 데이터가 순서대로 기록되기 때문에 저장 공간에 낭비되는 부분이 없음

단순한 구조, 매우 빠른 데이터 처리  

새로운 데이터 삽입 삭제시 시간이 많이 걸리며 순차 처리 구조로 검색에 적당하지 않음

인덱스 파일 구조

순차 파일 구조에 인덱스 테이블을 추가하여 순차 접근과 직접 접근이 가능

현대의 파일 시스템은 인덱스 파일 구조로, 파일을 저장할 때는

순차 파일 구조로 저장하고 파일에 접근할 때는 인덱스 테이블을 보고 원하는 파일에 직접 접근

 

직접 파일 구조 

저장하려는 데이터의 특정 값에 어떤 관계를 정의하여 물리적인 주소로 바로 변환하는 파일 구조

특정 함수(해시 함수(hash function))를 이용하여 직접 접근이 가능한 파일 구조

함수 이용으로 데이터 접근이 빠름

해시 함수 선정이 어렵고, 선정하더라도 저장 공간이 낭비되는 단점이 있음 


파일 시스템

개념

  • 사용자가 직접 파일을 보관하는 대신 파일 관리자를 두어 저장 장치의 관리를 맡기는 시스템
  • 파일 관리자가 파일 테이블을 사용하여 파일을 관리
  • 사용자가 특정 파일에 접근하려면 파일 관리자로부터 파일에 접근할 수 있는 권한 (키)를 획득해야함
    → 파일 디스크립터 
  • 논리적 저장 단위인 파일을 정의하고 메모리에 매핑시키는 기능을 제공
  • 파일을 구성하고 데이터 액세스를 관리하므로, 파일 시스템은 데이터를 실제로 저장하는
    파일과 이를 계층적으로 연결하는 디렉터리로 구성
  • 디스크 저장소를 관리(저장 공간 할당)하는 것과 관련이 많고,
    메인 메모리와 다른 매체에 저장된 파일 데이터 액세스도 포함사용자가 파일을 생성·수정·삭제할 수 있도록 지원하며,
    파일을 각 응용 프로그램에 가장 적합한 구조로 구성할 수 있도록 지원
  • 파일 읽기, 쓰기, 실행 등을 다양하게 액세스하도록 제어된 방법도 제공

기능 

+ 보조 메모리 관리 : 다양한 형태의 저장장치에 입출력 지원, 2차 저장장치에 파일 저장할 공간 할당

 

목적

다양한 형태의 저장장치에 입출력을 지원

데이터의 보호와 처리율 향상 위해 성능 최적화

 

블록과 파일 테이블

  • 저장장치에서 사용하는 가장 작은 단위로, 한 블록에 주소 하나가 할당됨
  • 블록을 여러 개의 섹터로 구성되며 블록의 크기는 시스템마다 다름
  • 블록 크기를 작게 설정하면 내부 단편화 현상이 줄어들어 저장장치를 효율적으로 쓸 수 있지만,
    파일이 여러 블록으로 나뉘어 파일 입출력 속도가 느려짐
  • 큰 파일을 많이 사용할 때는 블록 크기를 크게 잡는 것이 좋음

포맷을 하면 각 블록에 번호가 매겨지고 파일 테이블엔는 파일이 어떤 블록에 있는지 명시된다. 


연결 프로그램 

데이터 파일을 더블 클릭했을 때 응용프로그램으로 실행되게 하는 프로그램

윈도우에서 데이터 파일에 연결된 응용 프로그램을 바꾸고 싶을 때는 연결 프로그램을 변경하면 됨

확장자를 바꾼다고 해서 내용이 바뀌지 않음

 


디렉터리 구조

 

디렉터리 

관련 있는 파일을 하나로 모아놓은 곳

하나의 디렉터리에는 여러 개의 파일과 자식 디렉터리가 존재 

디렉터리는 여러 층으로 구성할 수 있음

 

디렉터리 계층 구조 

디렉터리는 여러 층으로 구성할 수 있다 

루트 디렉터리 : 최상위에 있는 디렉터리

 

디렉터리 파일

디렉터리도 파일임

일반 파일에는 데이터가 담기고, 디렉터리에는 파일 정보가 담김

디렉터리 헤더에는 디렉터리의 이름, 만든 시간, 접근 권한 등의 정보가 기록됨

 

경로

파일이 전체 디렉터리 중 어디에 있는지를 나타내는 정보

한 디렉터리에는 같은 이름을 가진 파일이 존재할 수 없지만, 서로 다른 디렉터리에는 같은 이름의 파일이 존재할 수 있음

 

절대 경로 : 루트 디렉터리를 기준으로 파일의 위치를 나타내는 방식

상대 경로 : 현재 있는 위치를 기준으로 파일의 위치를 표시하는 방식

 

<디렉터리 구조>

 

1단계 디렉터리 구조 

루트 디렉터리에 새로운 디렉터리를 만들 수 있지만 디렉터리 안에 자식 디렉터리를 만들 수는 없음

 

다단계 디렉터리 구조 

단계 확장에 제약이 없고 디렉터리에 파일과 디렉터리를 둘 다 저장할 수 있음

 

바로가기 링크를 포함한 디렉터리 구조

원래 디렉토리 구조는 트리 구조였으나, 바로 가기로 인하여 그래프 구조로 바뀌게 됨

*트리? 사이클이 없는 그래프


마운트 

유닉스에서 여러 개의 파티션을 통합하는 명령어


디스크 파일 할당 

 

연속 할당 방식

  • 파일을 구성하는 데이터를 디스크상에 연속적으로 배열하는 간단한 방식
  • 파일을 저장하거나 삭제하다 보면 빈 공간이 생기는데, 디스크에 남은 공간 중 파일의 크기와 맞는
    연속된 공간이 없을 때는 연속 할당이 불가능하기 대문에 실제로 사용되지 않음

불연속 할당 방식

  • 비어 있는 블록에 데이터를 분산하여 저장하고 이에 관한 정보를 파일 시스템이 관리하는 방식
  • 연결 리스트를 이용한 연결 할당과 인덱스를 이용한 인덱스 할당이 대표적

연결 할당 

  • 파일에 속한 데이터를 연결 리스트로 관리하는 방식
  • 파일 테이블에는 시작 블록에 대한 정보만 저장하고, 나머지 데이터는 시작 블록부터 연결하여 저장
  • 체인으로 연결한 것처럼 보여서 체인 할당chained allocation이라고도 함
  • 윈도우의 FAT(File Allocation Table)이 이 방식을 사용

인덱스 할당

  • 테이블의 블록 포인터가 데이터 블록을 연결하는 것이 아니라, 데이터의 인덱스를 담고 있는 인덱스 블록을 연결
  • 인덱스 블록은 실제 데이터의 위치에 관한 정보를 순서대로 보관
  • 테이블이 꽉 차서 더 이상 데이터를 연결할 수 없을 때는 인덱스 블록을 연결하는
    간접 인덱스 블록indirect index block을 만들면 테이블을 무한히 확장할 수 있음

디스크의 빈 공간 관리 

빈 공간 리스트
  • 파일 시스템은 디스크의 내부 단편화를 줄이고 빈 공간을 효율적으로 관리하기 위해
    빈 블록의 정보만 모아놓은 빈 공간 리스트를 유지
  • 파일 시스템에서는 파일 테이블의 헤더를 삭제하고 사용했던 블록을 빈 공간 리스트에 등록하는 것을
    파일이 삭제된 것으로 간주
  • 어떤 데이터를 지우고 새로운 데이터를 디스크에 넣을 때 방금 지워진 블록에 할당되는 것이 아니라
    리스트에 있던 블록 중 맨 앞에 있는 블록에 할당