관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

파일 시스템 3 - 파일 시스템 2 : 파일 시스템 살펴보기 본문

알고리즘 및 자료 관리/컴퓨터 구조 & 운영체제

파일 시스템 3 - 파일 시스템 2 : 파일 시스템 살펴보기

huenuri 2024. 10. 19. 04:25

운영체제 마지막 공부가 될 것 같다. 이어서 파일 시스템 학습을 진행해보겠다.


 

 

 

파일 시스템 살펴보기

다양한 파일 시스템이 있지만 여러 전공서에서 공통으로 소개하는 파일 시스템은 크게 두 가지이다. 하나는 USB 메모리, SD 카드 등의 저용량 저장 장치에서 사용되는 FAT 파일 시스템이고, 다른 하나는 유닉스 계열 운영체제이서 사용되는 유닉스 파일 시스템이다.

 

이 그림은 연결 할당을 단순화한 그림이다. 가령 파일 a가 네 개의 블록으로 이루어져 있고 a를 구성하는 데이터는 4, 8, 3, 5번 블록에 걸쳐 저장되었다고 해보자. 4번 블록이 8번을, 8번 블록이 3번을 가리키고 있다. 이런 방식은 임의 접근의 성능이 좋지 못하고, 이들 중 하나라도 문제가 발생하면 이후의 블록에는 접근할 수 없다.

하지만 각 블록에 포함된 다음 블록의 주소들을 한데 모아 테이블 형태로 관리하면 앞서 언급한 단점ㄴ들을 상당 부분 해소할 수 있다.

 

 

위의 FAT를 보라. 파일의 첫번째 블록 주소(4번 블록)만 알면 파일의 데이터가 담긴 모든 블록에 접근할 수 있다. 그래서 디렉터리 엔트리에는 파일 이름과 더불어 파일의 첫 번째 블록 주소가 명시된다.

빈 공간은 아직 할당되지 않았음을 의미한다.

 

FAT는 MS-DOS에서 사용되었고 최근까지 USB 메모리, SD 카드와 같은 저용량 저장 장치용 파일 시스템으로 많이 이용되고 있다. FAT 파일 시스템에서 FAT는 파티션의 앞부분에 만들어진다. 다음 그림은 FAT 파일 시스템을 사용하는 파티션을 간략화한 도식도이다. 하드디스크의 한 파티션을 FAT 파일 시스템으로 포맷하면 해당 파티션이 다음과 같이 구성된다고 이해하면 된다.

 

 

 

FAT 영역에 FAT가 저장되고, 뒤이어 루트 디렉터리가 저장되는 영역이 있으며, 그 뒤에 서브 디렉터리와 파일들을 위한 영역이 있다.

FAT는 하드 디스크의 파티션의 시작 부분에 있지만, 실항하는 도중 FAT가 메모리에 캐시될 수 있다. FAT가 메모리에 적재된 채 실행되면 기존 연결 할당보다 다음 블록을 찾는 속도가 매우 빨라지고, 결과적으로 앞서 설명한 연결 할당 방식보다 임의 접근에도 유리해진다. 즉, FAT가 메모리에 적재된채 실행되면 임의 접근의 성능이 개선된다.

 

 

FAT 파일 시스템에서의 디렉터티를 이와 같은 형식으로 블록에 저장된다.

 

이제 다음과 같은 디렉터리 구조를이루는 FAT 파일 시스템에서 파일을 읽는 과정을 살펴보겠다.

 

 

 

 

 

위 디렉터리 구조는 파티션 내에 다음 그림과 같이 저장된다고 가정해보겠다. 

 

이제 /home/minchul/a.ch.에 접근해보자. 루트 디렉터리에서 home 디텍터리, minchul 디렉터리, FAT 영역 순으로 접근하면 된다.


 

 

 

 

 

i--node의 크기는 유한하다. 가본적으로 15개의 블록 주소를 저장할 수 있기 때문에 i-node 하나는 15개의 블록을 차지하는 파일까지 가리킬 수 있다.

하지만 블록을 20개, 30개, 그 이상 차지하는 큰 파일도 있을 것이다. 이 경우 i-node 하나만으로는 파일의 데이터 목록을 모두 가리킬 수 없다. 이러한 문제를 다음과 같이 해결한다.

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이런 식으로 유닉스 시스템으로 파일을 찾아가는 과정을 단계별로 볼 수 있다.

 

이로써 파일 시스템의 이론적인 내용과 더블어 실제 파일 시스템 모습까지 살펴보았다. 파일 시스템을 아우르는 개념은 방대하다. 그래서 여기써 다루지 않은 다양한 파일 시스템이 있다. 

이외에도 알면 좋은 흥미로운 파일 시스템이 많다. 대표적으로 윈도우 운영체제에서 사용되는 NT 파일시스템(NTFFS), 리눅스 운영체제에서 사용되는 ext 파일 시스템 등이 있다. 


 

 

 

단원 마무리하기

 

 

이 문제는 답이 없는줄 알았다. 근데 알고보니 풀이가 잘못된 거였다. 연결할당은 파일에 보조기억장치에 파일을 연속적으로 할당하는 방식이 연결할당이라고 써 있는데 연결이 아니고 연속할당이다. 그러니까 답은 2번이 된다.

 

 

 

 

FAT 파일 시스템은 파일은 다음 블록 주소를 블록이 아닌 FAT에 명시한다.


 

 

학습을 마치고

어쨌거나 컴퓨터 구조와 운영체제에 대한 공부를 모두 마쳤다. 어제 여기까지 다 하려고 했는데 너무 졸려서 하지 못하고 새벽에 일어나서 마무리해본다.

그동안 5일 동안 이 과목을 처음부터 끝까지 다 공부하느라 무척 수고가 많았다. 이제 어떤 공부를 할지 고민해보면서 생각해보려고 한다. 지난번에 이틀 동안 참여한 컨퍼런스 강의를 정리할지 아니면 하다가 중단했던 딥러닝 공부를 끝마칠지 생각해봐야겠다.