Linux伪文件系统

  伪文件系统,这个概念资料较少。
  Unix、Linux系统里面有文件描述符这个概念(万物皆文件),比如常规的文件,标准输入输出错误(0,1,2描述符),还有套接字,消息队列等等。
  它们虽然存在文件系统中某个目录,但是不属于任何的文件系统,不占用硬盘的空间,只是在内存中作用。通过内核去管理调用,比如fifo有名管道,实际是内存缓冲区中用于进程通信的。这些文件通常被内核调用为系统提供某些功能。

伪文件系统

早期,UNIX 因为提供全局 API 以及将设备挂载到统一的文件系统命名空间的特性,大幅提升了输入/输出资源的集成度。这个方法是如此成功,以至于从那时开始有一种将更多资源和系统服务暴露为文件系统全局命名空间的趋势。Plan 9 是这种做法的先驱,而现在所有新的 UNIX 系统都这么做了。

这种方法导致产生了许多 伪文件系统,这些系统看起来和一般的文件系统一样,但是可以存取没有直接关联传统文件系统的资源。比如你可以使用伪文件系统来查询控制进程、存取内核内部或建立 TCP 连接。这些伪文件系统具有文件系统语义,可以展示分层信息,并为大部分对象提供了统一存取的方式。伪文件系统有时也被称为虚拟文件系统,特点是没有物理设备也没有备份存储器,只依靠内存来工作。

伪文件系统的例子:
  procfs(/proc):proc 文件系统包含一个特殊文件层,这个文件层可以用来查询或控制运行中的进程,或通过标准文件入口(大部分基于文本)一窥内核内部文件。
  devfs(/devor /devices):devfs 将所有系统中的设备以动态文件系统命名空间呈现。devfs 也可以通过内核设备驱动直接管理这些命名空间和接口,以此来提供智能的设备管理 —— 包括设备入口注册/反注册。
   tmpfs(/tmp):临时文件系统的内容会在重启时消失,tmpfs 是为速度和效率而设计的,具有动态文件系统大小、用以空间清理的显式回退等特性。
   portalfs(/p):通过 BSD 门户文件系统,你可以将一个服务器进程连接到文件系统通用命名空间上。这样可以提供明确的通过文件系统对网络服务的存取过程。比如一个 App 可以通过打开一个合规的文件 /p/tcp/ph7spot.com/smtp来和 ph7spot.com上的 SMTP 服务器进行交互。门户文件系统很神奇,因为它在文件系统中可以提供套接字语义,还可以被 UNIX 系统工具传输和使用(比如:cat, grep, awk等等)—— 甚至可以通过 shell 来使用!
   ctfs(/system/contract):协定文件系统作为一个以文件为基础的接口的 Solaris 协定子系统。Solaris 协定为各种各样的事件和失败情况定义了一个进程或进程组的表现形式 —— 比如,进程停止时重启。 Solaris 协定为诸如群集故障转移软件,批处理排队系统和网格计算引擎等环境中的软件管理和监视提供了非常高级的功能。

参考博客:https://www.cnblogs.com/feng9exe/p/11009638.html

发布了69 篇原创文章 · 获赞 83 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41033366/article/details/104774952