Linux内核如何处理对procfs的多个读/写操作?例如,如果两个进程同时写入procfs,那么一个进程是排队的(即内核陷阱实际上阻塞了其中一个进程),还是每个内核都有一个内核线程在运行?
问题是,如果在函数中使用了缓冲区(全局空间的静态缓冲区),则必须保护它还是将按顺序运行代码?

最佳答案

它取决于每个procfs文件实现。甚至没有人能给你一个明确的答案,因为每个驱动程序都可以实现自己的procfs文件夹和文件(你没有指定任何特定的文件)。在http://lxr.free-electrons.com/source/fs/proc/中快速浏览显示某些文件确实使用了锁)。
无论哪种方式,都不能使用全局缓冲区,因为总是会发生上下文切换,如果不是在内核中,那么它可以在完成读取系统调用之后、开始处理读取数据之前捕获读取器线程。

关于linux - Linux Kernel Procfs多次读/写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12862752/

10-15 17:05