疯狂购网站开发商,能上网但是浏览器打不开网页,展示型网站有哪些,重庆建设造价信息网官网proc文件系统
进程数据文件系统#xff08;process data filesystem, procfs#xff09;装载在 /proc#xff0c;缩写为 procFS。
proc 文件系统是一种虚拟文件系统#xff0c;其信息不能从块设备读取。只有在读取文件内容时才动态生成相应的信息。使用proc文件系统…proc文件系统
进程数据文件系统process data filesystem, procfs装载在 /proc缩写为 procFS。
proc 文件系统是一种虚拟文件系统其信息不能从块设备读取。只有在读取文件内容时才动态生成相应的信息。使用proc文件系统可以获得有关内核各子系统的信息如内存利用率、附接的外设等等也可以在不重新编译内核源代码的情况下修改内核的行为或重启系统。
proc 文件系统提供一种接口可用于该机制导出的所有选项直接地修改参数无需开发专门程序只需要一个shell和标准的 cat、 echo 程序即可。
/proc信息 尽管proc文件系统的容量依系统而不同其中仍然包含了许多深层嵌套的目录、文件、链接。信息可以分为以下几大类 1内存管理 2系统进程的特征数据 3文件系统 4设备驱动程序 5系统总线 6电源管理 7终端 8系统控制参数。
Linux系统上的/proc目录是一种文件系统即proc文件系统。 /proc是一种伪文件系统也即虚拟文件系统具体目录如下
proc 常见文件
buddyinfo用于诊断内存碎片问题。 cmdline在启动时传递至内核的相关参数信息这些信息通常由lilo或grub等启动管理工具进行传递 cpuinfo处理器的相关信息的文件 crypto系统上已安装的内核使用的密码算法及每个算法的详细信息列表 devices系统已经加载的所有块设备和字符设备的信息 diskstats每块磁盘设备的磁盘 I/O 统计信息列表 filesystems当前被内核支持的文件系统类型列表文件被标示为nodev的文件系统表示不需要块设备的支持 interruptsX86 或 X86_64 体系架构系统上每个 IRQ 相关的中断号列表 iomem每个物理设备上的记忆体RAM或者ROM在系统内存中的映射信息 ioports当前正在使用且已经注册过的与物理设备进行通讯的输入-输出端口范围信息列表 kallsyms模块管理工具用来动态链接或绑定可装载模块的符号定义由内核输出 locks保存当前由内核锁定的文件的相关信息包含内核内部的调试数据每个锁定占据一行且具有一个惟一的编号 meminfo系统中关于当前内存的利用状况等的信息常由free命令使用 mounts在内核2.4.29版本以前此文件的内容为系统当前挂载的所有文件系统 modules当前装入内核的所有模块名称列表可以由lsmod命令使用也可以直接查看 partitions块设备每个分区的主设备号major和次设备号minor等信息 stat实时追踪自系统上次启动以来的多种统计信息 swaps当前系统上的交换分区及其空间利用信息 uptime系统上次启动以来的运行时间 version当前系统运行的内核版本号 vmstat当前系统虚拟内存的多种统计数据 zoneinfo内存区域zone的详细信息列表
proc 数据结构
1、proc 核心数据结构 实现 proc 文件系统的代码紧围绕这些结构而建立的proc 大量使用 VFS 的数据结构因为作为一种文件系统它必须集成到内核的 VFS 抽象层中。
还有一些特定于 proc 的数据结构用于组织内核提供的数据信息。还必须提供一个到内核各个子系统的接口使得内核能从其数据结构中提取信息然后借助 /proc 提供给用户空 间。proc 文件系统中的每个数据项都由proc_dir_entry的一个实例描述
2、装载proc文件系统 内核内部用于描述 proc 文件系统结构和内容的数据已初始化之后下一步是将该文件系统装载到目录树中。在内核添加新文件系统时会扫描一个链表查找与该文件系统相关的file_system_type实例。 proc 文件系统的超级块由proc_get_sb提供。该函数基于另一个内核辅助例程 get_sb_single借助proc_fill_super主要负责用一些定义后从不改变的值来填充 super block 的每个成员来填充一个super_block的新实例。
proc_sops 中对超级块的各个操作其中收集内核管理proc文件系统所需的各个函数
静态的proc_dir_entry实例
管理 /proc 数据项
1、数据项的创建和注册 新数据项分两个步骤添加到proc文件系统。首先创建proc_dir_entry的一个新实例填充描述该数据项的所有需要的信息。 使用fs/proc/generic.c中的proc_register将其注册到proc文件系统当中 创建数据项之后注册到 /proc 文件系统步骤 a.生成一个唯一 proc 内部编号向数据项赋予身份。get_inode_number 返回一个未使用的编号用于为动态生成的数据项 b.必须适当地设备proc_dir_entry实例的 next 和 parent 成员将新数据项集成到 proc 文件系统的层次结构中 c.如果此proc_dir_entry成员的proc_iops或proc_fops为NULL指针那么需要根据文件类型适当地设备指向file_operations和inode_operations结构实例的指针。
用于管理proc数据项 proc_mkdir创建一个新目录 proc_mkdir_mode创建一个新目录目录的访问权限可以显式指定 proc_symlink生成一个符号链接 remove_proc_entry从proc目录中删除一个动态生成的数据项