为什么将proc称为文件系统?


20

proc文件系统允许内核传达有关在Linux系统上运行的每个进程的信息。

为什么proc称为文件系统?它不是真正的文件系统,例如ext4。它只是包含有关正在运行的进程信息的文件的集合。

Answers:


25

/proc是一个文件系统,因为用户进程可以使用熟悉的系统调用和库调用,想通过它导航opendir()readdir()chdir()getcwd()。甚至open()read()close()在很多出现在“文件”的工作/proc。对于大多数目的和几乎所有目的来说,/proc是一个文件系统,尽管事实上它的文件不占用某些磁盘上的块。

我想我们都应该澄清一下我们当前使用的“文件系统”一词的定义。在ext4的上下文中,当我们编写“文件系统”时,我们可能正在讨论磁盘块布局,还驻留在磁盘某处的有关磁盘块的元数据信息的规范以及处理这些代码的组合。磁盘上的布局。在,等等的上下文中/usr,我们正在写关于如何命名某些事物的理解或共享概念。术语“文件系统”的这两种用法确实有很大的不同。正如您已经注意到的,它实际上是第二种“文件系统”。/tmp/var/run/proc


9
/proc除非有人认为文件始终是磁盘备份的(或磁带备份的,CD备份的或其他备份的)9,否则没有理由在文件中使用吓人的引号。它们并不总是-考虑RAM磁盘。在一个“真正的”文件打开/写/关闭序列/home,也就是说,可能并不总是意味着相应的改变旨在永久反映该文件ondisk storagehave已经取得并完成的状态。
哈根·冯·艾特森

10
tl; dr:因为它是文件系统?
约尔格W¯¯米塔格

1
请注意,这也解释了“在Linux中,一切都是文件”这一说法。
dr01 2015年

它是一个文件系统,其屏幕类似于“桌面”。计算机术语比喻很多。
2015年

18

这只是包含信息的文件区域

但是,这正是一个文件系统是什么。文件系统不必是可写的,也不必驻留在永久性存储中。

注意:(procfs内核中的伪文件系统实现)与其常规的安装点有所区别/proc。从理论上讲,您可以在procfs任何地方安装该设备,但这很少见。因此,人们经常谈论/proc真正的意思procfs

procfs之所以称为伪文件系统,是因为a procfs中的文件不是由通常的文件系统操作创建的,而是由文件系统实现本身根据内核中其他地方发生的事情添加和删除的。


那么为什么/ etc / boot这样的不被称为文件系统呢???
Makhlouf GHARBI 2015年

7
因为它们是文件系统中的目录。(嗯,/boot经常是一个独立的文件系统,但它不是一个单独的一种文件系统)
军事审判

9

如果数据是以某种方式组织的,那么可以通过用于文件系统的机制来访问它们,那么您可以将整个事物称为文件系统。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.