0

デバイス ドライバについて読んでいて、すべてをファイルとして扱うという UNIX の哲学に関連する質問があります。

ユーザーがファイルを開くなどのコマンドを発行すると、システム コールとファイル操作のどちらが実行されるのでしょうか。 sys_openはシステムコールでopenあり、ファイル操作です。トピックについて詳しく教えてください。

前もって感謝します。

4

2 に答える 2

1

簡単な答え、私はそれが役立つことを願っています:

すべてのシステムコールは同じように機能します。システムコール番号は、システムコールパラメータとともにどこかに(たとえばレジスタに)格納されます。オープンシステムコールの場合、パラメータは次のとおりです。ファイル名と権限文字列へのポインタ。次に、open関数は、適切な命令を使用してソフトウェアの中断を発生させます(syscallint...、HWによって異なります)。

中断については、カーネルが呼び出され(カーネルモードで)、中断が処理されます。システムは、割り込みがシステムコールによって引き起こされたことを検出し、レジスタ内のシステムコール番号を読み取り、それが開いているシステムコールであることを確認し、カーネルメモリにファイル記述子を作成し、ドライバを開いて実際にファイルを開きます。働き。次に、ファイル記述子IDがレジスタに格納され、ユーザーモードに戻ります。

次に、ファイル記述子がレジスタから取得され、によって返されopen()ます。

于 2012-10-15T13:18:12.400 に答える
0

「開いている各ファイル (ファイル構造によって内部的に表されますが、これについてはすぐに調べます) は、(file_operations 構造を指す f_op というフィールドを含めることによって) 独自の関数セットに関連付けられています。操作は主に、したがって、システム コールは、open、read などの名前が付けられます。 "

これは、LDD の章の Character Driver からのものです。最後の行の意味を誰か詳しく教えてください。

于 2012-10-16T11:55:17.577 に答える