Linux内核如何处理对procfs的多次读/写操作?例如,如果两个进程一次写入procfs,一个进程是否排队(即内核陷阱实际阻塞其中一个进程),或者是否有为每个核心运行的内核线程?
问题是如果你在一个函数中使用了一个缓冲区(静态到全局空间),你是否必须保护它或者代码是按顺序运行的?
答案 0 :(得分:0)
这取决于每个procfs文件的实现。没有人能给你一个肯定的答案,因为每个驱动程序都可以实现自己的procfs文件夹和文件(你没有指定任何特定文件。http://lxr.free-electrons.com/source/fs/proc/中的快速浏览显示某些文件确实使用了锁。)
无论哪种方式都不能使用全局缓冲区,因为上下文切换总是会发生,如果不在内核中,那么它可以在读取系统调用完成之后以及开始处理读取数据之前立即捕获读取器线程