- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西安邮电大学linux操作系统课程设计ls编写含源码
西安郵電大學
操作系统课程设计
报 告 书
院系名称
:
计算机学院
学生姓名
:
专业名称
:
软件工程
班 级
:
班
学号
:
时间
:
2015 年4月 13 日 至 2015 年 4月 24 日
实验目的
操作系统是控制和管理计算机硬件和软件资源的虚拟机,其中的文件系统是对软件和设备进行管理的系统,文件系统是操作系统中非常重要的一个模块,它的实现占用了操作系统源码的最大编码量,其好坏也直接影响着用户对操作系统的感受程度。通过对操作系统课程设计的实践,进一步加深对文件系统的认识和理解,并在此基础上培养学生的工程应用能力。实验分别从用户态和内核态两个层次实践文件系统的部分功能。
实验任务
2.1 ls实现
在linux下编程实现带参数的shell命令 ls,ls命令必须支持如下功能。
1.基本要求
支持 -l 参数;
输出结果按字典排序;
列出“.”文件,支持-a参数,在没有-a时候不显示隐藏文件;
显示记录总数。
2.高级要求
支持对给定的目录进行操作,如 ls /tmp;
输出结果分栏排序,每栏的宽度由这一栏最长的文件名决定,显示的栏数还受终端显示器的宽度影响,每一列尽可能的等宽;
正确显示文件特殊属性suid、sgid和sticky,参见联机帮助确保程序能处理各种情况;
支持标准的ls支持选项-R,它的功能是递归地列出目录中所有的文件包含子目录中的文件;
支持标准的ls支持选项-u,它会显示出文件的最后访问时间,如果用了-u而不用-l,会有什么结果?;
当关掉一个文件的读权限,就不能打开这个文件来读。如果从一个终端登录,打开一个文件,保持文件的打开状态,然后从另外的终端登录,去掉文件的读权限,这时有什么事情会发生?编写一个程序,先用open()打开一个文件,用read()读一些内容,调用sleep()等待20s以后,再读一些内容,从另外的终端,再等待的20s内去掉文件的读权限,这样会有什么结果?。
2.2编写内核模块显示目录或文件的信息。
使用内核模块编程;
调试《Linux操作系统原理与应用》第8章文件系统P215 的例子;
练习给内核模块传入参数,参考关于带参数的模块编程HYPERLINK /uid-796091-id-3206153.html/uid-796091-id-3206153.html;
给内核模块传入参数path,其中path为绝对路径;
当path为目录时,显示目录对应的dentrey结构中的相关信息(可打印的信息);
当path为文件时,显示文件对应的indoe结构中的相关信息(可打印的信息);
当路径错误时,有错误提示信息。
开发环境
设备名称
设备类型
配置类型
参数
Lenovo
G480
PC机
硬件配置
RAM 4G
软件配置
Ubuntu 32位
测试环境
设备名称
设备类型
配置类型
参数
Lenovo
G480
PC机
硬件配置
RAM 4G
软件配置
Ubuntu 32位
总体设计
5.1功能组织图
ls 功能图:
运行
运行命令
Ls-aL
Ls
-a
Ls
Ls
-l
Ls
-la
添加 /temp(指定目录)
添加 /temp(指定目录)
输出所有文件属性输出隐藏文件输出文件属性按字典顺序排序
输出所有文件属性
输出隐藏文件
输出文件属性
按字典顺序排序
文件权限:
运行命令
运行命令
chmod修改权限
chmod修改权限
读文件
读文件,ls显示权限信息
内核模块:
super_blocks:
运行命令
运行命令
加载模块
加载模块
加锁
加锁
遍历系统中的超级块
遍历系统中的超级块
打印文件设备号
打印文件设备号
打印文件系统名
打印索引结点号统计索引结点计数
打印索引结点号统计索引结点计数
卸载模块
卸载模块
path:
运行命令
运行命令
路径错误Path=文件
路径错误
Path=文件
Path=目录
显示目录信息显示错误信息显示文件信息
显示目录信息
显示错误信息
显示文件信息
5.2原理
linux?文件系统??:
linux下有普通文件、目录文件、链接文件、设备文件、管道文件这几种类型。但链接文件、设备文件、管道文件都可以当做普通文件看待,那实际也就只要区分普通文件和目录文件这两种了。而目录文件的内容就是它所包含所有文件和子目录的一个列表,所以只要打开目录文件并读取对应目录块里的那个列表数据,就可以得到些目录下所有文件和子目录的名称了。其实这个流程简单,就是:打开目录-读取内容-显示文件名称-关闭打开的目录。?
Linux系统中会有很多目录。每个目录中又会有很多文件。如果要列出一个非当前目录的内容或者是一个特定文件的信息,则需要在参数中给出目录名或文件名。如:?
? ls?/tmp?//列出/tmp
文档评论(0)