[CS : OS] 파일 시스템

2021. 5. 26. 09:46CS 스터디

파일 시스템

파일: 의미 있는 정보를 담는 논리적인 단위, 레코드 혹은 블록 단위로 보조 기억장치에 저장

 

파일 시스템 등장 배경

파일은 정보를 저장할 수 있는 기억 장소 공간이 디스크에 할당되어 있으며 디스크에 존재하는 다른 파일들과 구별할 수 있는 고유의 이름이 존재한다. 디스크에 저장된 파일은 프로세스가 수행을 완료하고 파괴된 후에라도 여전히 남아있게 된다. 이렇게 저장되는 데이터가 점점 많아지면서 그 데이터를 관리하지 않으면 파일을 읽고 쓰는데 많은 자원을 사용하게 되고, 다른 작업에 부하가 걸리게 된다. 그래서 파일 시스템이 효율적으로 파일을 관리할 필요가 생겼다.

 

파일 시스템의 종류

1. FAT(File Allocation Table)

: 파일을 할당한 정보를 테이블로 표현한 것이다. 구조가 간단하여 현재에도 많이 사용되고 있다. Reserved Area, FAT Area, DATA Area로 구성되어 있다.

 

2. NTFS(New Technology File System)

: 현재 윈도우에서 흔히 사용하는 파일 시스템이다. VBR(Volume Boot Record), MFT(Master File Table), DATA Area로 구성되어 있다.

 

3. Ext(Extended File System)

: Ext는 리눅스에서 사용되는 파일 시스템이다. Ext, Ext2, Ext3 등 숫자가 높을수록 더 나중에 나온 것이며 현재는 Ext3가 보편적으로 사용되고 있다.

 

파일 시스템의 특징

1) kernel 영역에서 동작

2) 파일 CRUD 기능을 원활하게 수행하기 위한 목적

3) 계층적 directory 구조를 가진다.

4) 디스크 파티션 별로 하나씩 둘 수 있음

 

접근 방법

1) 순차 접근(Sequential Access)

: 가장 간단한 접근 방법이며 파일의 정보가 레코드 순서대로 차례차례 처리된다. 읽기는 파일의 다음 부분부터 차례로 읽어 나가며 자동적으로 현재 위치를 추적하는 파일 포인터(offset)가 자동으로 증가 된다. 쓰기 작업은 파일의 끝에 추가하며 새로운 파일의 끝으로 파일 포인터가 이동한다. Offset을 맨 앞이나 맨 뒤로 옮길 수도 있고, n개의 레코드만큼 앞뒤로 건너뛸 수도 있다.

2) 직접 접근(Direct Access)

: 직접 접근을 위해서 파일은 고정 길이의 논리 레코드의 집합으로 정의되고 직접 접근 파일은 어떠한 블록이라도 직접 접근할 수 있다. 직접 접근 파일에는 읽거나 쓰기의 순서에 제약이 없다. 직접 접근 파일은 대규모의 정보를 즉각적으로 접근하는 데 아주 유용하며, 대규모 DB가 이러한 유형이다.

 

3) 기타 접근

: 파일에서 레코드를 찾기 위해서 먼저 이 색인부터 찾아 그에 대응하는 포인터를 얻는다. 그런 다음 그 포인터를 사용하여 파일에 직접 접근하여 원하는 레코드를 찾는다. 크기가 큰 파일을 입출력 탐색할 수 있게 도와주는 방법이다.

 

 

� Directory Disk 구조

1) 1단계 Directory

: 모든 파일이 Directory 밑에 있기 때문에 지원하기 쉽고 이해하기도 쉽다. 그러나 파일이 많아지거나 다수의 사용자가 사용하는 시스템에서는 심각한 제약을 가지고 있다.

2) 2단계 Directory

: 각 사용자는 자신만의 파일 Directory를 가진다. 이 구조는 사용자들을 서로 격리시킬 수 있다. 하지만 협력 작업에 있어서는 이 구조가 단점이 된다.

3) Tree 구조 Directory

: 사용자들이 자신의 Sub Directory를 만들어서 파일을 구성할 수 있게 된다. 트리 구조는 하나의 루트 Directory를 가지며 시스템의 모든 파일은 고유한 경로 이름을 가지게 된다. 또한 비트가 0인지 1인지를 통해 일반 파일인지 Directory 파일인지를 구분한다.

4) Graph 구조 Directory

: 순환이 발생하지 않도록 하위 디렉터리가 아닌 파일에 대한 링크만 허용하거나, Garbage Collection을 이용해 전체 파일 시스템을 순회하고 접근 가능한 모든 것을 표시한다.

 

'CS 스터디' 카테고리의 다른 글

[CS : DB] SQL 개요  (0) 2022.01.18
[CS : WEB] OAuth & JWT(JSON Web Token)  (0) 2021.06.06
[CS : OS] 메모리  (0) 2021.05.24
[CS : OS] 페이지 교체 알고리즘  (0) 2021.05.24
[CS : OS] 페이징과 세그먼테이션  (0) 2021.05.23