程序A定期(20次/S)重写sysfs文件(F)的第一行(也是唯一)行。程序B定期(20次/S)打开同一个sysfs文件(F),读取第一行并关闭它。
因为F是一个共享资源,而且在上面的场景中,两个程序之间没有任何同步,所以B有可能读取文件中不完全写的行。
对于sysfs文件也是这样,还是内核序列化了它的访问?
发布于 2016-08-08 15:27:51
在3.14 (2014)版本中,sysfs代码被部分拆分成一个kernfs公共部分,这将使其他子系统适合拥有虚拟文件系统,因此我们必须查看sysfs和kernfs。
虽然sysfs码中没有明显的序列化,但上面的kernfs层在角轮_文件_直接_朗读和角轮_fop_写中使用互斥对象,以确保同一文件一次只能进行一次读或写。使用mmap()时也有一些锁定。
所以你的情况应该是安全的。
https://unix.stackexchange.com/questions/302003
复制相似问题