Apa arti permintaan sinkron dan asinkron di Linux Kyber I / O Scheduler?

Aug 20 2020

Saat mempelajari Penjadwal I / O, saya telah membaca beberapa dokumen untuk Penjadwal I / O di Kernel Linux. Khusus untuk Kyber Scheduler, ada beberapa hal yang membingungkan. Dalam artikel di tautan berikut (https://lwn.net/Articles/720675/), Kyber Scheduler memiliki dua antrean utama, satu untuk permintaan sinkron dan satu lagi untuk permintaan asinkron. Di artikel itu, katanya

Proses yang mengeluarkan permintaan baca biasanya tidak dapat dilanjutkan hingga permintaan tersebut selesai dan datanya tersedia, sehingga permintaan tersebut dianggap sinkron.

Saya pikir permintaan sinkron dan asinkron bergantung pada CPU dan driver perangkat, bukan jenis operasi I / O.

Ada ide untuk pertanyaan ini?

Jawaban

1 telcoM Aug 20 2020 at 20:55

Itu akan lebih seperti "sinkron secara konseptual", atau mungkin "sinkron pada tingkat abstraksi yang lebih tinggi daripada yang Anda pikirkan". Suatu program membaca data untuk memprosesnya entah bagaimana, jadi sampai ia mendapatkan datanya, ia tidak dapat melakukan pemrosesan: jadi pembacaan haruslah operasi sinkron.

Sebaliknya, permintaan tulis dapat ditunda, selama operasi lain akan "melihat" data yang setara dengan yang ditulis ke tujuan akhir. Dengan kata lain, operasi baca apa pun terlebih dahulu harus memeriksa apakah versi modifikasi dari data yang akan mereka baca ada di cache tulis, dan jika demikian, "baca" dari cache.