열정 실천

File System : OS가 파일을 저장하는 법 본문

CS/OS

File System : OS가 파일을 저장하는 법

구운오니 2024. 11. 22. 22:03
728x90

파일 시스템은 데이터를 하드디스크, SSD, USB등 저장장치에 파일과 디렉터리로 조직화하여 저장하고 관리하는 방식이다. 각각의 파일에 대한 정보를 담고 있는 자료구조를 File Control Block이라고 하며 이는 리눅스에서 inode에 해당한다. 

 

 

- 블록 하나의 크기는 4KB

- 블록을 가리키는 주소는 4bytes

하나의 책임블럭이 가리킬 수 있는 블록의 수 4KB / 4 bytes = 2^10 = 1024개 

 

보통 한 파일의 inode에서 direct blocks pointer는 10-15개가 존재한다. 

 

single indirect가 저장가능한 데이터 크기 : 4KB X 1024 = 4MB

double indirect가 저장가능한 데이터 크기 : 4KB X 1024 X 1024 = 4GB

triple indirect가 저장가능한 데이터 크기 : 4KB X 1024  X 1024  X 1024 = 4TB

 

 

 

* 윈도우에서 사용하는 FS  :  NTFS

* 리눅스에서 사용하는 FS  :  ext4

 

 

 

파일에게 디스크 블록을 할당하는 4가지 방법!

1. Contiguous allocation

2. Linked allocation

3. File Allocation Table (FAT)

4. Indexed Allocation Method 

 

1. Contiguous allocation

- 파일이 블록의 한 위치에서 연속적으로 크기 만큼 블록을 할당한다. 

- 읽는 속도가 빠르고 임의 접근이 가능하지만 외부단편화가 많이 발생한다. 

 

2. Linked allocation 

- 파일이 블록의 한 위치에서 시작해서 링크드 리스트로 연결되어 있다. 

- 외부단편화가 없고, 디스크 이용률이 증가하지만, 임의접근이 어렵고, 링크가 하나 끊기면 뒤를 다 잃어버린다. 

 

3. File Allocation Table (FAT)

- 파일의 블록 위치 정보를 테이블로 관리하며, 임의 접근이 가능하다.

- 테이블이 커질수록 메모리 낭비가 발생하고, 속도가 느려질 수 있다.

 

 

4. Indexed Allocation Method 

- 각 파일에 인덱스 블록을 두어 모든 데이터 블록 위치를 저장한다.

- 임의 접근이 가능하지만, 추가적인 저장 공간이 필요하다.

 

 

 

 

 

남은 공간 관리 방법  Free-Space Management

 

1. 비트맵 활용

블록의 개수만큼 bit를 저장하는 배열이 있고 각각 빈 블럭(bit : 1), 사용 중인 블럭(bit :0)을 표시한다. 

배열 이용 : 접근이 빠르고, 이진 검색이 가능하다. 

 

2. 연결 리스트 활용

비어있는 블록의 번호를 linked list를 통해 저장한다. 

리스트 이용 : 크기 변동이 용이하고 중간에 값을 넣기 쉽다. 임의 접근은 안된다. 

 

728x90