관리 메뉴

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

파일 시스템 2 - 파일 시스템 1 : 파티셔닝과 포매팅 및 파일 할당 방법 본문

알고리즘 및 자료 관리/알고리즘 & 코딩테스트

파일 시스템 2 - 파일 시스템 1 : 파티셔닝과 포매팅 및 파일 할당 방법

huenuri 2024. 10. 18. 19:36

드디어 마지막 단원이다. 여기까지 오느라 정말 수고가 많았다. 오늘은 그런 내게 잘했다고 말해주고 싶었다. 그럼 바로 이어서 공부를 시작해볼 것이다.

앞서 학습한 파일과 디렉터리가 보조기억장치에 저장되며, 파일 시스템은 이들이 어떻게 접근하는지 학습해보겠다.

 

 

파일 시스템에는 다양한 종류가 있고, 하나의 컴퓨터에서 여러 파일 시스템을 사용할 수 있다.


 

 

 

파티셔닝과 포매팅

 

커다란 서랍 안에 마구잡이로 물건들을 보관하면 필요한 물건을 정돈하는 게 쉽지 않다.

 

하지만 서랍 안에 칸막이를 설치하여 영역을 나무면 물건들을 정리하기가 조금 더 수월하다. 이렇게 칸막이로 영역을 나누는 작업이 파티셔닝이다. 파티셔닝 작업을 통해 나누어진 영역 하나하나를 파티션이라고 한다.

 

 

검색창에 '하드 디스크 파티션 만들기 및 포맷'을 입력하면 이처럼 컴퓨터 내의 보조기억장치가 어떻게 파티셔닝되어 운영되는지 한눈에 볼 수 있다.

포맷하는 작업, 즉 포매팅은 저장 장치를 완전히 삭제하는 것으로 알고 있는 사람들이 많지만, 사실 이는 정확한 표현이라고 보기 어렵다.

 

 

 

 

 

포매팅까지 완료하여 파일 시스템을 설정했다면 이제 파일과 디렉터리를 생성할 수 있다. 파티셔녕과 포매팅은 동시에 진행되는 경우가 많고, 이미 포매팅까지 완료되어 판매되는 경우도 많기 때문에 개념에 익숙하지 않을 수 있다. 하지만 저장 장치를 관리하거나 운영체제를 설치하는 과정에서 파티셔닝과 포매팅은 자주 접하게 될 키워드니 기억하는 것이 좋다.


 

 

 

 

파일 할당 방법

하드 디스크의 가장 작은 저장 단위는 섹터이지만, 운영체제는 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 블록 단위로 파일과 디렉터리를 관리한다. 파일 시스템이 모든 섹터를 관리하기에는 개수가 너무 많고 크기고 작기 때문이다.

 

다음과 같이 하드 디스크 내에 여러 블록이 있다고 해보자. 블록 안에 적힌 번호는 블록의 위치를 식별해주는 주소이다. 이 블록에 우리가 사용하는 파일을 할당해야 한다. 크기가 작은 파일은 적은 수의 블록에 걸쳐 저장될 것이고, 크기가 큰 파일은 여러 블록에 걸쳐 저장된다.

 

연속 할당과 불연속 할당 중 오늘날까지 사용되는 방식은 불연속 할당이다.

 

 

 

가령 블록을 세 개, 두 개, 다섯 개 차지하는 정도의 크기를 가진 파일 a, b, c가 있을 때 이 파일들은 다음과 같이 연속적으로 할당된다.

 

연속할당 방식은 파일을 그저 연속적으로 저장하는 방식이기에 구현이 단순하다는 장점이 있다.

 

하드 디스크의 블록들을 일렬로 쭉 나열한 후 파일들을 연속 할당한 그림이다.

 

할당할 수 있는 블록은 11개가 남지만, 크기가 블록 7개 이상을 사용하는 파일은 할당할 수 없다. 이것이 외부 단편화이다.


 

 

 

 

4개의 블록으로 구성된 a라는 파일이 있고 10번, 5번, 13번, 2번 블록에 저장되었다고 가정해보겠다. 각 블록 끝에 다음 블록의 주소를 기록한다. 마지막 블록에는 다음 블록이 없다는 특별한 표시자를 기록하는데, 이 예제에서는 -1을 사용했다.

 

 

디렉터리의 엔트리만 보아도 어떤 파일이 어디에 저장되어 있는지 알 수 있다.

 

 

 

 

첫번째 블록부터 접근하여 차례로 읽으므로 내 임의의 위치에 접근 하는 속도, 즉 임의 접근 속도가 매우 느리다. 위 예시에서는 네 개의 블록만을 사용하는 작은 파일로 예로 들었으나, 실제로는 크기가 큰 파일들도 얼마든지 많다. 

하나의 블록 안에 파일 데이터와 다음 블록 주소가 모두 포함되어 있다 보니, 하드웨어 고장이나 오류로 인해 파일을 이루는 블록에 하나라도 문제가 발생하면 그 블록 이후에 접근 할 수 없다는 것이다.

 

오늘날에는 위 내용을 그대로 구현하기보다 이를 조금 변형해서 사용한다. 연결 할당을 변형한 대표적인 파일 시스템이 오늘날까지도 많이 사용하는 FAT 파일 시스템이다.


 

 

 

예를 들어 파일 A의 색인 블록은 4번 블록이고, 파일 A의 데이터는 7번, 13번, 11번 블록에 저장되어 있다고 가정해보자. 4번 블록 안에는 파일 a를 구성하는 블록들의 주소인 7, 13, 11이 적혀 있다. 파일 a에 순차적으로 접근하고 싶다면 색인 블록에 저장된 주소에 차례대로 접근하면 된다.

 

색인 할당은 연결 할당과는 달리 파일 내 임의의 위치에 접근하기 쉽다. 색인 블록 안에 파일을 구성하는 데이터 블록 주소가 있으므로 색인 블록만 알면 해당 파일 데이터에 접근할 수 있다. 그렇기에 색인 할당을 사용하는 파일 시스템에서는 디렉터리 인트리에 파일 이름과 더불어 색인 블록 주소를 명시한다.

 

 

색인 할당을 기반으로 만든 파일 시스템이 유닉스 파일 시스템이다.

 


 

 

 

 

학습을 마치고

아직 파일 시스템의 내용이 절반 정도 남아있다. 마지막 단원이라 그런지 강의도 가장 길고 분량도 정말 많다. 그래도 천천히 공부하며 이해하고 넘어가니 정말 좋았다.

저녁식사 전에 모두 마치고 싶었는데 이후에 진행해야 할 것 같다.