파일 시스템: 평평한 디스크에 씌운 나무 모양 환상
지난 강에서 드라이버 덕분에 디스크 같은 장치와도 대화하게 됐죠. 그런데 디스크 속을 열어 보면 파일도 폴더도 없어요. 번호만 붙은 칸이 끝없이 늘어서 있을 뿐. 이 평평한 칸의 바다에서 내 사진 한 장을 어떻게 찾아낼까요?
디스크의 맨얼굴: 그냥 번호 붙은 칸
우리는 화면에서 파일을 아이콘으로 보고, 폴더를 열어 그 안에 또 폴더를 봅니다. 하지만 디스크 자체에는 그런 게 없어요. 디스크는 사실 똑같이 생긴 칸이 0번, 1번, 2번 번호 순서대로 평평하게 늘어선 거대한 보관함일 뿐이에요. 칸 하나하나를 블록이라고 불러요. 블록 안에는 데이터 조각이 들어가지만, 어떤 칸이 무슨 파일인지, 이름은 무엇인지 디스크 자신은 전혀 몰라요. 그냥 번호와 데이터, 그게 전부입니다.
칸을 눌러 데이터를 넣어 보세요. 칸엔 번호만 있고 이름도 폴더도 없어요. 이게 디스크의 맨얼굴이에요.
눌러 보니 느낌이 오죠? 칸은 번호로만 구분되고, 내용물끼리 아무 연결도 없어요. 큰 파일은 칸 하나에 다 안 들어가고, 빈 칸도 여기저기 흩어져 있죠. 그러면 한 파일이 여러 칸에 쪼개져 들어가야 할 텐데, 흩어진 조각을 나중에 어떻게 다시 모을까요? 운영체제가 풀어야 할 첫 숙제입니다.
파일: 흩어진 블록을 묶는 이름표와 지도
해결책은 의외로 단순해요. 운영체제가 작은 메모를 하나 둡니다. "사진.jpg라는 이름의 파일은 3번, 7번, 12번 칸에, 이 순서로 들어 있다." 이 메모가 바로 지도예요. 이름을 주면 운영체제는 지도를 펼쳐 흩어진 칸을 순서대로 찾아가 조각을 모아 옵니다. 그러니까 파일이란 사실 두 가지의 합이에요. 하나는 칸에 흩어진 데이터 조각들, 다른 하나는 그걸 이름으로 묶어 주는 지도. 우리가 더블클릭하는 건 이 지도이고, 디스크는 지도가 가리키는 칸을 읽어 줄 뿐이죠.
이름표를 누르면 지도를 따라 흩어진 칸(3,7,12)이 순서대로 모여 하나의 파일이 됩니다. 흩어진 블록이 모여 파일이 되는 걸 보세요.
지도 한 장이 흩어진 칸을 하나의 파일로 묶어 줬어요. 덕분에 우리는 칸 번호를 몰라도 이름만으로 파일을 부를 수 있죠. 그런데 파일이 한두 개가 아니라 수천 개라면? 이름표가 수천 장 쌓여 또 막막해집니다. 이 많은 이름표를 정리할 방법이 필요해요. 다음 단계의 주인공, 폴더가 등장할 차례입니다.
폴더: 파일을 담는, 또 하나의 파일
폴더라고 하면 파일과 전혀 다른 무언가 같지만, 비밀을 말하자면 폴더도 그냥 또 하나의 파일이에요. 다만 그 안에 든 내용이 특별하죠. 보통 파일은 사진이나 글자를 담지만, 폴더라는 파일은 "이 안에 든 파일들의 이름표 목록"을 담아요. 그래서 폴더를 연다는 건, 그 목록을 읽어 어떤 이름표가 들어 있는지 보는 일이에요. 폴더 안에 또 폴더를 넣을 수도 있어요. 그러면 가지가 갈라지는 나무, 즉 트리 모양이 생깁니다. 맨 위 뿌리에서 시작해 가지를 타고 내려가면 원하는 파일에 닿죠.
폴더를 눌러 펼치면 그 안의 파일과 하위 폴더가 보여요. 뿌리에서 가지를 타고 원하는 파일까지 따라가 보세요.
보다시피 평평했던 칸의 바다 위에, 이제 위아래로 갈라지는 깔끔한 나무가 섰어요. 폴더가 또 다른 파일일 뿐이라는 사실 덕분에, 운영체제는 새 장치를 만들 필요 없이 같은 파일 개념만으로 정리 구조를 세운 거예요. 그런데 한 가지 궁금한 게 남죠. 이렇게 만든 파일을 우리가 삭제하면, 디스크에서 그 데이터가 정말로 즉시 사라질까요? 다음 단계에서 그 비밀을 살짝 들춰 봐요.
지운다는 건? 지도만 지우고 데이터는 남는다
직관적으로는 파일을 지우면 디스크에서 데이터가 싹 사라질 것 같죠. 그런데 운영체제는 보통 그렇게 하지 않아요. 데이터가 든 칸을 하나하나 깨끗이 비우는 건 시간이 오래 걸리거든요. 그래서 빠르게 끝내려고 이름표와 지도만 지우고, 칸 안의 데이터는 그대로 둡니다. 대신 그 칸을 "이제 비었음, 재사용 가능"이라고 표시만 해 두죠. 지도가 사라지면 그 데이터로 가는 길이 끊겨서, 우리 눈엔 파일이 없어진 것처럼 보여요. 하지만 칸 안의 내용은 아직 그 자리에 남아 있습니다.
파일을 누르고 삭제해 보세요. 이름표와 지도는 흐려지지만(끊긴 길) 칸 속 데이터는 자리에 남아요. 새 파일이 그 칸을 덮어쓸 때 비로소 사라집니다.
그래서 가끔 복구 도구가 지운 파일을 되살리기도 해요. 지도만 다시 찾아 주면, 자리에 남아 있던 칸들을 도로 이어 붙일 수 있으니까요. 반대로, 새 파일이 그 칸들을 덮어쓰고 나면 원래 데이터는 영영 사라집니다. 결국 삭제의 핵심은 데이터를 지우는 게 아니라 데이터로 가는 지도를 지우는 일이었어요. 여기까지 보면, 파일도 폴더도 삭제도 전부 지도와 이름표라는 한 가지 아이디어 위에 서 있다는 게 보이죠.
평평한 디스크 위에 씌운 나무 모양 환상
한 발 물러나 전체를 볼까요. 디스크의 진짜 모습은 번호 붙은 평평한 칸들이었어요. 그 위에 운영체제가 세 가지 마법을 부렸죠. 첫째, 이름표와 지도로 흩어진 칸을 하나의 파일로 묶었어요. 둘째, 파일을 담는 또 다른 파일로 폴더를 만들어 트리를 세웠어요. 셋째, 지울 땐 데이터가 아니라 지도를 지웠죠. 이 세 가지 덕분에 우리는 칸 번호 따위 평생 몰라도, 이름과 폴더만으로 편하게 파일을 다룰 수 있어요.
세 장을 차례로 눌러 보세요. 평평한 블록에서, 이름표로 묶인 파일로, 다시 폴더 트리로. 환상이 어떻게 쌓이는지 한눈에 정리돼요.
가상메모리가 진짜보다 큰 기억을 보여 줬듯이, 파일 시스템은 평평한 칸을 잘 정돈된 나무로 보여 주는 환상이에요. 진짜는 단순하고, 편리함은 운영체제가 얹어 준 거죠. 그런데 이 깔끔한 트리를 한 대의 컴퓨터에서 여러 사람이 함께 쓴다면, 아무나 남의 파일을 열고 지워도 괜찮을까요? 다음 강에서는 누가 무엇을 읽고, 쓰고, 실행할 수 있는지, 그 질서를 지키는 권한 이야기를 시작해요.