개요

1
2
3
4
5
6
7
8
9
파일 자원을 관리하고 파일의 생성, 삭제 등 파일 액세스 및 제어에 대한 책임을 갖는 소프트웨어
파일의 저장 위치, 저장 방법, 저장 공간 활용, 파일 사용 할당, 파일 접근 횟수 등과 관련된 복잡한 작업 수행
작업 수행을 각 파일에 대한 정보를 수록한 디렉터를 사용하여 해당 파일을 관리
디스크 저장소를 관리하는 것과 관련이 없다.
메인 메모리 및 다른 매체에 저장된 파일 데이터 액세스 포함
사용자 파일을 생성, 수정, 삭제할 수 있도록 지원
파일 읽기, 쓰기, 실행 등이 다양하게 액세스 되도록 제어된 방식 제공
설계를 위해 사용자 수, 사용자 당 평균 파일 수와 크기 등 사용자들에 관한 지식 필요
해당 시스템에서 실행할 응용 프로그램의 특성을 이해, 적합한 파일 구성과 디렉터리 구조를 결정

기능

  • 파일 관리
  • 보조 메모리 관리
  • 파일 무결성 보장
  • 파일 액세스 방법
  • 파일 백업과 복구
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    사용자가 각 응용 업무처리에 적합한 구조로 파일을 구성
    사용자가 파일 간의 정보 전송 명령을 내릴 수 있게 한다.
    다양한 형태의 저장 장치를 위한 입출력 지원
    사용자가 물리적 장치 이름을 사용하는 대신 기호화된 이름을 사용하여 자신의 파일을 참조하여 장치와의 독립성을 유지
    정보 보호와 비밀 보장을 위해 파일 시스템은 정보를 암호화하고 해독할 수 있는 능력을 갖추어야 한다.
    사용자는 파일의 생성과 삭제 파일에 대한 연산 수행을 위해 파일 시스템과 상호 작용
    모든 파일의 위치와 파일의 속성을 기술하는 디렉터리 사용
    기본연산(생성, 기록, 판독, 삭제) 들을 레코드 수준에서 수행
    파일의 레코드들은 출력을 위해 블록화 되어야 하며 입력 후에 블록이 해제되어야 한다.
    디스크 스케줄링과 더불어 파일 할당은 성능의 최적화 관계에 있다.

구조

파일의 정의, 속성, 디렉터리 구조, 파일에 허용되는 연산 등을 표현하는 논리적 파일과 실제 디스크에 논리 파일 시스템을 사상하는 것으로 구분한다.

블록(Block)

1
2
3
4
5
6
7
파일은 디스크의 하나 이상의 블록에 저장, 블록은 메모리와 디스크 간의 전송 단위
디스크에 하나 이상의 섹터들로 구성, 블록 할당 방법은 운영체제에 따라 다르다.
운영체제는 파일에 속하는 정보를 블록에 유지하며 0에서 시작하는 연속 정수를 통해 일부 최대수에 이르는 논리 블록 번호를 사용한다.
논리 블록 번호는 물리적 디스크 주소(트랙, 실린더, 표면, 섹터)로 변환
변환은 장치 드라이버가 수행하며 디스크 제어기에 낮은 수전의 하드웨어 명령어로 전달
논리적 파일의 물리적 장치로의 사상
가상 블록 번호(VBN, Virtual Block Number): 즉, 논리적 파일을 파일 시스템에 의해 논리 블록 번호(LBN, Logical Block Number) 물리적 파일로 사상하는 과정

메타 데이터(Meta Data)

저장 장치의 가용 블록 위치나 파일이 마지막으로 수정된 시간 등 여러 데이터를 포함한 데이터
파일 시스템에 대한 크기, 가용 공간, 루트 데이터 위치, 가용 리스트 등의 정보와 파일에 대한 소유자, 크기, 블록 위치, 액세스 시간 등의 정보를 가진다.
사용자가 직접 수정할 수 없으므로 파일 시스템의 무결성을 유지

마운트(mount)

시스템에서 새로운 파일 시스템을 사용하기 위해, 파일 시스템이 미리 제공된 파일 시스템의 디렉터리에서 설치되는 절차
운영체제는 여러 파일 시스템을 마운트 할 수 있는 기능을 제공

파일 개념

