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

proc文件系统的实现

一、实验目的 1、掌握虚拟文件系统的实现原理; 2、实践文件、目录、文件系统等概念 二、实验环境 linux 三、实验内容 在 Linux 0.11 上实现 procf(proc 文件系统内 psinfo 结点。当读取此结点的内容时,可得到系统当前所有进程的状态信息。例如,用 cat 命令显示 /proc/psinfo 的内容,可得到: cat/proc/psinfopidstatefathercounterstarttime01100110281411173311276360412817 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 cat /proc/hdinfo total_blocks: 62000; free_blocks: 39037; used_blocks: 22963; ... procfs 及其结点要在内核启动时自动创建。 相关功能实现在 fs/proc.c 文件内。 四、实验过程及数据记录 实验环境准备: hit-oslab 实验环境简称 oslab,是一个压缩文件,使用下面的命令解压展开压缩包即可工作。

输入命令: 图片描述 增加新文件类型,修改/include/sys/stat.h 图片描述 4.2 让 mknod() 支持新的文件类型 1.使创建结点的mknod() 函数支持新的文件类型,修改 fs/namei.c 文件中的 sys_mknod() 函数 图片描述 图片描述

2.进程proc文件初始化,修改/init/main.c

图片描述

图片描述

3.编译内核 图片描述

运行,psinfo被正确open() 图片描述 图片描述

4.3 让 proc 文件可读 1.修改sys_read().首先在/fs/read_write.c中添加声明 图片描述

2.在proc_read()添加proc文件 图片描述

3.在fs里新建一个文件proc.c

图片描述

4.因为新建了一个文件,需要重新编写Makefile 图片描述

4.4 cat 命令的实现

重新编译通过

图片描述

输出cat命令,查看psinfo和hdinfo信息

图片描述 图片描述

五、实验结果分析 编译运行成功

六、实验心得 本次实验掌握了虚拟文件系统的实现原理,对实践文件、目录、文件系统等有了初步的认识。在 Linux 0.11 上实现 procfs(proc 文件系统)内的 psinfo 结点。当读取此结点的内容时,可得到系统当前所有进程的状态信息.

最新评论
暂无评论~