Linux Kyber I/O スケジューラでの同期要求と非同期要求の意味は何ですか?

Linux Kyber I/O スケジューラでの同期要求と非同期要求の意味は何ですか?

I / Oスケジューラを学ぶ過程で、LinuxカーネルのI / Oスケジューラに関するいくつかのドキュメントを読んだ。具体的には、Kyber Schedulerには混乱する部分があります。下のリンク記事から(https://lwn.net/Articles/720675/)、Kyber Schedulerには同期要求用のキューと非同期要求用のキューが2つあります。その記事にはこう出ています。

読み取り要求を発行するプロセスは通常、要求が完了してデータが利用可能になるまで続行できないため、これらの要求は同期と見なされます。

同期および非同期要求は、さまざまなI / O操作ではなくCPUおよびデバイスドライバに依存すると思います。

この問題についてご意見をお持ちですか?

答え1

これは、「概念的に同期」または「考えているよりも高い抽象化レベルで同期」するのと似ています。プログラムは何らかの方法で処理するためにデータを読み取るため、そのデータがあるまで処理できません。したがって、読み取りは同期操作でなければなりません。

一方、他のジョブがデータを最終宛先に書き込むのと同じように「認識」する限り、書き込み要求は延期することができます。つまり、すべての読み取り操作は、最初に書き込みキャッシュをチェックして、読みたいデータの変更されたバージョンがあるかどうかを確認し、その場合はキャッシュからそのバージョンを「読み取る」必要があります。

関連情報