개요
1 | 파일 자원을 관리하고 파일의 생성, 삭제 등 파일 액세스 및 제어에 대한 책임을 갖는 소프트웨어 |
기능
- 파일 관리
- 보조 메모리 관리
- 파일 무결성 보장
- 파일 액세스 방법
- 파일 백업과 복구
1 | 사용자가 각 응용 업무처리에 적합한 구조로 파일을 구성 |
구조
파일의 정의, 속성, 디렉터리 구조, 파일에 허용되는 연산 등을 표현하는 논리적 파일과 실제 디스크에 논리 파일 시스템을 사상하는 것으로 구분한다.
블록(Block)
1 | 파일은 디스크의 하나 이상의 블록에 저장, 블록은 메모리와 디스크 간의 전송 단위 |
메타 데이터(Meta Data)
저장 장치의 가용 블록 위치나 파일이 마지막으로 수정된 시간 등 여러 데이터를 포함한 데이터
파일 시스템에 대한 크기, 가용 공간, 루트 데이터 위치, 가용 리스트 등의 정보와 파일에 대한 소유자, 크기, 블록 위치, 액세스 시간 등의 정보를 가진다.
사용자가 직접 수정할 수 없으므로 파일 시스템의 무결성을 유지
마운트(mount)
시스템에서 새로운 파일 시스템을 사용하기 위해, 파일 시스템이 미리 제공된 파일 시스템의 디렉터리에서 설치되는 절차
운영체제는 여러 파일 시스템을 마운트 할 수 있는 기능을 제공
파일 개념
서로 관계 있는 정보의 집합체, 레코드들의 집합체
작성자에 의해 정의된 많은 종류의 서로 다른 형태의 정보, 즉 원시 프로그램, 목적 프로그램, 숫자, 데이터, 텍스트, 도형 이미지, 소리 등이 기록된다.
사용 목적에 따라 특별한 구조를 지닌다.
파일 구성
파일 내용은 운영체제에 의해서 물리적 장치에 저장된다.
사용자의 관점에서 파일은 논리적으로는 저장되는 기본 단위로서 프로그램과 데이터를 가질 수 있다.
논리적 파일을 실제 저장 장치로 매핑시키는 작업은 운영체제가 담당한다.
파일이름 명명
심볼릭 이름을 사용하여 파일을 참조(조회)하며, 유일한 이름이어야 한다.
파일은 루트 디렉터리로부터 각 트리 구조에 도달하는 경로를 따라 위치한다.
특정 파일을 위한 경로명은 디렉터리 이름과 파일의 이름으로 구성한다.
파일 속성
- 파일 이름: 사용자들이 이해할 수 있는 형태
- 파일 타입: 다양한 파일 형식을 지원하는 시스템의 경우 필요하다.
- 저장 위치: 파일이 저장된 장치와 그 장치 위치에 대한 포인터
- 파일 크기: 파일의 현재 크기와 경우에 따라 최대 허용 가능한 크기도 포함된다.
- 액세스 제어 데이터: 파일 읽기, 쓰기, 실행 등 권한(액세스) 제어에 관한 정보
- 소유자: 파일 최초 생성자
- 레코드 크기: 고정된 크기 || 최대 크기 등 레코드 종류에 따라 다르다.
- 시간, 날짜, 사용자 식별 정보: 생성 시간, 수정 변경 시간, 최근 사용된 시간들을 유지, 이들 정보는 파일의 보호, 보안 및 사용자 감시를 위해 사용
파일 구조
파일을 구성하는 레코드들이 보조기억장치에 배치되는 방식
- 순차 파일: 레코드는 고정된 크기는 같은 수의 필드로 구성, 물리적 구성, 물리적 순서에 따라 저장
- 인덱스 파일: 순차 파일의 단점 극복을 위해 인덱스 순차 파일을 구성, 단일 (키) 필드를 기반으로 순차적으로 구성
- 분할된 파일: 여러 개의 순차 서브 파일로 구성된 파일
파일 연산
- 파일 생성
- 파일 기록
- 파일 판독
- 파일 재설정
- 파일 삭제
- 파일 크기 조절
테이프 기반 파일 시스템
1 | 초기에 각각의 테이프 장치에 각 파일이 별도로 저장. |
레코드 블로킹
- 디스크 시스템
- 섹터 크기에 의해 결정되는 블록이 정의되어 있다.
- 모든 디스크 입출력은 블록 단위, 모든 블록의 크기는 동일하다.
테이프 시스템
- 소프트웨어에 의해 물리적으로 블록의 크기를 정의한다.
- 레코드당 80문자를 지정하면 레코드 간의 간격을 낭비, 수천바이트를 물리적 레코드로 지정, 테이프의 사용률을 높인다.
고정 블로킹
- 고정된 길이의 레코드를 사용, 한 블록에 필요한 레코드를 저장한다.
- 블록의 마지막 부분의 일부가 블록의 크기가 제한적으로 빈 공간이 발생할 수 있다.
순차 액세스
- 파일에 있는 정보는 레코드 단위의 순서로 처리되는 것이 일반적이다.
- 파일에서 대부분의 동작은 읽기와 쓰기이다.
- 파일은 시작 위치로 재설정 될 수 있고, 어떤 시스템에서 프로그램은 정수 N개의 레코드를 앞뒤로 건너뛸 수 있다.
직접 액세스
- 어떠한 블록도 직접 읽거나 쓸 수 있으며, 읽기나 기록은 순서가 없다.
- 직접 액세스 파일 블록에 직접 읽고 쓸 수 있으며, 읽거나 기록의 순서에 제약이 없다.
디렉터리 시스템
- 기호 테이블로 구성되며 두 개의 분리된 디렉터리 구조
- 장치 디렉터리
- 파일 디렉터리
- 선형 리스트: 디렉터리에 파일명, 포인터의 선형적 리스트를 구성, 파일의 생성 및 삭제 실행.
- 해시 테이블: 파일 이름을 제시하면 해시로부터 값(포인터)을 얻어 리스트를 직접 액세스 함.
디렉터리 연산
- 탐색
- 파일의 생성
- 파일의 삭제
- 파일의 열람
- 파일의 재명명
- 예비
디렉터리 구조
- 1단계 디렉터리: 가장 간단한 디렉터리 구조. 모든 파일이 같은 디렉터리에 있어 유지와 이해가 쉬움.
- 2단계 디렉터리: 사용자 간 파일명 혼란 예방을 위해 각 사용자에게 다른 디렉터리를 만들어 사용하도록 함.
- 경로명: 루트는 마스터 파일 디렉터리이고, 그 아래 사용자 파일 디렉터리이며, 그 아래 파일들이 있다.
- 탐색 경로: 자동적으로 특수한 시스템 디렉터리를 탐색하는 순서. 경로는 수시로 변경이 가능하다.
트리 구조 디렉터리
- 2단계 디렉터리는 높이가 2인 트리 구조이다.
- 디렉터리 구조를 확장하는 일반적인 방법이다.
- 사용자들이 자신의 서브 디렉터리를 생성, 그 곳에 자신의 파일을 구성한다.
- 트리는 하나의 루트 디렉터리를 가지며, 시스템 내의 모든 파일은 유일한 경로명을 가진다.
디스크 할당
연속 할당
파일들을 디스크의 연속적인 주소들의 집합에 할당
- 순서에 의해 블록 B 다음 블록 B + 1 을 액세스 하는데 헤드의 이동이 필요하지 않다.
- 한 실린더의 마지막 섹터에서 다음 실린더의 첫 번째 섹터로 오직 1 트랩만 헤드가 이동한다.
- 연속적으로 할당된 파일들에 액세스 하기위해 필요한 디스크 탐색 횟수를 최소화 한다.
- 한 파일의 연속 할당은 주소와 첫 번째 블록의 개수에 의해 정의된다.
- 연속적으로 할당된 파일에 액세스하는 것은 매우 쉬우므로 임의 액세스가 가능하다.
- 순차적 액세스의 경우 파일 시스템은 마지막으로 참조된 블록의 디스크 주소를 기억, 필요할 때 다음 블록을 읽는다.
- 순차적 액세스, 직접 액세스 모두 연속 할당 기법을 지원한다.
- 새로운 파일을 위해 연속적인 빈 공간을 찾는 것이 중요하다.
연속 할당의 문제점
- 외부 단편화:
- 파일 크기 제한:
- 공간 낭비:
- 파일 확장 어려움:
인덱스 할당
- 모인 포인터들은 하나의 장소, 즉 인덱스 블록으로 관리, 직접 액세스 지원
- 각 파일들은 디스크 블록(섹터) 주소의 배열인 자신의 인덱스 블록을 가진다.
- 파일이 생성될 때 인덱스 블록 내 모든 포인터들은 NIL 값으로 설정
- 외부 단편화와 상관없이 직접 주소를 제공하나 공간의 낭비가 심하다.
- 전체의 인덱스 블록이 할당해야하며 한 개 혹은 두 개의 포인터가 NIL 이 아니어야 한다.
- 각 파일들은 하나의 인덱스 블록들을 가져야하며, 블록의 크기는 가능한 작은것이 좋다.
디스크 빈 공간 관리
- 디스크 공간은 제한되어 있다.
- 연결 리스트
- 인덱스 블록(Grouping)