西安郵電大學
操作系统课程设计
院系名称学生姓名专业名称班 级学号时
间报 告 书
计算机学院
** 软件工程 **班 *****
2016 年5月 9 日 至 2016 年 5月 20 日
: : : : : :
1 实验目的
操作系统是控制和管理计算机硬件和软件资源的虚拟机,其中的文件系统是对软件和设备进行管理的系统,文件系统是操作系统中非常重要的一个模块,它的实现占用了操作系统源码的最大编码量,其好坏也直接影响着用户对操作系统的感受程度。通过对操作系统课程设计的实践,进一步加深对文件系统的认识和理解,并在此基础上培养学生的工程应用能力。实验分别从用户态和内核态两个层次实践文件系统的部分功能。
2 实验任务
2.1 ls实现
在linux下编程实现带参数的shell命令 ls,ls命令必须支持如下功能。 1.基本要求 (1) 支持 -l 参数; (2) 输出结果按字典排序;
(3) 列出“.”文件,支持-a参数,在没有-a时候不显示隐藏文件; (4) 显示记录总数。 2.高级要求
(1) 支持对给定的目录进行操作,如 ls /tmp;
(2) 输出结果分栏排序,每栏的宽度由这一栏最长的文件名决定,显示的栏数还受终端显示器的宽度影响,每一列尽可能的等宽;
(3) 正确显示文件特殊属性suid、sgid和sticky,参见联机帮助确保程序能处理各种情况;
(4) 支持标准的ls支持选项-R,它的功能是递归地列出目录中所有的文件包含子目录中的文件;
(5) 支持标准的ls支持选项-u,它会显示出文件的最后访问时间,如果用了-u而不用-l,会有什么结果?;
(6) 当关掉一个文件的读权限,就不能打开这个文件来读。如果从一个终端登录,打开一个文件,保持文件的打开状态,然后从另外的终端登录,去掉文件的读权限,这时有什么事情会发生?编写一个程序,先用open()打开一个文件,用read()读一些内容,调用sleep()等待20s以后,再读一些内容,从另外的终端,再等待的20s内去掉文件的读权限,这样会有什么结果?。
2.2编写内核模块显示目录或文件的信息。 (1) 使用内核模块编程;
(2) 调试《Linux操作系统原理与应用》第8章文件系统P215 的例子; (3) 练习给内核模块传入参数,参考关于带参数的模块编程http://blog.chinaunix.net/uid-796091-id-3206153.html; (4) 给内核模块传入参数path,其中path为绝对路径;
1) 当path为目录时,显示目录对应的dentrey结构中的相关信息(可打印
的信息);
2) 当path为文件时,显示文件对应的indoe结构中的相关信息(可打印的
信息);
3) 当路径错误时,有错误提示信息。
3 开发环境
设备名称 设备类型 配置类型 硬件配Lenovo G480 PC机 置 软件配置 Ubuntu 32位 参数 RAM 4G
4 测试环境
设备名称 设备类型 配置类型 硬件配Lenovo G480 PC机 置 软件配置 Ubuntu 32位 参数 RAM 4G
5 总体设计
5.1功能组织图
ls 功能图:
文件权限:
内核模块:
读文件,ls显示权限信息 chmod修改权限 运行命令 按字典顺序排序 输出隐藏文件 输出文件属性 输出所有文件属性 输出所有文件 Ls Ls -a Ls -l Ls -u Ls -R 运行命令
相关推荐: