欢迎来到天天文库
浏览记录
ID:48224840
大小:890.50 KB
页数:32页
时间:2020-01-18
《操作系统上机 os课设(高海昌 proc伪文件).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统课程设计proc文件系统高海昌procproc文件系统是Linux中的特殊文件系统,提供给用户一个可以了解内核内部工作过程的可读窗口,在运行时访问内核内部数据结构、改变内核设置的机制。保存系统当前工作的特殊数据,但并不存在于任何物理设备中;对其进行读写时,才根据系统中的相关信息即时生成;或映射到系统中的变量或数据结构;proc被称为‘伪文件系统’;其挂接目录点固定为/proc;‘manproc’进行了详细说明。proc/proc的文件可以用于访问有关内核的状态、计算机的属性、正在运行的进程的状态等信息。大部分/proc中的文
2、件和目录提供系统物理环境最新的信息。它们实际上并不存在磁盘上,也不占用任何空间。(用ls–l可以显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统。尽管/proc中的文件是虚拟的,但它们仍可以使用任何文件编辑器或像'more','less'或'cat'这样的程序来查看。当编辑程序试图打开一个虚拟文件时,这个文件就通过内核中的信息被凭空地(onthefly)创建了。得到有用的系统/内核信息proc文件系统可以被用于收集有用的关于系统和运行中的内核的信息。下面是一些重要的文件:/proc/cpuinf
3、o-CPU的信息(型号,家族,缓存大小等)/proc/meminfo-物理内存、交换空间等的信息/proc/mounts-已加载的文件系统的列表/proc/devices-可用设备的列表/proc/filesystems-被支持的文件系统/proc/modules-已加载的模块/proc/version-内核版本/proc/cmdline-系统启动时输入的内核命令行参数proc中的文件远不止上面列出的这么多。想要进一步了解,可以对/proc的每一个文件都'more'一下。一个系统的CPU信息,十分清楚地给出了这个系统的有用的硬件信息
4、。有关运行中的进程的信息/proc文件系统可以用于获取运行中的进程的信息。在/proc中有一些编号的子目录。每个编号的目录对应一个进程id(PID)。这样,每一个运行中的进程/proc中都有一个用它的PID命名的目录。这些子目录中包含可以提供有关进程的状态和环境的重要细节信息的文件。让我们试着查找一个运行中的进程,见下页。有关运行中的进程的信息“cmdline”启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息。“environ”进程的环境变量。“exe”指向运行的进程的可执行程序。“mem“当前进程所占用的内存空间,由
5、open、read和lseek等系统调用使用,不能被用户读取。“cwd”是指向进程当前工作目录的符号链接。“fd”包含指向进程使用的文件描述符的链接。“root”指向被这个进程看作是根目录的目录(通常是“/”)。“status”是进程的状态信息,包括启动进程的用户的用户ID(UID)和组ID(GID),父进程ID(PPID),还有进程当前的状态,比如“Sleelping”和“Running”。每个进程的目录都有几个符号链接。……通过/proc与内核交互上面讨论的大部分/proc的文件是只读的。而实际上/proc文件系统通过/proc
6、中可读写的文件提供了对内核的交互机制。写这些文件可以改变内核的状态,因而要慎重改动这些文件。/proc/sys目录存放所有可读写的文件的目录,可以被用于改变内核行为。/proc/sys/kernel-这个目录包含通用内核行为的信息。/proc/sys/kernel/{domainname,hostname}存放着机器/网络的域名和主机名。这些文件可以用于修改这些名字。通过/proc与内核交互这样,通过修改/proc文件系统中的文件,可以修改主机名或者文件系统的可分配文件句柄的最大数值等等。很多其他可配置的文件存在于/proc/sys
7、/kernel/。比如要修改共享内存上限大小,可在/proc/sys/kernel/shmmax文件中修改。这里不可能列出所有这些文件,同学们可以自己去这个目录查看以得到更多细节信息。作业1编写一个程序,用来读取和修改内核参数(任意参数即可,不涉及到内核编程,只需要使用标准C库中的函数)。构建可加载内核模块可加载内核模块(LKM)是用来展示/proc文件系统的一种简单方法,这是因为这是一种用来动态地向Linux内核添加或删除代码的新方法。LKM也是Linux内核中为设备驱动程序和文件系统使用的一种流行机制。构建可加载内核模块(续)同
8、学们在实验课程中重新编译过Linux内核,有些同学可能会发现在内核的配置过程中,有很多设备驱动程序和其他内核元素都被编译成了模块。如果一个驱动程序被直接编译到了内核中,那么即使这个驱动程序没有运行,它的代码和静态数据也会占据一部分空间
此文档下载收益归作者所有