Linux系统的深入剖析
1. /proc文件系统
在Linux系统中,存在一个特殊的程序,它以完全无特权的方式运行,主要功能是解析和格式化来自 /proc 的信息。 /proc 文件系统需要实现两个关键部分:目录结构和文件内容。
由于UNIX文件系统是通过inode编号来标识文件和目录的inode集合,所以 /proc 文件系统必须为每个目录及其关联文件定义唯一且持久的inode编号。一旦建立了这种映射,当用户尝试从特定文件inode读取数据或在特定目录inode中进行查找时,文件系统就可以利用这个inode编号来确定所需的操作。当从这些文件中读取数据时, /proc 文件系统会收集相应信息,将其格式化为文本形式,并放入请求进程的读取缓冲区。
在Linux里,inode编号到信息类型的映射将inode编号分为两个字段。进程ID(PID)是16位宽,而inode编号是32位。inode编号的高16位被解释为PID,其余位则定义了关于该进程所请求的信息类型。需要注意的是,PID为零是无效的,所以当inode编号中的PID字段为零时,表示该inode包含的是全局信息,而非特定进程的信息。在 /proc 中存在单独的全局文件,用于报告诸如内核版本、空闲内存、性能统计数据和当前运行的驱动程序等信息。
并非该范围内的所有inode编号都被预留。内核可以动态分配新的 /proc inode映射,并维护一个已分配inode编号的位图。同时,它还维护一个已注册的全局 /proc
超级会员免费看
订阅专栏 解锁全文
715

被折叠的 条评论
为什么被折叠?



