프로그램 A는 주기적으로(초당 20회) sysfs 파일(F)의 첫 번째(유일한) 줄을 덮어씁니다. 프로그램 B는 주기적으로(20회/초) 동일한 sysfs 파일(F)을 열고 첫 번째 줄을 읽고 닫습니다.
F는 공유 리소스이고 위의 두 프로그램 간의 동기화가 없기 때문에 B가 파일에서 완전히 기록되지 않은 행을 읽는 것이 가능해야 합니다.
sysfs 파일에도 해당됩니까, 아니면 커널이 해당 파일에 대한 액세스를 직렬화합니까?
답변1
sysfs 코드는 버전 3.14(2014)에서 kernfs 공개 부분으로 부분적으로 분할되어 다른 하위 시스템이 가상 파일 시스템을 갖는 데 적합하므로 sysfs와 kernfs를 살펴봐야 합니다.
뚜렷한 직렬화는 없지만시스템 파일 시스템 코드, 위의 kernfs 레이어는 뮤텍스 잠금을 사용합니다.kernfs_file_direct_read그리고kernfs_fop_write동일한 파일을 한 번에 한 번만 읽거나 쓸 수 있는지 확인하십시오. mmap()을 사용할 때 일부 잠금도 있습니다.
따라서 현장은 안전해야 합니다.