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