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

proc文件系统的实现

实验名称:proc文件系统的实现

班级:物联网193

姓名:高祝鹏

学号:1930110719

一、实验目的

掌握虚拟文件系统的实现原理; 实践文件、目录、文件系统等概念。 ###二、实验环境 ###三、实验内容 在 Linux 0.11 上实现 procfs(proc 文件系统)内的 psinfo 结点。当读取此结点的内容时,可得到系统当前所有进程的状态信息。例如,用 cat 命令显示 /proc/psinfo 的内容,可得到procfs 及其结点要在内核启动时自动创建。相关功能实现在 fs/proc.c 文件内。 ###四、实验过程及数据记录 (1)定义一个类型宏 S_IFPROC,其值应在 0010000 到 0100000 之间,但后四位八进制数必须是 0(这是 S_IFMT 的限制,分析测试宏可知原因),而且不能和已有的任意一个 S_IFXXX 相同; (2)定义一个测试宏 S_ISPROC(m),形式仿照其它的 S_ISXXX(m) 图片描述 修改 fs/namei.c 文件中的 sys_mknod() 函数中的一行代码 图片描述 if (S_ISBLK(mode) || S_ISCHR(mode) || S_ISPROC(mode)) inode->i_zone[0] = dev; // 文件系统初始化 挂载根文件系统: void init(void) { // …… setup((void *) &drive_info); // …… } 1)建立 /proc 目录;建立 /proc 目录下的各个结点。本实验只建立 /proc/psinfo。 (2)建立目录和结点分别需要调用 mkdir() 和 mknod() 系统调用。因为初始化时已经在用户态,所以不能直接调用 sys_mkdir() 和 sys_mknod()。必须在初始化代码所在文件中实现这两个系统调用的用户态接口,即 API ###五、实验结果分析 .最理想的话,就是在进程状态发生改变时立即更新psinfo的内容.可以实现一个相应的中断和中断处理程序,每次进程状态改变且在read着psinfo的内容时,引发中断.中断处理程序专门负责更新相应进程在内核buffer中的状态信息 ###六、实验心得 有点难

最新评论
暂无评论~