差分

移動先: 案内検索

オペレーティングシステムとは何か

964 バイト追加, 2016年9月27日 (火) 04:46
/* VFSからデバイスドライバまで */
[[File:Filesystem-layer-1.png|thumb|right|400px|File System Layer]]
ファイルシステムをさらに抽象化するLinuxのファイルシステムを紹介しましょう。
ファイルを書き込む説明で「ハードディスクに書き込む」という表現をみたことはないでしょうか。
目の前にあるパソコン本体のみを考えるならば、このモノに書き出すというので説明は十分なのかも知れませんが、ファイルを書き込む・読み込むというのはもっと抽象的な動作をします。
 
Linuxのファイルシステムは、上位にVFS (Virtual File System)が存在し、その下に、FAX、ext4、JFS、XFS、NFS、その他のファイルシステムをもち、さらにその下にバッファキャッシュがあり、さらに下にデバイスドライバがあるといった、何重もの層を重ねる形になっています。
プログラムは、Linuxのファイルを扱っているだけで、その下がFATのファイルシステムやJFSのファイルシステムであるか、あるいはネットワーク経由でファイルシステムを使うことができるNFSなのかを知らなくても利用することが可能です。
下層には、補助記憶装置との入出力効率を改善するために、バッファキャッシュというクッションをおいてあります。
さらなる下層には、ハードディスクやフラッシュメモリ (例えばUSBメモリやSDカードなど)といった記憶するためのハードウェア、あるいはNFSのようにネットワークを経由して使うためのネットワークハードウェアをコントロールするためのデバイスドライバの層があります。
ファイルの情報が最終的にハードディスクに書かれるとしても、ファイルを書き込む動作を行った時点で、まだハードディスクにかかれているわけではありません。
このようなことにより、たぶん一度や二度は経験したことがあるかも知れませんが、突然、機材の電源を停止すると永続的な情報を保持するためのエリア(ハードディスクやUSBメモリなど)にかかれていなかったファイルの情報は消えてしまうことになります。
このように重層的な構造にすることによって、抽象化を図り、かつどの層が変化しようとも、上位の層がその違いを吸収するような形になっています。このような枠組みにより柔軟に機能・モジュールを追加、変更することが出来る仕組みになっています。