私はIOのアイデア全体について少し混乱しています。私はCPUがディスク(SATAディスクなど)からどのように読み取るか知りたいのですか?CPUはどのようにディスクから読み込みますか?
read()/ write()のプログラムが特定のファイルへの参照を遵守したとき、およびCPUがこの参照に遭遇したときに、ディスクを直接(メモリマップされたIOポート経由で)読み込みますか?またはRAMに書き込んだ後にディスクに書き戻しますか?
私はIOのアイデア全体について少し混乱しています。私はCPUがディスク(SATAディスクなど)からどのように読み取るか知りたいのですか?CPUはどのようにディスクから読み込みますか?
read()/ write()のプログラムが特定のファイルへの参照を遵守したとき、およびCPUがこの参照に遭遇したときに、ディスクを直接(メモリマップされたIOポート経由で)読み込みますか?またはRAMに書き込んだ後にディスクに書き戻しますか?
私は読書をお勧めしたい:ほとんどのプログラミング言語とオペレーティング・システムのバッファI/O操作の少なくとも一部(読み取りおよび書き込み:RAM内のバッファリングに関して http://en.wikipedia.org/wiki/Direct_memory_access
:のサプリメント http://www.makelinux.net/books/ulk3/understandlk-CHP-13-SECT-1 )をメモリに転送します。これは通常、非同期的に行われます。つまり、バッファが作成され、埋められ、処理されます。読み込みの場合、CPUは(ディスクコントローラと連携して)データを取得するためのIO命令とそれをメモリに格納する場所を作成し、その領域を満たし、その内容を要求を行うプログラムに提示する。書き込み要求の場合は、書き込み操作とその関連データをキューに入れ、IOコントローラに転送し、最終的には実行するディスクに転送します。バッファリングは、CPUのキャッシュ、RAM、(時には)ディスクコントローラ、またはハードディスク自体の複数の場所で発生する可能性があります。どのくらいのバッファリングが行われたか、私が言及した操作の抽象シーケンスがどのように処理されるかは、ハードウェアのアーキテクチャ、OS、およびタスクによって異なります。
メインメモリは、プロセッサが直接アクセスできる唯一の大きな記憶領域(数百万から数百万バイト)です。
"オペレーティングシステムのコンセプト"と言います。
したがって、プログラムを実行したり、データを操作したい場合は、それら(プログラムとデータ)がメインメモリになければなりません。