File System - File System Interface

이영민·2023년 6월 20일
0

운영체제

목록 보기
10/11
post-thumbnail
post-custom-banner
  • 파일 시스템은 관련된 정보 자료를 저장하는 실제적인 파일들의 집합체와 시스템 내의 모든 파일에 관한 정보를 제공하는 디렉터리 구조로 구성된다.

1. File Concept

  • 파일은 보조 기억 장치에 기록된 관련 정보의 집합으로 정의할 수 있다.

A. File Attributes

  • 파일은 사용자가 이름을 붙여서 만들고 그 이름으로 파일을 참조한다.
  • 파일은 만들어지면 그 파일을 생성한 프로세스, 사용자, 시스템으로부터 독립한다.
  • 파일은 전형적으로 다음과 같은 속성을 가진다.
    • 이름, 식별자, 타입, 위치, 크기, 보호( 접근 제어 정보 ), 시간, 날짜, 사용자 식별
  • 파일에 대한 정보는 보조 기억 장치에 상주하는 디렉터리 구조에 의해서 유지된다. 디렉터리 항목은 파일의 이름과 고유 식별자로 구성된다.

B. File Operations

  • 운영체제가 파일을 적절히 정의하기 위해 실행할 수 있는 연산들
    • 파일 생성
    • 파일 쓰기
    • 파일 읽기
    • 파일 위치 재설정
    • 파일 삭제
    • 파일 절단
  • 위와 같은 파일 연산들은 지명된 파일과 관련된 디렉터리를 찾는 작업을 한다. 그래서 반복적인 탐색을 피하고자 많은 시스템들은 파일이 맨 처음 사용될 때 open() 시스템 호출을 한다. open() 호출을 하면 운영체제는 모든 열린 파일에 대한 정보를 갖는 열린 파일 테이블을 유지한다.
  • 운영체제는 프로세스별 테이블과 범 시스템 테이블을 사용한다.
  • 프로세스별 테이블은 각 프로세스가 연 모든 파일들을 기록하고 여기에는 프로세스가 파일을 어떻게 사용하는가에 대한 정보가 저장되어있다.
  • 프로세스별 테이블의 각 항목은 다시 범 시스템 열린 파일 테이블들을 가리킨다. 즉, 어떤 프로세스가 파일을 열면 범 시스템적으로 존재하는 열린 파일 테이블과 프로세스별 테이블의 어떤 항목이 연결되고 열린 파일 테이블은 파일을 연 프로세스의 수를 가리키는 열린 계수가 1 증가한다.

C. File Types

  • 운영체제가 파일 유형을 지원한다면, 운영체제는 파일에 대한 합리적인 연산을 수행 할 수 있다. 시스템은 파일 유형에 따라 파일 연산 명령을 결정한다.

D. File Structures

  • 운영체제가 여러 파일 구조를 지원하는 경우
    • 장점: 적절한 수행
    • 단점: 운영체제 크기 증가, 응용성이 떨어짐
  • 운영체제가 파일 형태, 구조에 제한을 두지 않는경우
    • 장점: 유연성 극대화
    • 단점: 응용 프로그램들일 각자의 프로그램에서 사용되는 파일들에 대한 적절한 해석 필요

E. Internal File Structure

  • 물리적 레코드(디스크의 한 블록) ↔ 논리적 레코드의 변환
  • 파일은 블록 단위로 저장하는데 이 때문에 내부 단편화 문제가 발생한다.

2. Access Mode

A. Sequential Access

  • 순차 접근: 테이프 모델을 기반으로, 순차적으로 읽거나 쓰고 현재 파일 위치 포인터는 자동으로 증가한다.

B. Direct Access

  • 디스크 모델을 기반으로하여 논리 레코드의 집합으로 정의된 직접접근 파일은 어떠한 블록이라도 직접 접근을 할 수 있다.
  • 실제 파일의 절대적인 블록번호가 N이더라도 사용자가 보기에는 일반적으로 0 또는 1으로 시작한다.

C. Index Access

  • 찾고자 하는 레코드가 있으면 먼저 index를 찾고 그 index를 바탕으로 파일을 직접 접근하고 원하는 레코드를 찾는다.

3. Directory and Disk Structure

  • 볼륨과 파티션: 볼륨이란 저장장치의 할당 바이트들을 분할, 조합하는 데이터 구조체이다. 파일 시스템으로 포맷된 디스크의 저장영역을 말하는 것이다. 볼륨과 파티션은 서로 다른 개념으로 만약 하드디스크를 하나의 볼륨 덩어리로 본다면, 이 덩어리를 각가의 작은 볼륨 덩어리로 분할할 수 있고 파티션은 이렇게 분할이 가능한 볼륨의 경계를 나누는 것이다.

A. Directory Overview

  • 디렉터리는 파일의 이름을 그 위치로 바꾸어 주는 “심볼 테이블’으로 볼 수 있다.
  • 각 디렉터리는 다음과 같은 연산을 수행한다.
    • 파일 찾기
    • 파일 생성
    • 파일 삭제
    • 디렉터리 나열
    • 파일의 재명명
    • 파일 시스템의 순회

