proc文件系统的实现
难度系数:★★★☆☆
实验目的
掌握虚拟文件系统的实现原理
实践文件、目录、索引节点等概念
实验内容
在Linux0.11上实现procfs(proc文件系统)内的psinfo结点。当读取此结点的内容时,可得到系统当前所有进程的
状态信息。例如,用cat命令显示/proc/psinfo的内容,可得到:
# cat /proc/psinfo
pid state father counter start_time
0 1 -1 0 0
1 1 0 28 1
4 1 1 1 73
3 1 1 27 63
6 0 4 12 817
procfs及其结点要在内核启动时自动创建。相关功能实现在fs/proc.c文件内。
实验报告
完成实验后,在实验报告中回答如下问题:
1. 如果要求你在psinfo之外再实现另一个结点,具体内容自选,那么你会实现一个给出什么信息的结点?为
什么?
2. 一次read()未必能读出所有的数据,需要继续read(),直到把数据读空为止。而数次read()之间,进程的状态
可能会发生变化。你认为后几次read()传给用户的数据,应该是变化后的,还是变化前的?
1. 如果是变化后的,那么用户得到的数据衔接部分是否会有混乱?如何防止混乱?
2. 如果是变化前的,那么该在什么样的情况下更新psinfo的内容?
评分标准
自动创建/proc,20%
自动创建/proc/psinfo,20%
psinfo内容可读,20%
psinfo内容符合题目要求,20%
实验报告,20%
实验提示
procfs简介
正式的Linux内核实现了procfs,它是一个虚拟文件系统,通常被mount到/proc目录上,通过虚拟文件和虚拟目录
的方式提供访问系统参数的机会,所以有人称它为“了解系统信息的一个窗口”。这些虚拟的文件和目录并没有真
实地存在在磁盘上,而是内核中各种数据的一种直观表示。虽然是虚拟的,但它们都可以通过标准的系统调用
评论0