西安邮电大学linux操作系统课程设计ls编写含源码.docVIP

  • 8
  • 0
  • 约1.87万字
  • 约 35页
  • 2018-12-17 发布于浙江
  • 举报

西安邮电大学linux操作系统课程设计ls编写含源码.doc

西安邮电大学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)

1亿VIP精品文档

相关文档