プログラムAは、定期的に(毎秒20回)sysfsファイル(F)の最初の(唯一の)行を上書きします。プログラムBは、定期的に(20回/秒)同じsysfsファイル(F)を開き、最初の行を読み取って閉じます。
Fは共有リソースであり、上記の2つのプログラム間の同期がないため、Bがファイルに完全に書き込まれていない行を読み取ることができるはずです。
sysfsファイルにも当てはまりますか、またはカーネルはそのファイルへのアクセスをシリアル化しますか?
答え1
sysfsコードはバージョン3.14(2014)からkernfsパブリック部分に部分的に分割されているため、他のサブシステムが仮想ファイルシステムを持つのに適しているため、sysfsとkernfsを調べる必要があります。
明確なシリアル化はありませんが、システムファイルシステムコード、上記のkernfsレイヤーはミューテックスロックを使用します。kernfs_file_direct_readそしてkernfs_fop_write同じファイルを一度に一度だけ読み書きできることを確認してください。 mmap() を使用すると、いくつかのロックもあります。
したがって、現場は安全でなければなりません。