OSの機能の1つとして、「ハードウェアの抽象化」があります。これは、「同じ種類のハードウェアでも、メーカーやモデルによって差異があるのを吸収する」という意味もあり、また「ハードウェアの複雑な部分を隠蔽して、人間にとって取り扱いやすいインターフェースを提供する」という意味もあります。
その中でも、データを格納したり取得したりする部分を抽象化したのが「ファイルシステム」です。
この章では、データがどのようにハードウェアに格納されているのか、それがOSによってどのように抽象化され、人間に取り扱いやすいインターフェースが提供されるのか、順を追って説明して行きます。
内容一覧
データを保存するためのハードウェアとしては、ハードディスク、SSD、光学ディスク(CD、DVD)、USBメモリなどの種類があります。ここではハードディスクを取り上げ、ハードウェア上にどのようにデータが格納されているのかを
Linux(UNIX)ではハードディスクを下図のような構成で管理しています。 まず、ハードディスク全体をいくつかの領域に区切ります。この区切りを「パーティション」と呼びます。 各パーティションの中もいくつかの領域に区切ら
Linux(UNIX)におけるディスクの管理で説明したように、iノードやデータ領域の中は、データが規則に従って整然と配置されているわけではなく、空いてる場所にバラバラに突っ込まれています。 では、ディスク上にバラバラに存
iノードの中には「ファイル種別」という属性がありました。UNIXではファイル種別は主に次の3つです。 通常のファイル(regular file): いわゆる普通のファイル ディレクトリファイル: そのディレクトリに属して
以上で、ディスク上にバラバラに存在していることを気にすることなくデータを取り扱えることがわかりました。 しかし、iノードもまた何の脈絡もなくバラバラに保存されているため、人間には取り扱い難いものになっています。 そこで、
ファイルシステムとiノードで、「Linux(UNIX)ではルートディレクトリ(/)を根っことした木構造のディレクトリ構成を作り、ファイルを管理している」という説明をしましたが、ハードディスクやパーティションが複数ある時は
ファイルシステムとiノードで説明したように、ファイルの情報(iノード)とファイルの名前は別々に管理されています。ファイルに対する名前のことを「リンク(ハードリンク)」と言います。 1つのファイル(iノード)に対して、複数
ハードリンクの欠点は、ファイルシステムをまたいでリンクを張ることが出来ないことです(ファイルシステムが違うとiノードも別になるので、当然)。 また、ディレクトリに対してリンクを追加することも出来ません(ファイルシステムが
プログラムが現在いるディレクトリを「カレントディレクトリ」と言います。 カレントディレクトリを変更するには “cd” コマンドを使います。カレントディレクトリを確認するには、”pwd&
ファイルシステム内のファイルを一意に指定するためには、 ルートディレクトリからのディレクトリ階層をすべて記述する方法 カレントディレクトリからの階層を記述する方法 の2通りがある。前者を「絶対パス」、後者を「相対パス」と