/proc/self在Linux中是如何实现的?

/proc/self在Linux中是如何实现的?

我在修改/procLinux 中的文件系统时,遇到了/proc/self,它是指向当前进程的进程目录的符号链接。我想知道它是如何实现的。一种解决方案是更改该符号链接每次上下文切换,但这显然非常昂贵,因为它涉及磁盘访问。

答案1

http://lxr.linux.no/linux+v3.2.9/fs/proc/base.c#L2482是当前的实现。

文件系统proc是完全虚拟的,并且被实现为内部 VFSreadlink委托给特殊符号链接的正确位置。因此,它计算self读取/遍历时指向的内容,而不是每次上下文切换。

答案2

文件/proc不存储在磁盘上,它们是由内核动态生成的。看当我打开并读取 /proc 时会发生什么?

/proc如果您倾向于编程,您可以阅读中的实现内核源代码。的内容/proc/self符号链接是由功能用调用进程的 pid 填充缓冲区。

相关内容