B. 1단계 디렉터리

  • 가장 간단한 디렉터리로 모든파일이 한 개의 디렉터리 밑에 있다.

C. 2단계 디렉터리

  • 각 사용자는 UFD(User File Directory)를 가지고 시스템은 UFD를 가리키는 MFD(Master File Directory)를 가진다.

D. Tree-Structured Directory

  • 임의의 깊이를 가지는 트리 구조의 디렉터리로 사용자들이 자신의 종속 디렉터리를 가진다.
  • 디렉터리의 각 항목은 하나의 비트로 일반파일(0)인지 디렉터리 파일(1)인지 구분한다.

E. Acyclic-Graph Directory

  • 트리구조는 파일 또는 디렉터리의 공유를 허용하지 않는다. 비순환 그래프는 디렉터리들이 하위디렉터리들과 파일을 공유할 수 있도록 허용하는 구조이다.
  • 유닉스에서 공유파일은 일반적으로 link라고 불리는 새로운 디렉터리 항목을 만드는 것으로, 링크는 다른 파일이나 하위 디렉터리를 가리키는 포인터이다.
  • 문제점
    • 동일한 파일이 서로 다른 경로에 의해 참조되는 중복 참조의 문제
    • 삭제시 공유 파일 공간의 문제
      • 파일 삭제시 링크도 삭제 → dangling pointer문제
      • 파일 삭제시 링크 그대로 두기 → 파일의 존재 유무 파악하는데 드는 비용
      • 파일에 대한 모든 참조가 삭제될 때까지 파일을 보존하는 방법
        • 마지막 참조가 제거 되었는지 결정할 필요
        • 각 파일에 대한 참조 리스트 사용: 리스트의 크기가 가변이고 커짐
        • 각 파일에 대한 참조 계수 사용

F. General graph Directory

  • 순환이 가능한 구조이다.
  • 문제점
    • 삭제시 사실상 사용하지 않는 파일인데 순환으로 인해 참조 계수가 0이아닌 파일이 있을 수 있다. → 이 경우 가비지 콜렉션을 사용한다.

4. File-System-Mounting

  • 파일 시스템은 프로세스들에 의해 사용되기 전에 마운트 되어야 한다.
  • 파일 시스템 마운팅 과정
    1. 운영체제에게 디바이스 이름과 파일 시스템을 부착할 수 있는 파일 구조내의 위치(마운트 포인트)가 주어지고 마운트 포인트는 마운트 되는 파일 시스템이 부착될 비어 있는 디렉토리이다.
    2. 다음에 운영체제는 디바이스가 유효한 파일 시스템을 포함하는지 확인한다. 그 과정은 디바이스 드라이버가 디바이스 디렉터리를 읽고, 디렉터리가 유효한 포맷을 가지고 있는지 확인하도록 요청함으로써 이루어진다.
    3. 운영체제는 파일 시스템이 지정된 마운트 포인트에 장착되었음을 디렉토리 구조에 기록한다. 이 기법은 운영체제가 디렉토리 구조를 순회하고 파일 시스템을 적절히 교체할 수 있게 한다.

5. File Sharing

  • 파일 공유는 공동 작업을 원하거나 결과를 얻기 위해 요구되는 노력을 줄이기 원하는 사용자에게 중요하다.

A. Multiple Users

  • 디렉터리 구조가 사용자의 파일 공유를 허용한다면, 시스템은 파일 공유를 중재해야 한다.
  • 이러한 파일 공유와 보호를 위해, 시스템은 파일과 디렉터리에 대해 단일 사용자 시스템보다 더 많은 속성을 가져야 한다.
  • 주어진 파일 또는 디렉터리의 소유자와 그룹은 파일 속성들과 같이 저장되고 어떤 사용자나 그룹이 파일 연산을 요구할때 그 요청 한 사용자의 ID를 파일 소유자 속성과 비교한 뒤 요청을 들어줄지 말지 결정한다.

B. Remote File Systems

  • WWW(World Wide Web)
  • FTP
  • DFS(Distributed File System)

C. Consistency Sementics

6. Protection

A. Types of Access

  • 보호 기법은 가능한 파일 접근 유형을 제한 함으로써 통제된 접근을 제공한다.
  • 접근유형
    • 읽기
    • 쓰기
    • 실행
    • 추가
    • 삭제
    • 리스트

B. Access Control

  • 사용자의 신원에 따라 특정 파일에 대한 접근 허용 여부를 결정하는 것으로 각 파일과 디렉터리에 접근 제어 리스트(access control list)를 연관해 두는 것이다.
  • 접근 리스트의 길이를 간결하게 하기 위해서 많은 시스템은 모든 사용자들을 세가지 부류로 분류한다.( 소유자, 그룹, 모든 사람)

C. Other Protection Approaches

  • 암호를 요구하는 방법
post-custom-banner

0개의 댓글