seegongsik
운영체제

어떻게 파일 시스템: 평평한 디스크에 씌운 나무 모양 환상

지난 레슨에서 드라이버 덕분에 디스크 같은 장치와도 대화하게 되었다. 그런데 디스크 속을 열어 보면 파일도 폴더도 없고, 번호만 붙은 칸이 끝없이 늘어서 있을 뿐이에요. 이 평평한 칸의 바다에서 내 사진 한 장을 어떻게 찾아낼까?

01

디스크의 맨얼굴은 번호 붙은 칸이다

우리는 화면에서 파일을 아이콘으로 보고, 폴더를 열어 그 안의 또 다른 폴더를 본다. 하지만 디스크 자체에는 그런 것이 없다.
디스크는 사실 똑같이 생긴 칸이 0번, 1번, 2번처럼 번호 순서대로 평평하게 늘어선 거대한 보관함이다. 칸 하나하나를 블록이라고 부른다.
블록에는 데이터 조각이 들어가지만, 어떤 칸이 무슨 파일인지, 이름이 무엇인지는 디스크 자신이 전혀 모른다. 번호와 데이터, 그것이 전부예요.

디스크 · 원본 블록
번호와 데이터뿐. 이름도 폴더도 없음.

칸을 누르면 데이터가 들어간다. 칸에는 번호만 있고 이름도 폴더도 없다. 이것이 디스크의 맨얼굴이에요.

칸은 번호로만 구분되고 내용물끼리는 아무 연결도 없다. 큰 파일은 칸 하나에 다 들어가지 않고, 빈칸도 여기저기 흩어져 있다.
그러면 파일 하나가 여러 칸에 쪼개져 들어가야 할 텐데, 흩어진 조각을 나중에 어떻게 다시 모을까?
이것이 운영체제가 풀어야 할 첫 숙제예요.

02

파일은 흩어진 블록을 묶는 이름표와 지도다

해결책은 의외로 단순하다. 운영체제가 '사진.jpg라는 이름의 파일은 3번, 7번, 12번 칸에 이 순서로 들어 있다'는 작은 메모를 하나 둔다. 이 메모가 바로 지도다.
이름을 주면 운영체제는 지도를 펼쳐 흩어진 칸을 차례로 찾아가 조각을 모아 온다.
그러니까 파일은 사실 두 가지의 합이에요. 하나는 칸에 흩어진 데이터 조각들이고, 다른 하나는 그것을 이름으로 묶어 주는 지도다. 우리가 더블클릭하는 것은 이 지도이고, 디스크는 지도가 가리키는 칸을 읽어 줄 뿐이에요.

이름표를 눌러 지도 따라가기
0
1
2
3 ▬
4
5
6
7 ▬
8
9
10
11

이름표를 누르면 지도를 따라 흩어진 칸(3,7,12)이 차례로 모여 하나의 파일이 된다.

지도 한 장이 흩어진 칸을 하나의 파일로 묶어 주었다. 덕분에 우리는 칸 번호를 몰라도 이름만으로 파일을 부를 수 있다.
그런데 파일이 한두 개가 아니라 수천 개라면 이름표가 수천 장 쌓여 다시 막막해진다.
이 많은 이름표를 정리할 방법이 필요하다. 이제 폴더가 나설 차례예요.

03

폴더는 파일을 담는 또 하나의 파일이다

폴더라고 하면 파일과 전혀 다른 무엇처럼 들리지만, 사실 폴더도 그냥 또 하나의 파일이다. 다만 담긴 내용이 특별하다.
보통 파일은 사진이나 글자를 담지만, 폴더라는 파일은 '이 안에 든 파일들의 이름표 목록'을 담는다. 그래서 폴더를 연다는 것은 그 목록을 읽어 어떤 이름표가 들어 있는지 보는 일이에요.
폴더 안에 또 폴더를 넣을 수도 있다. 그러면 가지가 갈라지는 나무, 곧 트리 모양이 생긴다. 맨 위 뿌리에서 시작해 가지를 타고 내려가면 원하는 파일에 닿는다.

▾ 루트 /
▸ photos/
▸ docs/
폴더를 눌러 펼치기

폴더를 누르면 그 안의 파일과 하위 폴더가 펼쳐진다. 뿌리에서 가지를 타고 원하는 파일까지 따라갈 수 있어요.

