ファイルシステム:平らなディスクにかけたツリーの幻
前回はドライバーのおかげで、ディスクのような装置とも会話できるようになりました。でもディスクの中を開けてみると、ファイルもフォルダもありません。番号だけのマスが延々と並んでいるだけです。この平らなマスの海から、一枚の写真をどうやって見つけるのでしょう。
ディスクの素顔:ただの番号つきマス
画面では、ファイルをアイコンで見て、フォルダを開くとまた中にフォルダがあります。でもディスクそのものには、そんなものはありません。ディスクは実のところ、同じ形のマスが0番、1番、2番と番号順に平らに並んだ、巨大なロッカーにすぎないのです。一つ一つのマスをブロックと呼びます。ブロックにはデータのかけらが入りますが、どのマスがどのファイルなのか、名前は何なのか、ディスク自身はまったく知りません。ただの番号とデータ、それだけです。
マスを押してデータを入れてみましょう。マスには番号だけで、名前もフォルダもありません。これがディスクの素顔です。
押してみると感覚がつかめますね。マスは番号でしか区別されず、中身どうしには何のつながりもありません。大きなファイルは一つのマスには収まらず、空いたマスもあちこちに散らばっています。すると一つのファイルは複数のマスに分かれて入るしかなく、散らばったかけらを後でどうやってまた集めるのか、という問いが残ります。OSが解くべき最初の宿題です。
ファイル:散らばったブロックをまとめる名前と地図
解決はおどろくほど単純です。OSは小さなメモを一つ持ちます。「photo.jpgという名前のファイルは、3番、7番、12番のマスに、この順で入っている」。このメモこそが地図です。名前をわたせば、OSは地図を広げ、散らばったマスを順にたどってかけらを集めてきます。つまりファイルとは、実は二つの足し算なのです。一つはマスに散らばったデータのかけら、もう一つはそれを名前でまとめる地図。私たちがダブルクリックしているのはこの地図で、ディスクは地図が指すマスを読むだけです。
名前を押すと、地図にそって散らばったマス(3,7,12)が順に集まり、一つのファイルになります。散らばったブロックが一つのファイルになる様子を見てください。
一枚の地図が、散らばったマスを一つのファイルにまとめてくれました。おかげで、マスの番号を知らなくても名前だけでファイルを呼べます。でも、ファイルが一つや二つではなく何千もあったら。名前のメモが何千枚も積み上がって、また途方に暮れます。この大量の名前を整理する方法が必要です。次の主役、フォルダの出番です。
フォルダ:ファイルを収める、もう一つのファイル
「フォルダ」と言うと、ファイルとはまったく別物のようですが、秘密を明かすと、フォルダもただのもう一つのファイルです。特別なのは、その中身だけ。ふつうのファイルは写真や文字を入れますが、フォルダというファイルは「この中に入っているファイルの名前のリスト」を入れます。だからフォルダを開くというのは、そのリストを読んで、どんな名前が入っているかを見ることなのです。フォルダの中にさらにフォルダを入れることもできます。すると枝分かれする木、つまりツリーの形ができます。一番上の根から始めて枝をたどって下りていけば、目当てのファイルに届きます。
フォルダを押して開くと、中のファイルとサブフォルダが見えます。根から枝をたどって、目当てのファイルまで進んでみましょう。
見てのとおり、平らだったマスの海の上に、上下に枝分かれする整った木が立ちました。フォルダがただのもう一つのファイルにすぎないおかげで、OSは新しい装置を作らずに、同じファイルという考えだけで整理の構造を立てたのです。でも、ひとつ気になることが残ります。こうして作ったファイルを私たちが削除すると、ディスクからそのデータは本当にすぐ消えるのでしょうか。次のステップで、その秘密を少しだけのぞいてみましょう。
消すとは。地図だけ消えて、データは残る
直感では、ファイルを消すとデータがディスクからきれいに消える気がしますね。でもOSはふつう、そうはしません。データの入ったマスを一つ一つきれいに空にするのは、時間がかかるからです。だから速く終わらせるために、名前と地図だけを消し、マスの中のデータはそのまま残します。代わりに、そのマスを「もう空、再利用できる」と印をつけておくだけです。地図が消えると、そのデータへ行く道が切れるので、私たちの目にはファイルが消えたように見えます。でも、マスの中身はまだその場に残っているのです。
ファイルを押して削除してみましょう。名前と地図は薄くなり(道が切れ)ますが、マスの中のデータは残ります。新しいファイルがそのマスを上書きして、はじめて消えます。
だからこそ、復元ツールが消したファイルをよみがえらせることがあるのです。地図さえもう一度見つけられれば、その場に残っていたマスをつなぎ直せるからです。逆に、新しいファイルがそのマスを上書きしてしまえば、もとのデータは永遠に消えます。結局、削除の核心は、データを消すことではなく、データへ向かう地図を消すことだったのです。ここまで見れば、ファイルもフォルダも削除も、すべて地図と名前という一つの考えの上に立っているのが見えてきます。
平らなディスクにかけた、ツリーの幻
一歩下がって全体を見てみましょう。ディスクの本当の姿は、番号のついた平らなマスでした。その上でOSは三つの魔法を使いました。一つ目、名前と地図で、散らばったマスを一つのファイルにまとめました。二つ目、ファイルを収めるもう一つのファイルでフォルダを作り、ツリーを立てました。三つ目、消すときは、データではなく地図を消しました。この三つのおかげで、私たちはマスの番号など一生知らなくても、名前とフォルダだけで気軽にファイルをあつかえるのです。
三枚を順に押してみましょう。平らなブロックから、名前でまとめられたファイルへ、さらにフォルダのツリーへ。幻がどう積み上がるか、ひと目で整理できます。
仮想メモリが本当より大きな記憶を見せてくれたように、ファイルシステムは、平らなマスをよく整ったツリーとして見せる幻です。本当は単純で、便利さはOSが上にのせてくれたもの。でも、この整ったツリーを一台のコンピューターで何人もが一緒に使うとしたら、だれでも他人のファイルを開いて消していいのでしょうか。次回は、だれが何を読み、書き、実行できるのか、その秩序を守る権限の話を始めます。