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

proc文件系统的实现
  • 实验名称:熟悉实验环境
  • 实验日期:2021.7.8
  • 班级:物联网193
  • 姓名:何明标
  • 学号:1930110708

    一、实验目的

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

    二、实验环境

    hit-oslab实验环境简称oslab,是一个压缩文件(hit-oslab-linux-20110823.tar.gz)

    三、实验内容

    在 Linux 0.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
copy
$ cat /proc/hdinfo
total_blocks:    62000;
free_blocks:    39037;
used_blocks:    22963;
...
copy
copy

procfs 及其结点要在内核启动时自动创建。

相关功能实现在 fs/proc.c 文件内。

四、实验过程及数据记录

1.增加新文件类型,修改/include/sys/stat.h ,定义了几种文件类型和相应的测试宏: 图片描述

2.让mknod()支持新的文件类型,修改/fs/namei.c文件中的sys_mknod()函数的代码,在其中增加关于proc文件系统的判断: 图片描述

3.进程proc文件初始化,修改linux-0.11/init/main.c,建立/proc目录 图片描述

图片描述

4.编译

图片描述

5.运行 输入 ll /proc并cat,但是向 cat 返回了 EINVAL 错误。

图片描述

6.打补丁 /fs/read_write.c中添加声明extern

图片描述

7.在proc_read()添加proc文件

图片描述

8.添加proc文件

图片描述

9.修改shiyanlou/oslab/linux-0.11/fs/Makefile

图片描述

10.编译并运行

图片描述

图片描述

五、实验结果分析

结果运行正确

六、实验心得

通过本次实验,我掌握了虚拟文件系统的实现原理,实践文件、目录、文件系统等概念。根据提示一步步地修改文件,最终才能成功运行,虽然中间曾经一直编译报错,但最后一步步排查还是做出来了。

最新评论
暂无评论~