오래 못 할 짓 하지 않기

[ 운영체제 ] 29. File 마무리 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 29. File 마무리

쫑알bot 2024. 6. 13. 18:17
728x90

Storage에 File을 저장해야하는데
떻게 해야 효율적으로 할 수 있을까?

3가지 방법이 있다.

 

● Contiguous Allocation

● Linked Allocation

● Indexed Allocation

 

Contiguous Allocation

 

각각의 파일이 연속적인 Block의 세트를 차지한다.

 

어떤 파일이 어느 정도의 크기가 필요한지를 나타내고

할당해주는 방식이다.

 

 

● 장점 :

최고의 Performance 

 

● 문제점 :

- File을 위한 공간 찾기

- File size 알아내기

- External Fragmentation

 

해결하기 위해서는 Compaction이 필요하다.

 

 


Linked Allocation

 

각각의 파일이 Block 단위로 Linked 되어있다.

 

특징 :

- 파일의 끝 = nil pointer

- External Fragementation 발생 X

 

- 새로운 Block이 필요하면 Free space management가 call된다.

 

- Block 들을 Clustering 해서 효율성 ↑ 했다.

 

단점 :

- Relaiability (의존성) 문제가 발생할 수도,

  ex) 포인터 꼬임 or 끊김 

 

- i번째 block을 보려고 할 때 처음부터 다 거쳐야 함

 

 

 

 



FAT

: File Allocation Table

  - Linked allocation의 단점인 i번째 Block에 접근이 바로 안 된다는 점을 해결하기 위해서 나옴

 

각각의 Link들마다 index가 있다.

이 Link에 대해서는 순서보다는 하나의 Block에 이러한 것을 담아둔다 정도로 생각하면 좋을 듯함.

 

이를 이용하여 만들 수 있는 할당 방법이 있다.

 

 

Linked Allocation

 

모든 파일은 Data block을 가리키는 Index block을 가진다.

따라서 해당 파일에 해당하는 Data block 에서 어떤 정보를 가지는지 알려주는 Table도 있음

 

필요한 Block들을 Start index Block에 순서대로 저장해두고 사용한다.  

 

특징 :

- Linked allocation의 단점인 Pointer가 흩뿌려져 있는 걸 해결한 방법

 

 


Unix file system

: 위에 있었던 방법을 섞어서 할 수 있다.

 

그냥 바로 저장하는 Block = direct blocks

 

 

 

 

 한 단계 Pointer로 감싸서 저장하는 Block = direct blocks

 

- 메모리가 충분치 않다면, 데이터 블록 주소들을 갖고있는 블록

만든다.

 

 

 

계속 하다보면 이렇게 이중 삼중으로 주소를 가리킨다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

순서대로 저장하는 거면 Linked가 좋긴하다. 

하지만 랜덤으로 찾아야 할 땐 별로임

 

Indexed 는 좀 복잡하다.

인덱스를 읽고, block을 읽어야해서 비추라고 함


DISK Structure

 

 

DISK는 RAID와 raw partition으로 나눌 수 있는데

 

- RAID는 failure를 막는다.

- raw는 파일 시스템 없이 사용 / 파일  시스템으로 포맷

 

Volume :  File System을 포함하는 Entity

각 볼륨은 Device dir 혹은 vol dir에 저장된다.

 

General - purpose file-system이랑 special purpose file-system들도 비슷한 숫자로 많다.

 


File System Mounting

: 파일은 Access되기 전에 Mount 되어야 한다.

 

 

https://sksstar.tistory.com/7

설명 잘해주심

 


Virtual File Systems

 

Open , Read , Write , Close 기능들이 다 있다.

 

 

 

 

- VFS 는 API를 사용해서 각기 다른 File System을 사용할 수 있다.

 

 

● 구현

Linux에서는 다음 4개의 Object를 사용한다.

 

→ inode , file , superblock , dentry

 

반드시 구현되어야 하는 Object들을 정의한다.

 

 

 

 

(출처)

한동대학교 고윤민교수님 - 운영체제