CS/OS

[운영체제] 리눅스의 파일 시스템

F12:) 2023. 11. 2. 00:15

이전 글에서 다뤘던 파일 시스템의 예제 중 하나인 리눅스에 대해서 알아봅시다.

 

   Address of Data Blocks

리눅스에서는 데이터 블록 할당 기법 중에 indexed allocation method를 사용합니다. indexed allocation method는 이전 글에서 설명했으므로, 해당 글을 참고해주시기 바랍니다.

 

우리는 이번 글에서 조금 더 메모리 용량에 관한 부분을 알아봅시다.

 

보통 데이터 block은 1개당 4kb입니다. 또한 리눅스에서의 file control block의 구조를 보고 하나의 file에 사용할 수 있는 최대 용량을 알아봅시다.

 

 

리눅스의 file contro block 형태입니다. 위에 것은 무시하고 direct block와 indirect block을 살펴봅시다.

 

말 뜻 그대로, direct block은 해당 위치에 바로 data block이 존재하는 것입니다.

indexed block은 data block 중에서도 실제로 data block의 index를 기록하는 data block이 있기 때문입니다.

 

 

따라서 10개의 direct block으로 우리는 4kb x 10 = 40kb의 저장 공간을 갖습니다.

여기서 single block을 갖게 된다면 저장 공간은 늘어납니다. single block이란 쉽게 말해서 한 번 이동하면 indexed block이 있다라는 것을 의미합니다.

 

single indirect가 하나 존재함으로써 4kb x 2^10 = 4MB가 됩니다.

그렇다면 double indirect는 4kb x 4kb x 4kb = 4GB이고, Triple indirect는 4TB가 됩니다.

 

즉, Linux에서 하나의 파일에 4TB + 4GB + 4MB + 40KB를 수용할 수 있습니다.

 

만약 이보다 더 큰 파일 크기를 요구한다면, 데이터 block의 기본 크기를 늘리기도 합니다. 또한 요즘 들어서는 direct block을 10개에서 12개까지 늘리게 됩니다.

 

 

   Linux Virtual File System

우리는 앞서 파일시스템이 매우 다양하다고 설명했습니다.

 

과거에 존재했던 파일 시스템 형태부터 현재로 오기까지 다양한 파일 시스템이 있을 것입니다. 그렇다면 이러한 파일 시스템은 read or write하는 방식은 달랐을 것이고 이를 위해 운영체제는 다양한 파일 시스템에 대해서 각기 다른 방식으로 작동해야합니다.

 

 

운영체제는 워낙 거대하고, 정교하니까(아마..?) 이러한 여러 경우들을 다룰 수 있을 것입니다. 하지만 유저가 파일 작업하는 프로그램을 짠다고 해봅시다. 그렇다면 유저는 지금까지 존재하는 모든 수많은 파일 시스템에 대한 경우를 다뤄서 프로그램을 개발해야할까요??

 

그렇지 않습니다. 다른 운영체제는 정확하지 않지만 적어도 리눅스에서는 virtual file system을 통해서 마치 interface 역할을 하는 시스템이 존재하기 때문이죠.

 

 

우리가 인터페이스를 구현하는 여러 구현체들을 상관하지 않고 인터페이스에 담겨있는 메서드를 호출하면 알아서 구현체의 메서드가 호출되는 것처럼, 이 virtual file system도 유저 입장에서 이러한 것을 고려하지 않고 system call이라는 인터페이스를 이용합니다.

 

 

우리는 단지 system call 중에서 open()이라는 것만 호출하면, 알아서 파일 시스템에 맞게 open을 할 수 있게 된느 것이죠. 이는 write나 다양한 system call에서도 마찬가지입니다.

 

 

즉, 우리는 system call에 적혀있는 메서드를 호출하면, OS가 알아서 실제 구현 메서드를 적용하게 된다는 것입니다.

'CS > OS' 카테고리의 다른 글

[운영체제] 인터럽트 처리  (0) 2023.11.11
[운영체제] 입출력 관리  (0) 2023.11.11
[운영체제] 파일 시스템  (1) 2023.10.28
[운영체제] 디렉토리  (1) 2023.10.28
[운영체제] File  (0) 2023.10.28