为什么进程信息存储在 /proc 中,就像进程信息存储在 RAM 中的内核中,而 /proc 存储在辅助存储器中一样?

为什么进程信息存储在 /proc 中,就像进程信息存储在 RAM 中的内核中,而 /proc 存储在辅助存储器中一样?

/proc 是我们在 Linux 根目录中找到的一个目录。它包含进程的信息。但实际上,进程表和所有这些东西都存储在 RAM 中的内核中。请回答我的询问。我可能听起来很傻,因为我是新来的。

答案1

来自手册页:

proc 文件系统是一个伪文件系统,它提供了内核数据结构的接口。

/proc 不是辅助存储。 /proc 与 /sys 一样,是一个提供进入内核窗口的文件系统。/proc/1234/cmdline例如, 不是磁盘文件。除了索引节点之外,它不占用任何空间。当您读取该文件时,您实际上访问了内核内存。

当您尝试写入 /proc 的某些文件时,您会发现 /proc 不是一个普通的文件系统。作为 root,尝试一下echo blabla > /proc/$$/cmdline。迎接您的将是echo:写入错误:参数无效cmdline即使是 root 也只能读取。同样,/sys 包含只能写入的文件。例如,尝试cat /sys/block/sda/device/delete(但不要写入它 - 从逻辑上讲,您会从系统中删除 sda 设备。如果您不小心这样做,最简单的补救措施是重新启动)。

类似的案例还有/dev/kmem。它不是文件系统,而是设备文件,它使您可以访问内核内存。它不是指存储设备。

警告:写入,甚至读取 /proc 和 /sys 中的某些文件可能存在风险,最好在测试机器上完成。

相关内容