서로 관계 있는 정보의 집합체, 레코드들의 집합체
작성자에 의해 정의된 많은 종류의 서로 다른 형태의 정보, 즉 원시 프로그램, 목적 프로그램, 숫자, 데이터, 텍스트, 도형 이미지, 소리 등이 기록된다.
사용 목적에 따라 특별한 구조를 지닌다.

파일 구성

파일 내용은 운영체제에 의해서 물리적 장치에 저장된다.
사용자의 관점에서 파일은 논리적으로는 저장되는 기본 단위로서 프로그램과 데이터를 가질 수 있다.
논리적 파일을 실제 저장 장치로 매핑시키는 작업은 운영체제가 담당한다.

파일이름 명명

심볼릭 이름을 사용하여 파일을 참조(조회)하며, 유일한 이름이어야 한다.
파일은 루트 디렉터리로부터 각 트리 구조에 도달하는 경로를 따라 위치한다.
특정 파일을 위한 경로명은 디렉터리 이름과 파일의 이름으로 구성한다.

파일 속성

  • 파일 이름: 사용자들이 이해할 수 있는 형태
  • 파일 타입: 다양한 파일 형식을 지원하는 시스템의 경우 필요하다.
  • 저장 위치: 파일이 저장된 장치와 그 장치 위치에 대한 포인터
  • 파일 크기: 파일의 현재 크기와 경우에 따라 최대 허용 가능한 크기도 포함된다.
  • 액세스 제어 데이터: 파일 읽기, 쓰기, 실행 등 권한(액세스) 제어에 관한 정보
  • 소유자: 파일 최초 생성자
  • 레코드 크기: 고정된 크기 || 최대 크기 등 레코드 종류에 따라 다르다.
  • 시간, 날짜, 사용자 식별 정보: 생성 시간, 수정 변경 시간, 최근 사용된 시간들을 유지, 이들 정보는 파일의 보호, 보안 및 사용자 감시를 위해 사용

파일 구조

파일을 구성하는 레코드들이 보조기억장치에 배치되는 방식

  • 순차 파일: 레코드는 고정된 크기는 같은 수의 필드로 구성, 물리적 구성, 물리적 순서에 따라 저장
  • 인덱스 파일: 순차 파일의 단점 극복을 위해 인덱스 순차 파일을 구성, 단일 (키) 필드를 기반으로 순차적으로 구성
  • 분할된 파일: 여러 개의 순차 서브 파일로 구성된 파일

파일 연산

  • 파일 생성
  • 파일 기록
  • 파일 판독
  • 파일 재설정
  • 파일 삭제
  • 파일 크기 조절

테이프 기반 파일 시스템

1
2
3
4
5
초기에 각각의 테이프 장치에 각 파일이 별도로 저장.
통계 데이터 등 큰 파일의 경우 데이터 저장을 위해 여러 개의 테이프가 소요.
다중 릴 또는 다중 볼륨 테이프 파일의 시스템을 운영체제에서 제공해야 한다.
테이프 장치는 사용 효율을 높이기 위해 한 테이프에 여러 파일을 저장 운영하였으며, 이를 위해 디렉터리라는 개념을 적용.
IRM 시스템에서는 테이프 릴을 볼륨으로 디렉터리를 VTOC(Volume of Table of Content)라 부른다.

레코드 블로킹

  • 디스크 시스템
  • 섹터 크기에 의해 결정되는 블록이 정의되어 있다.
  • 모든 디스크 입출력은 블록 단위, 모든 블록의 크기는 동일하다.

테이프 시스템

  • 소프트웨어에 의해 물리적으로 블록의 크기를 정의한다.
  • 레코드당 80문자를 지정하면 레코드 간의 간격을 낭비, 수천바이트를 물리적 레코드로 지정, 테이프의 사용률을 높인다.

고정 블로킹

  • 고정된 길이의 레코드를 사용, 한 블록에 필요한 레코드를 저장한다.
  • 블록의 마지막 부분의 일부가 블록의 크기가 제한적으로 빈 공간이 발생할 수 있다.

순차 액세스

  • 파일에 있는 정보는 레코드 단위의 순서로 처리되는 것이 일반적이다.
  • 파일에서 대부분의 동작은 읽기와 쓰기이다.
  • 파일은 시작 위치로 재설정 될 수 있고, 어떤 시스템에서 프로그램은 정수 N개의 레코드를 앞뒤로 건너뛸 수 있다.

