哈工大OS实验九--proc文件系统的实现

本文介绍了如何在Linux 0.11操作系统上实现proc文件系统中的psinfo节点。通过新建文件类型、修改namei.c、main.c、sys_read函数,以及实现proc.c,最终使用户能够通过cat命令查看/proc/psinfo获取系统进程状态信息。
摘要由CSDN通过智能技术生成

proc文件系统的实现

procfs简介

正式的Linux内核实现了procfs,它是一个虚拟文件系统,通常被 mount(挂载) 到/proc目录上,通过虚拟文件和虚拟目录的方式提供访问系统参数的机会,所以有人称它为 “了解系统信息的一个窗口”。

这些虚拟的文件和目录并没有真实地存在在磁盘上,而是内核中各种数据的一种直观表示。虽然是虚拟的,但它们都可以通过标准的系统调用(open()、read()等)访问。

例如/proc/meminfo中包含内存使用的信息,可以用 cat 命令显示其内容:

实验内容:在 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

$ cat /proc/hdinfo
total_blocks:    62000;
free_blocks:    39037;
used_blocks:    22963;
...

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

实现思路:建立一种新的文件类型

第一步,新建一个文件类型

在include/sys/stat.h文件中

#define S_IFPROC 0070000
#define S_ISPROC(m) (((m) & S_IFMT) == S_IFPROC)

第二步,修改namei.c文件

在fs/namei.c文件中

//在sys_mkmod()函数中
if(S_ISBLK(mode) || S_ISCHR(mode) || S_ISPROC(mode))
    inode->i_zone[0] = dev;
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值