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