직접 액세스

  • 어떠한 블록도 직접 읽거나 쓸 수 있으며, 읽기나 기록은 순서가 없다.
  • 직접 액세스 파일 블록에 직접 읽고 쓸 수 있으며, 읽거나 기록의 순서에 제약이 없다.

디렉터리 시스템

  • 기호 테이블로 구성되며 두 개의 분리된 디렉터리 구조
  • 장치 디렉터리
  • 파일 디렉터리
  • 선형 리스트: 디렉터리에 파일명, 포인터의 선형적 리스트를 구성, 파일의 생성 및 삭제 실행.
  • 해시 테이블: 파일 이름을 제시하면 해시로부터 값(포인터)을 얻어 리스트를 직접 액세스 함.

디렉터리 연산

  • 탐색
  • 파일의 생성
  • 파일의 삭제
  • 파일의 열람
  • 파일의 재명명
  • 예비

디렉터리 구조

  • 1단계 디렉터리: 가장 간단한 디렉터리 구조. 모든 파일이 같은 디렉터리에 있어 유지와 이해가 쉬움.
  • 2단계 디렉터리: 사용자 간 파일명 혼란 예방을 위해 각 사용자에게 다른 디렉터리를 만들어 사용하도록 함.
  • 경로명: 루트는 마스터 파일 디렉터리이고, 그 아래 사용자 파일 디렉터리이며, 그 아래 파일들이 있다.
  • 탐색 경로: 자동적으로 특수한 시스템 디렉터리를 탐색하는 순서. 경로는 수시로 변경이 가능하다.
트리 구조 디렉터리
  • 2단계 디렉터리는 높이가 2인 트리 구조이다.
  • 디렉터리 구조를 확장하는 일반적인 방법이다.
  • 사용자들이 자신의 서브 디렉터리를 생성, 그 곳에 자신의 파일을 구성한다.
  • 트리는 하나의 루트 디렉터리를 가지며, 시스템 내의 모든 파일은 유일한 경로명을 가진다.

디스크 할당

연속 할당

파일들을 디스크의 연속적인 주소들의 집합에 할당

  • 순서에 의해 블록 B 다음 블록 B + 1 을 액세스 하는데 헤드의 이동이 필요하지 않다.
  • 한 실린더의 마지막 섹터에서 다음 실린더의 첫 번째 섹터로 오직 1 트랩만 헤드가 이동한다.
  • 연속적으로 할당된 파일들에 액세스 하기위해 필요한 디스크 탐색 횟수를 최소화 한다.
  • 한 파일의 연속 할당은 주소와 첫 번째 블록의 개수에 의해 정의된다.
  • 연속적으로 할당된 파일에 액세스하는 것은 매우 쉬우므로 임의 액세스가 가능하다.
  • 순차적 액세스의 경우 파일 시스템은 마지막으로 참조된 블록의 디스크 주소를 기억, 필요할 때 다음 블록을 읽는다.
  • 순차적 액세스, 직접 액세스 모두 연속 할당 기법을 지원한다.
  • 새로운 파일을 위해 연속적인 빈 공간을 찾는 것이 중요하다.
연속 할당의 문제점
  • 외부 단편화:
  • 파일 크기 제한:
  • 공간 낭비:
  • 파일 확장 어려움:
인덱스 할당
  • 모인 포인터들은 하나의 장소, 즉 인덱스 블록으로 관리, 직접 액세스 지원
  • 각 파일들은 디스크 블록(섹터) 주소의 배열인 자신의 인덱스 블록을 가진다.
  • 파일이 생성될 때 인덱스 블록 내 모든 포인터들은 NIL 값으로 설정
  • 외부 단편화와 상관없이 직접 주소를 제공하나 공간의 낭비가 심하다.
  • 전체의 인덱스 블록이 할당해야하며 한 개 혹은 두 개의 포인터가 NIL 이 아니어야 한다.
  • 각 파일들은 하나의 인덱스 블록들을 가져야하며, 블록의 크기는 가능한 작은것이 좋다.
디스크 빈 공간 관리
  • 디스크 공간은 제한되어 있다.
  • 연결 리스트
  • 인덱스 블록(Grouping)