파일 시스템

강준호·2021년 12월 6일
0

운영체제

목록 보기
12/13

File 개념

  • 바이트의 집합체(Array of Bytes)
  • Address Space와 비교

File Attributes

Metadata

  • 어떤 정보를 포함하고 있는 데이터
  • 서로 다른 바이트들의 집합체를 구별해주는 역할

File Operations

  • 운영체제 레벨에서 파일과 관련해서 할 수 있는 시스템콜

File Access Method

순차 접근

  • 파일에 있는 정보에 대한 접근은 Record의 순서대로 이루어짐
  • 내가 원하는 위치로 갈 수 없어

임의 접근(Random Access)

  • 파일의 어떠한 위치라도 바로 접근하여 Read나 Write를 수행

Directory 구조 개념

전형적인 파일 시스템의 구성

-파일 시스템은 일반적으로 여러 계층으로 나누어서 구성

계층으로 나누는 이유

  • 파일 시스템을 구현하고자 하는 장치가 다양할 수 있음
  • 한 시스템에 1개 이상의 파일 시스템을 사용 가능하게 함
  • 계층화된 구성을 통해서 파일 시스템에 유연성을 제공

Mount

Directory Structures

  • 모든 파일들에 대한 정보를 가지는 집합체

Single-Level Directory

  • 모든 사용자에 대해서 하나의 단일 디렉토리

Two-Level Directory

  • 사용자마다 디렉토리를 분리

Tree-Structured Directories

  • 효율적인 탐색
  • 그루핑 특성

단점

  • 파일 공유하는게 안됨

Acyclic(이용)-Graph Directories

  • 트리 디렉토리의 파일 공유 불가의 대안
  • 둘 이상의 서로 다른 이름을 이용하여 파일이나 sub 디렉토리를 공유
    -방향성이 있음
  • Dangling Pointer가 생길 수 있음
    ex) 그림의 가장 밑 디렉토리 인 list를 삭제할 경우

General Graph Directory

  • 사이클이 없도록 보장함 => 사이클 디텍션 알고리즘으로 사이클 나오나 안나오나 계속 파악해야함. => 손실..
  • 링크를 파일로만 가능하도록 한다

File의 구현

Disk Block

  • 파일의 구현에 앞서 디스크 블락은 파일 시스템의 입출력 단위

  • 파일 구현에서는 파일의 내용을 담고있는 Data Block의 위치정보를 어떻게 저장할지 고려해야함

  • 운영체제마다 각기 다른 방식으로 파일의 데이터 블럭 정보를 관리함.

Contiguous Allocation

  • 프레임 Allocation에서의 Contiuous Allocation과 유사

장점

  • 구현 쉬움
  • 물리적으로 연속된 공간에 있어서 전체 파일을 통으로 읽을때 성능 굳굳

단점

  • 파일은 반드시 한번에 끝까지 기록되어야함
  • 운영체제에서 파일의 끝에 예비용 Block을 남겨놓을 경우 디스크 공간 낭비

Linked List Allocation

  • 디스크의 Block을 링크드 리스트로 구현하여, 파일의 데이터를 저장하도록 함

장점

  • 파일의 Data Block은 디스크의 어디든지 위치 가능
  • 공간의 낭비가 없음

단점

  • Random Access 불가능 -> 파일의 특정 위치를 찾기 위해서는 해당 파일의 시작 Node부터 찾아가야함

  • 다음 Data Block에 대한 Pointer로 인해 Data Block에서
    Data를 저장하는 공간이 반드시 2의 배수가 아닐 수 있음(포인터도 같이 저장해야해서) -> 대부분의 프로그램은 Read/Write 하는 데이터의 크기가 2의 배수 이기 때문에 성능 측면에서 안좋음...

  • Disk block pointer의 크기를 결정하는 요소는 번호 번호가 많을 수록 크기가 커짐

Linked List Allocation using an Index

  • 파일의 데이터에 관련된 Block을 하나의 Block에 모아둠
  • 파일의 데이터 블록 중 하나를 Index Block이라 하여 모든 데이터 블럭의 위치를 Index Block에서 알 수 있음

장점

  • Linked List Allocation 의 대안
  • 랜덤 Access 시 하나의 데이터 블락(Index Block)에서 찾아가고자 하는 Data Block의 위치를 알 수 있으므로, Linked List Allocation보다 빠르게 랜덤 Access 가능

단점

  • 최대 파일 크기가 고정됨
  • Index Block의 크기가 고정되어 있기 때문에, Index Block에서 수용할 수 있는 Disk Block에 대한 Pointer의 수가 한정되어 있기 때문

I-nodes(리눅스 방식)

  • 페이지테이블과 비슷하게 Index들을 테이블 형태로 관리함
  • 큰 Memory영역을 관리할 경우에 1-레벨 페이징 보다 멀티 레벨 페이징이 유리한것과 비슷

I-node의 구성요소

  • 파일에 대한 속성을 나타내는 필드
  • 작은 크기의 파일을 위한 Direct Index
  • 파일의 크기가 커짐에 따라서 요구되는 데이터 블럭의 Index들을 저장하기 위한 Index Table들
    ex)

Directory의 구현

  • 디렉토리를 표현하기 위한 자료구조
  • 파일 시스템의 파일 구현에 따라 Directory Entry를 구성하는 필드도 달라짐

=> 일반적인 디렉토리 Entry는 파일의 이름, 속성과 같은 정보가 저장되지만, I-node를 사용하는 파일시스템에서는 File Name과 I-node Number만이 저장됨.

Ms-Dos 디렉토리

  • Linked List Allocation을 사용중이라서 sequencial access 가능
  • 전부다 일일히 타고타고 확인해봐야함

UNIX

  • I-node 방식

Protection

  • 파일 보호하기위한 메카니즘
  • 저장된 정보에 부적절한 접근을 막는것

Acces List and Groups(Linux)

  • 접근 모드 : Read, Write,Execute
  • 사용자들의 레벨을 3가지로 나눔(owner, group,public)

0개의 댓글