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

proc文件系统的实现

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

实验日期:2022年6月4日

班级:软嵌201

姓名:王思宇

学号:2030110749

一.实验目的

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

二.实验环境

linux-0.11

三.实验内容

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

cat/proc/psinfopidstatefathercounterstarttime01100110281411173311276360412817copy 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 procfs 及其结点要在内核启动时自动创建。

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

四.实验过程及数据记录

1.修改include/sys/stat.h文件图片描述 2.修改namei.c文件图片描述 3.修改init/main.c文件图片描述图片描述 4.修改fs/read_write.c文件 图片描述图片描述 5.新增/fs/proc.c文件图片描述图片描述图片描述图片描述 6.修改fs/Makefile文件图片描述 7.运行

图片描述

五.实验结果分析

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

答:如果再实现另一个结点,我想会选内存使用的信息情况,因为内存是整个系统中最重要的资源,系统的运行要靠内存的支持,能及时了解内存的使用情况是有意义的。

一次 read() 未必能读出所有的数据,需要继续 read(),直到把数据读空为止。而数次 read() 之间,进程的状态可能会发生变化。你认为后几次 read() 传给用户的数据,应该是变化后的,还是变化前的? + 如果是变化后的,那么用户得到的数据衔接部分是否会有混乱?如何防止混乱? + 如果是变化前的,那么该在什么样的情况下更新 psinfo 的内容?

答:如果再实现另一个结点,我想会选内存使用的信息情况,因为内存是整个系统中最重要的资源,系统的运行要靠内存的支持,能及时了解内存的使用情况是有意义的。

六.实验心得

对于proc文件还有点不太理解,需要多加练习

最新评论
暂无评论~