今日、ほとんどのデータベース管理システム(例:PostGreSQL、MongoDBなど)は、内部的にOSファイル内にデータを保持しています(過去、一部のDBMSはrawディスクパーティションを直接使用していました)。
まだ回転しているハードディスクを使用している最近のコンピューターでは、ディスクはCPUまたはRAMに比べて非常に遅いため、いくつかのソフトウェアレイヤーを追加することは関係ありません。SSDテクノロジーはそれを少し変えるかもしれず、いくつかのファイルシステムはSSD向けに最適化されています。
ファイル歴史的および社会的な理由ではほとんどのOSに存在します(特に、Cコンパイラーとほとんどのツール(エディター、リンカー)はファイルを必要とするため、鶏肉と卵の問題があります)。システム実装。
ところで、いくつかの重要なシステム機能はデータベースを使用できます。たとえば、Linux PAMはデータベース内の情報を使用するように構成できます(ただし、これは実際にはほとんど行われません)。また、一部のメールサーバーは、そのデータの一部またはほとんどをデータベース(Eximなど)に保存します。
ファイルはデータベースよりもやや抽象度が低いため、(LinuxカーネルのファイルシステムとVFSレイヤーとして)実装が簡単で、使用も高速です。特に、ファイルに対する操作は、データベースに対する操作よりもはるかに制限されています。実際、ファイルまたはファイルシステムは非常に制限されたデータベースとして見ることができます!
あなたがデザインすることができ、オペレーティングシステムを任意のファイルをせずに、他のいくつかの直交して永続機械(例えば、すべての持つプロセスは永続的で、その後はあまり気にしない、明示的に OSが永続的なリソースを管理しているため、ストレージについて)。これは、いくつかのアカデミックオペレーティングシステム(1)(および1980年代のSmalltalkおよびLispマシン、IBM System i(別名AS / 400)、およびosdevからリンクされた一部のおもちゃプロジェクトでも行われました。)、しかし、この方法でOSを設計する場合、多くの既存のツールを活用することはできません(たとえば、コンパイラとユーザーインターフェイスをゼロから作成する必要があり、それは多くの作業です)。
ことをお知らせマイクロカーネルのファイルシステムは、単にアプリケーションサーバ(例えばのHurdあるため、オペレーティングシステムは、カーネル層によって提供されるファイルを必要としない場合があります翻訳者ユーザランドで動作しています)。今日のMirageOSのユニカーネルアプローチもご覧ください。
Linux(およびおそらくVMS&Unixからインスピレーションのほとんどを得たWindows )は、機能するためにファイルを必要とします。少なくとも、initプログラム(カーネルによって開始される最初のプログラム)は、ファイルに保存された実行可能ファイルである必要があり(多くの場合/sbin/init
、最近ではsystemdである可能性があります)、そして(ほぼ)他のすべてのプログラムはexecve(2 ) syscallはファイルに保存する必要があります。ただし、FUSEを使用すると、ファイルのような意味をファイル以外のものに与えることができます。
また、Linux(およびおそらく私が知らず、使用したことのないWindowsでも)sqliteは、ファイル内のSQLデータベースを管理し、そのAPIを提供するライブラリです。Androidは広く知られています(Linuxの亜種)は多くのsqliteファイルを使用するます(ただし、POSIXのようなファイルシステムはまだあります)。
アプリケーションのチェックポイント設定についてもお読みください(現在の多くのOSでは、プロセスの状態をファイルに書き込むために実装されています)。極端に言えば、このアプローチでは、アプリケーションファイルを手動で書き込む必要はありません(ただし、チェックポイント設定機構を使用してプロセス状態全体を永続化するためだけです)。
実際、興味深い質問は、現在のオペレーティングシステムがまだファイルを使用する理由であり、その答えはレガシーであり、経済的および文化的な理由です(残念ながら、今日のほとんどのプログラミング言語とライブラリは依然としてファイルを必要としています)。
注1:永続的なアカデミックOSにはLisaacおよびGrasshopperが含まれますが、これらのアカデミックプロジェクトは非アクティブのようです。http://tunes.org/もご覧ください。非アクティブですが、そのようなトピックに関する多くの議論が行われています。
注2:ファイルの概念は、時間の経過とともに大きく変化しました(私の最初のプログラミング体験に関するこの回答をご覧ください):1980年代のIBM PC(ディレクトリなし!)での最初のMSDOS、1978 VaxenのVMS-(両方とも固定レコードファイルとシーケンシャルファイル、プリミティブバージョン管理システム)、1970年代のメインフレーム(OS / VS2 MVSを備えたIBM / 370)は、ファイルとファイルシステムの概念がまったく異なっていました(特に、ハードディスクアクセス時間とコアメモリアクセス時間は、数千人だった-ので、その時のディスクRANで比較的速く、今日よりも、今日のディスクがある場合でも、絶対に前世紀よりも高速で、今日のCPU /ディスク速度比は約100万です。しかし、現在SSDがあります)。また、ファイルが小さい(あるいはしない)便利なメモリが永続的である場合には(上のようCAB500、または使用して、将来のコンピュータの磁気ドラム、1960 MRAMを)