관리 메뉴

fatalite

OS - File System 본문

컴퓨터 공학/Operating System 운영체제

OS - File System

fataliteforu 2022. 12. 10. 13:18

Preface

일단 파일이란, 유저가 받아들이는 정보의 논리적 단위라고 할 수 있다.

 

I/O System과 Storage에서는 OS가 어떻게 그들을 다룰지를 배웠다면,

이번 챕터는 OS가 User에게 어떻게 Storage를 다루게 할지에 관한 이야기라고 할 수 있다.

 

크게, 두 가지로 나눌 수 있는데 

첫 번째는 File System Interface(유저 - OS 관점)이고

두 번째는 File System Implementation & File System Internal(OS - 하드웨어 혹은 Only OS 관점) 이다.

즉, 어떻게 논리적으로 보여줄지와, 그것을 어떻게 구현할지이다.

 

File System Interface

0. File

파일은 위에서 설명했던 내용을 숙지하고 있으면 된다.

 

1. File Attribute and Metadata

파일 속성 및 메타데이터는, 파일을 제외한 부가적인 정보를 담고 있다.

파일 속성에는 File name, timestamp, File identifer, ... , Location등이 존재한다. 

 

2. File Access

File을 읽는 방법에는

1. 순차적 접근

2. 랜덤 접근 (Index)

이 있다.

3. Directory 

디렉토리란, 윈도우에서 볼 수 있는 폴더와 같다고 생각하면 된다.

여러 개의 파일을 담고(Wrapping)있으며, 그 파일의 이름과 타임 스태프 등을 포함하고 있다.

디렉토리 또한 특수한 파일의 일종이라고 볼 수 있다. 

 

디렉토리 구조는 여러가지이다. 

1. 1단계 디렉토리 : 하나의 디렉토리 - 하나의 파일, 유저에 따라 디렉토리 구분이 불가능하다.

2. 2단계 디렉토리 : 유저 마다 디렉토리를 부여 받는다.

3. 트리 디렉토리 

4. 비순환(Acycle) 디렉토리 

5. 순환(Cycle) 디렉토리 가 존재한다.

 

 

4. File Operator

파일을 연산하는 시스템 콜이 존재한다.

이를 통해 파일의 이름을 바꾸거나, 생성 등이 가능하다.

예시로 open(), read(), create() 등의 시스템 콜이 있다.

C++로 fopen()과 같은 함수를 쓰면, 시스템 콜로 변환되어 실행되는 것이다.


File System Implementation and Internal

0. Layered Structure

파일 시스템은 레이어화 되어, 중복되는 코드가 없게 끔 하였다.

1에 가까울 수록 하드웨어에, 멀수록 사용자에게 가까운 레이어다.

Hardware

1. I/O Control : Device Driver, Interrupt Handler 등

2. Basic File System

3. File - Organization Module

4. Logical File System

Application

 

1. Implementation

1) In - memory 

- Wide system open file table

- Per-process open file table

- In memory Partition table

- In memory Directory Structure

 

2) On-Stroage

- Boot control block(in window, Boot Sector)

- Volume Control block(in unix, super block / in window, master file table)

- Bitmap block

- Directory Structure

- File Control block

- Root Directory

3) Buffers...


2. Mount File System


3. Allocate blocks for file

1. Contiguous Allocation

연속된 블록에 할당하는 방법이다. 

간단한 방법이지만, Hole이 많이 발생할 수 있다.그리고 Dynamic Allocator가 필요하다. 가상 메모리에서 다루었던 - Best fit, worst fit 등과 같은 알고리즘을 뜻한다.

 

2. Linked-List Allocation

링크드 리스트를 사용하는 것으로, FCB에는 처음 지점과 끝 지점만 갖고 있고,

블럭에 다음 블럭 포인터를 지니고 있다. 

 

링크드 리스트의 특성상, 랜덤 접근의 경우 O(N)의 복잡도를 지닌다는 걸 알 수 있다.

 

3. Indexed Allocation

하나의 블록에 인덱스를 몰아 넣는 것을 의미한다.

위에 단점을 없애주지만, Pointer의 개수가 많아지기 때문에 오버헤드가 발생한다.

이를 위해서 다양한 기법이 추가로 구현된다.

- Linked Scheme

- Multilevel Index

- Combine scheme

결합 기법은 UNIX에서 쓰이며, i-nodes에 15개의 노드를 유지하면서, 12개는 direct block을 가르키고, 3개는 indirect block을 의미하며, 1중, 2중, 3중 간접 블록을 의미한다.

'컴퓨터 공학 > Operating System 운영체제' 카테고리의 다른 글

Operating System - Mass Storage  (0) 2022.12.11
OS - Security 보안  (0) 2022.12.10
OS - Virtual Memory  (0) 2022.12.07
OS - Memory Management  (0) 2022.12.07