バッファーを含むディスクコントローラーのようなものがあることを理解していますが、CPUがこのバッファーから直接読み取るのか、またはデータを最初にメモリ内の特定の場所に移動してから、それ自体を読み取る必要があるのか疑問に思っていましたCPUで?
誰かがバッファが何と呼ばれているのか知っていますか?そして、DMAはこれらすべてにどのように適合しますか?
バッファーを含むディスクコントローラーのようなものがあることを理解していますが、CPUがこのバッファーから直接読み取るのか、またはデータを最初にメモリ内の特定の場所に移動してから、それ自体を読み取る必要があるのか疑問に思っていましたCPUで?
誰かがバッファが何と呼ばれているのか知っていますか?そして、DMAはこれらすべてにどのように適合しますか?
回答:
ディスク読み取りの場合、データフローは基本的に次のとおりです。
ディスクへの書き込みも同様ですが、データがPCからディスクコントローラーに転送され、ECCが計算され、要求されたセクターが特定され、データがセクターバッファーからプラッターに書き込まれる点が異なります。
追加のクレジット:
DMAチェーンとメモリアドレスとバッファー長のスキャッターギャザーリストを使用する「スキャッターギャザー」転送について読んでください。「スキャッターギャザー」転送では、1つの大きな連続したメモリバッファーの代わりに、ディスクI / O要求用に非連続のメモリーバッファーを集約することができます。
カーネルがディスクのドライバを割り当てた特定のメモリ領域に入ります。特に名前が付けられているとは思いません。このメモリ領域は通常、リングバッファとして構成されます。OSによっては、このメモリがアプリケーションが使用するユーザースペースにもう一度コピーされる場合があります。
DMAは、( -ウェイ事ポーリングとして知られているディスクドライブのコントローラが直接より多くのデータが利用可能である場合は、それを聞いて、繰り返しCPUを持たずにRAMに書き込むことができることを意味し、「ダイレクトメモリアクセス」で使用行われます)。代わりに、バッファー全体が転送されると、コントローラーはCPUに割り込み、データが使用可能になったことを知らせます。