Linux Kyber I / Oスケジューラでの同期および非同期リクエストの意味は何ですか?
Aug 20 2020
I / Oスケジューラーを勉強している間、LinuxカーネルのI / Oスケジューラーに関するいくつかのドキュメントを読みました。特にKyberスケジューラーの場合、いくつかの紛らわしいことがあります。次のリンクの記事で(https://lwn.net/Articles/720675/)、Kyberスケジューラには2つのプライマリキューがあります。1つは同期リクエスト用で、もう1つは非同期リクエスト用です。その記事では、それは言います
読み取り要求を発行するプロセスは、通常、その要求が完了してデータが使用可能になるまで続行できないため、このような要求は同期していると見なされます。
同期および非同期の要求は、I / O操作の種類ではなく、CPUとデバイスドライバーに依存すると思いました。
この質問のアイデアはありますか?
回答
1 telcoM Aug 20 2020 at 20:55
それは、「概念的に同期」、またはおそらく「あなたが考えていたものよりも高い抽象化レベルで同期」のようなものです。プログラムは、何らかの方法でデータを処理するためにデータを読み取るため、そのデータを取得するまで処理を実行できません。したがって、読み取りは同期操作である必要があります。
一方、書き込み要求は、他の操作が最終的な宛先に書き込まれたのと同等のデータを「見る」限り、延期することができます。つまり、読み取り操作では、最初に、読み取ろうとしているデータの変更バージョンが書き込みキャッシュに存在するかどうかを確認し、存在する場合は、代わりにキャッシュから「読み取り」する必要があります。