평평했던 칸의 바다 위에 이제 위아래로 갈라지는 깔끔한 나무가 섰다. 폴더가 또 다른 파일일 뿐이라서, 운영체제는 따로 새로운 장치를 만들지 않고 같은 파일 개념만으로 정리 구조를 세운 것이다.
그런데 궁금한 것이 하나 남는다. 이렇게 만든 파일을 지우면 디스크에서 그 데이터가 정말로 바로 사라질까?
다음 단계에서 그 비밀을 살짝 들춰 봐요.

04

지운다는 것은 지도만 지우는 일이다

직관으로는 파일을 지우면 디스크에서 데이터가 싹 사라질 것 같다. 그런데 운영체제는 보통 그렇게 하지 않는다. 데이터가 든 칸을 하나하나 깨끗이 비우는 데는 시간이 오래 걸리기 때문이다.
그래서 빨리 끝내려고 이름표와 지도만 지우고 칸 안의 데이터는 그대로 둔다. 대신 그 칸에 '이제 비었음, 다시 써도 됨'이라고 표시만 해 둔다.
지도가 사라지면 그 데이터로 가는 길이 끊기니 우리 눈에는 파일이 없어진 것처럼 보여요. 하지만 칸 안의 내용은 아직 그 자리에 남아 있다.

draft.txt ▸ 4,8
4 ▬
8 ▬

파일을 지우면 이름표와 지도는 흐려지지만(끊긴 길) 칸 속 데이터는 자리에 남는다. 새 파일이 그 칸을 덮어쓸 때 비로소 사라져요.

그래서 가끔 복구 도구가 지운 파일을 되살리기도 한다. 지도만 다시 찾아 주면 자리에 남아 있던 칸들을 도로 이어 붙일 수 있기 때문이다. 반대로 새 파일이 그 칸들을 덮어쓰고 나면 원래 데이터는 영영 사라진다. 요즘 쓰는 반도체 저장장치는 비운 칸을 곧 정리해 버리기도 해서 되살리기가 더 어렵다.
결국 삭제의 핵심은 데이터를 지우는 것이 아니라 데이터로 가는 지도를 지우는 일이었다. 파일도 폴더도 삭제도 모두 지도와 이름표라는 한 가지 아이디어 위에 서 있는 셈이에요.

05

평평한 디스크 위에 씌운 나무 모양 환상

한 걸음 물러나 전체를 보자. 디스크의 진짜 모습은 번호 붙은 평평한 칸들이었다. 그 위에 운영체제가 세 가지 마법을 부렸다.
첫째, 이름표와 지도로 흩어진 칸을 하나의 파일로 묶었다. 둘째, 파일을 담는 또 다른 파일로 폴더를 만들어 트리를 세웠다. 셋째, 지울 때는 데이터가 아니라 지도를 지웠다.
이 세 가지 덕분에 우리는 칸 번호 따위를 평생 몰라도 이름과 폴더만으로 편하게 파일을 다룰 수 있어요.

1을 눌러 시작

세 장을 차례로 누르면 평평한 블록에서 이름표로 묶인 파일로, 다시 폴더 트리로 환상이 쌓이는 과정이 한눈에 정리된다.

가상 메모리가 진짜보다 큰 기억을 보여 주었듯, 파일 시스템은 평평한 칸을 잘 정돈된 나무로 보여 주는 환상이에요. 진짜는 단순하고, 편리함은 운영체제가 얹어 준 것이다.
그런데 이 깔끔한 트리를 컴퓨터 한 대에서 여러 사람이 함께 쓴다면, 아무나 남의 파일을 열고 지워도 괜찮을까? 다음 레슨에서는 누가 무엇을 읽고, 쓰고, 실행할 수 있는지, 그 질서를 지키는 권한 이야기를 해요.

한 줄 정리디스크의 맨얼굴은 번호 붙은 평평한 칸(블록)들이다. 운영체제는 그 위에 이름표와 지도를 얹어 흩어진 블록을 하나의 파일로 묶고, 파일을 담는 또 다른 파일로 폴더(트리)를 만든다. 파일을 지울 때도 보통은 지도만 지우고 데이터는 자리에 남겨 둔다. 우리가 보는 깔끔한 파일과 폴더는 평평한 디스크 위에 운영체제가 씌운 잘 짜인 환상이에요.
← 운영체제
이 페이지가 도움 됐다면 후원하기