본문 바로가기

Dev.Basic/운영체제

[OS] 10-2. File System II

Chapter 10-2. File System II - File System Implementation

Allocation of File Data in Disk

파일은 크기가 균일하지 않다는 특징을 가지고 있다.

그래서 파일을 동일한 크기 단위은 sector로 나누어 저장을 한다.

디스크에 파일을 저장하는 방법은 크게 3가지가 존재한다.

메모리 관리 기법 중 paging 기법과 비슷하다.



Contiguous Allocation ( 연속 할당 )

하나의 파일이 디스크 상에 연속해서 저장되는 방법으로, 나누어진 각 블록들이 연속된 번호를 부여받아 저장된다.

발생하게 되는 단점

external fragmentation가 발생하게 된다.

File Growth is dificult.

파일의 크기는 유동적이다. 이 때, 파일의 크기가 커질 때 제약이 있게 된다.

파일 생성 시 (첫 Allocation 시) 얼마나 큰 hole을 배당할 것인지에 대한 문제가 발생하는 것이다.

growth를 가능하게 하면 할 수록, internal fragmentation 문제가 커지게 된다.


장점

빠른 입출력(fast I/O)

대부분의 접근 시간은 헤더가 움직이면서 읽어들이는 시간이다.

한 번의 seek/rotation으로 많은 바이트를 한 번에 transfer할 수 있다.

(모두 연속해서 붙어 있으므로 추가적인 탐색 비용이 소요되지 않는다.)

때문에 Realtime file용으로,

또는, 이미 run 중이던  process의 swapping용으로 사용된다.




Linked Allocation ( 연결 할당 )

말 그대로 sector들이 각각 node가 되어 Linked List structure를 취하면서 파일을 저장한다.


장점

External fragmentation 문제를 해결할 수 있다.


하지만 발생하게 되는 단점(Linked list의 문제점과 비슷하다.)

Direct Access가 불가능하다. (처음부터 읽어나가야하기 때문에)

Reliability 문제

어느 한 sector가 고장나게 되면(bad sector) 그 다음 sector로 접근할 수 없게 된다.

Pointer를 위한 공간이 필요하므로 공간 효율성을 떨어뜨리게 된다.(512byte/sector + 4byte/pointer)


이 문제점을 보완하기 위해 변형시켰다.

FAT(File Allocation Table)이 그것이다.

FAT는 pointer를 별도의 공간에 저장하여 reliability와 공간 비효율성 문제를 해결할 수 있다.




Indexed Allocation ( 인덱스를 이용한 할당 )

directory에는 index 값을 갖고 있는 블럭 하나만 가리키는 값만 갖고 있는다.

그 블럭에는 자기 자신 블럭 기준으로 index 값을 저장한다.

장점

linked allocation 방법과 마찬가지로 external fragmentation이 발생하지 않는다.

Direct Access도 가능하다.


하지만 단점도 존재한다.

small file의 경우, 공간이 낭비된다. (실제로 많은 file들이 작다.)

파일의 크기가 너무 큰 경우 ( Too large file의 경우 ), 하나의 block 으로  index를 저장하기에 부족하다.


여러 해결방안들이 존재한다.

크기가 큰 파일을 저장하기 위해서, linked scheme을 이용한다.

index block을 여러 개 두는 것을 말한다.

block의 마지막에 다음 index box를 가리키는 값을 설정해둠으로써, index box끼리 연결해준다.

(multi-level index)




Chapter 10-2. 끝

이 포스팅은 이화여대 반효경 교수님 강의를 듣고 요약한 내용을 담고 있습니다.



'Dev.Basic > 운영체제' 카테고리의 다른 글

[OS] 10-4. File System IV  (0) 2016.06.18
[OS] 10-3. File System III  (0) 2016.06.17
[OS] 10-1. File System  (2) 2016.06.15
[OS] 9-3. Virtual Memory III  (0) 2016.06.14
[OS] 9-2. Virtual Memory II  (0) 2016.06.13