私は現在、オペレーティングシステムのコースを受講している数学の学部生ですが、コンピュータサイエンスの背景知識はほとんどありません。
私が知っている基本は次のとおりです。オペレーティングシステムは正確に2つの部分で構成されています。
- Linuxのすべてをファイルとして処理できるファイル管理システム
- ハードドライブやその他のデバイスを制御するデバイスドライバ
ここで、アプリケーションAを実行してアプリケーションAを実行するには、ハードディスクからメモリにアプリケーションAの実行可能ファイルをロードする必要があるとします。
今、それを達成する方法についての私の考えは次のとおりです。これが正しいかどうかはわかりません。助けてくれて本当にありがとう。
オペレーティングシステムのファイル管理システムは、アプリケーションAを実行するためにハードディスクにアプリケーションAの実行可能ファイルが必要であることを知っている。このファイルのアドレスはファイル記述子テーブルにあります(わかりませんが、アドレスを指定したいかどうかを推測します)。ファイルA.outのアドレスは2475であり、ファイル記述子テーブルにはファイルA.outのアドレスと、プロセスがファイルから読み取るポインタを格納する変数iがあります。他のプロセスの記述子テーブルは異なりますか?このファイル記述子テーブルはRAMに保存されていますか?)
今、私たちが扱うべきことについての十分な情報があるので、「バフ」(メモリ空間であると仮定)という空の空間から始めます。今、ハードドライブを処理するデバイスドライバは、おそらく与えられたスペースで起動します。ハードドライブ情報の場所をアップロードし、「バフ」にアップロードします。
これが私の理解です。私が理解した内容が事実と矛盾している場合は、許してください。私の概念を明確にする方法についての助けと助言が必要です。
編集1:アプリケーションの実行可能ファイルをメモリにロードすると仮定すると、実際にアプリケーションの実行可能ファイルを開くときに開くファイル数のインデックスであるファイル記述子があります。これで、このファイル記述子はファイルテーブルを指します(1つだけです)。カーネルのファイルテーブルには、そのファイルを指すファイル記述子の数、現在のモード、ID(メモリに相対的なもの)などのファイルの詳細が格納されます。記述子テーブルは同じリソースを指すことができます。
ベストアンサー1
これが講座で学んだ内容であれば、講座の質に深刻な疑問を持つようになります。オペレーティングシステムとディスクアクセス機能の完全な説明は、Q&Aサイトの範囲をはるかに超えています。それで、多くの詳細とニュアンスが欠けている簡単で大きな絵の説明をします。これも全体的な単純化です。
オペレーティングシステムは、2つの基本機能以上の機能を実行できます。これは、使用している用語の正確な定義と使用しているオペレーティングシステム(オペレーティングシステムにGUIを含むWindowsなど)によって多少異なりますが、少なくとも次の機能が含まれます。
- 作業スケジュール
- メモリ管理
- ファイル/ファイルシステムへのアクセス
- プロセス管理とプロセスコミュニケーション
- ネットワーキング
したがって、説明を確認するには:
オペレーティングシステムのファイル管理システムは、アプリケーションAを実行するためにハードディスクにアプリケーションAの実行可能ファイルが必要であることを知っている。このファイルのアドレスは、ファイル記述子テーブルから提供されます。
いいえ。オペレーティングシステムのファイル管理システムではありません。最初のプロセス(他の形式のinit)を除いて、プロセスはすべて別のプロセスによって作成されます。たとえば、ls
端末で操作を実行すると、使用中のシェルはオペレーティングシステムにプログラムをロードするように要求します。
Linux および Unix では、「ファイル記述子」という用語は、プロセスで意味するものとは異なる意味を持つことができます。 (少なくとも今は)「ファイル記述子テーブル」を「iノードテーブル」に置き換える必要があります。
その後、オペレーティングシステムのファイル(システム)機能は、iノードテーブルからディスク上のファイルの場所を取得します。 iノードテーブルはファイルシステムの一部であり、ディスクに保存されます。ただし、オペレーティングシステムは、不要なディスクアクセスを防ぐためにメモリにコピー(キャッシュ)を保持します。
それでは、ファイルを開くとどうなりますか?ユーザープロセスは、ファイル名を使用してオペレーティングシステムへのファイルオープン呼び出しを作成します。オペレーティングシステムは、名前をディスクの場所に変換し(Iノードテーブルを使用)、ファイルが再び閉じられるまで後でファイルを参照できるようにファイル記述子を割り当てます。
以下では、オペレーティングシステムのデバイス機能はディスクコントローラにディスク上の特定のセクタをメモリにロードし、ファイルシステム機能がそれをバイトまたはブロックストリームに変換できるように指示します。