gpt4 book ai didi

linux -/proc/thread-self 的用途?

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:48 24 4
gpt4 key购买 nike

我是 Linux 操作系统编程领域的新手。我正在从事一个控制英特尔 CPU 的项目(涡轮增压、超线程、最小和最大缩放频率以解决其他用户的问题)。在调查 /proc/stat 的 CPU 利用率时,我偶然发现了这个:

$ ll /proc/thread-self
lrwxrwxrwx 1 root root 0 Aug 22 04:26 /proc/thread-self -> 9389/task/9389/

$ ll /proc/self
lrwxrwxrwx 1 root root 0 Aug 22 04:26 /proc/self -> 29420/

$ ll /proc/self
lrwxrwxrwx 1 root root 0 Aug 22 04:26 /proc/self -> 29636/

$ ll /proc/thread-self
lrwxrwxrwx 1 root root 0 Aug 22 04:26 /proc/thread-self -> 30021/task/30021/

thread-selfself 每次用ll 列出符号链接(symbolic link)时都会不断变化。不过,日期和时间仍保留为上次启动时间。

我做了一点挖掘,发现了这个 email chain in 2014 :

This patchset implements /proc/thread-self a magic symlink that solves a couple of problems.

....邮件的下方说:

  proc: Have net show up under /proc/<tgid>/task/<tid>
proc: Implement /proc/thread-self to point at the directory of the current thread
proc: Point /proc/net at /proc/thread-self/net instead of /proc/self/net
proc: Point /proc/mounts at /proc/thread-self/mounts instead of /proc/self/mounts

符号链接(symbolic link)如何工作?或者我们如何使用它们对 Linux 正在做什么进行有意义的分析/显示?或者它们只是毫无意义而被视为“绒毛”而被忽略?

最佳答案

/proc/self是当前进程的符号链接(symbolic link),ls在你的例子中处理。由于每个 ll产生一个新的 ls使用不同的 PID 进行处理,符号链接(symbolic link)每次都会更改。这是一个神奇的符号链接(symbolic link),它会根据访问它的进程而变化。不同的进程会看到不同的目的地。

/proc/thread-self除了它指向当前线程而不是当前进程之外,其他都是一样的。在您显示的输出中,ls正在其主(可能是唯一)线程上查找符号链接(symbolic link),因此线程 ID 与进程 ID 匹配。

如果您检查 mount 的输出或 cat /proc/mounts你会看到这个“魔法”是如何实现的。 /proc通常作为虚拟文件系统安装。

$ mount | grep proc
proc on /proc type proc (rw)

任何时候您访问 /proc 下的条目 proc filesystem处理查找。与 ext4 等标准文件系统相比, xfs , 或 tmpfs ,磁盘上没有底层文件集。相反,有一个内核级驱动程序可以处理所有文件系统调用。当您访问 /proc/self内核驱动程序检查发出请求的进程并动态创建指向该进程 PID 的符号链接(symbolic link)。

有什么用?嗯,/proc/<PID>下有很多资料.例如,您可以查看 /proc/<PID>/fd/*查看进程打开了哪些文件描述符。 /proc/<PID>/cmdline给出 argv 的内容. /proc/<PID>/status有一堆信息,包括 uid、gid 和内存使用情况。例如,您可以插入对 ls -l /proc/self/fd/ 的调用调试文件描述符泄漏时。

关于linux -/proc/thread-self 的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51977002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com