“操作系统原理实验”实验报告

proc文件系统的实现

实验目的

  • 掌握虚拟文件系统的实现原理;
  • 实践文件、目录、文件系统等概念。

实验内容 在 Linux 0.11 上实现 procfs(proc 文件系统)内的 psinfo 结点。当读取此结点的内容时,可得到系统当前所有进程的状态信息。例如,用 cat 命令显示 /proc/psinfo 的内容,可得到:

图片描述

copy procfs 及其结点要在内核启动时自动创建。 相关功能实现在 fs/proc.c 文件内。

实验步骤 图片描述 图片描述 图片描述 图片描述 图片描述 图片描述 图片描述 图片描述 图片描述 图片描述 图片描述 图片描述 回答问题

  1. 如果要求你在psinfo之外再实现另一个结点,具体内容自选,那么你会实现一个给出什么信息的结点?为什么?

答:会给出CPU的当前信息。因为CPU的信息也是一个重要的计算机参数,用户得到这个参数,就可以知道比如当前进程总数、CPU寄存器的状态等等信息,方便用户了解系统的信息。而linux0.11中没有方便查看这个参数的命令,所以加上这个参数会比较有价值。

  1. 一次read()未必能读出所有的数据,需要继续read(),直到把数据读空为止。而数次read()之间,进程的状态可能会发生变化。你认为后几次read()传给用户的数据,应该是变化后的,还是变化前的?
  2. 如果是变化后的,那么用户得到的数据衔接部分是否会有混乱?如何防止混乱?
  3. 如果是变化前的,那么该在什么样的情况下更新psinfo的内容?答:几次传给用户的数据是变化后的,因为如果每次读不完,那么下次会重新调用文件处理函数,向内核态的缓冲区重新写一遍进程的当前信息,靠文件指针约束某一次从那里开始给用户put,这样的话当进程信息有变化时,是把新的进程信息继续put给用户的。
最新评论
暂无评论~