实验名称:proc文件系统的实现 实验日期:2022.5.24 班级:软嵌202 姓名:张孙儒轩 学号:1930110790 一、实验目的 1、掌握虚拟文件系统的实现原理;
2、实践文件、目录、文件系统等概念
二、实验环境 linux
三、实验内容 在 Linux 0.11 上实现 procf(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
$ cat /proc/hdinfo total_blocks: 62000; free_blocks: 39037; used_blocks: 22963; ...
procfs 及其结点要在内核启动时自动创建。
相关功能实现在 fs/proc.c 文件内。
四、实验过程及数据记录 实验环境准备:
hit-oslab 实验环境简称 oslab,是一个压缩文件,使用下面的命令解压展开压缩包即可工作。
输入命令:
l增加新文件类型,修改/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 结点。当读取此结点的内容时,可得到系统当前所有进程的状态信息.
学习时间 70分钟
操作时间 27分钟
按键次数 102次
实验次数 2次
报告字数 2453字
是否完成 完成