操作系统课程设计报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计报告

江苏大学计算机学院 课程设计报告 课程名称 操作系统课程设计 实验学期 2015 至 2016 学年,第 1 学期 学生姓名 专业班级 学 号 指导教师 开 课 系 计算机系 操作系统课程组制 《操作系统》课程设计报告 课程设计题目:操作系统课程设计 设计时间:2016/1/10 课程设计目的与要求 需要完成的内容: 安装虚拟机:Vmware、Vmware palyer (free)(推荐)、Virtualbox(推荐)、VMLite、Xen、Virtuozzo、KVM 安装和使用Linux(推荐SUSE)(注意包含内核源码和内核开发工具等) Linux内核源代码配置和重编 找到VFS和一个具体文件系统的源代码(ext3或ext4) 读懂VFS和具体文件系统如何关联(如何体现virtual file switch) 找到具体文件系统的read或write函数,使用printk(使用方法和printf一样)向后台打印文件读写信息。(read或write函数选一个即可) 使用dmesg –c查看后台的输出。 可以附加的功能 复制ext3或ext4的源代码(注意与当前使用的文件系统有区别),修改Makefile文件,使用模块编译方式 修改ext3或ext4的源代码,实现新的文件系统。(至少需要修改文件系统的名称,最好能对文件写操作向系统后台打印出信息。) 动态加载和卸载新的文件系统。 课程设计内容 安装虚拟机 安装和使用Linux Linux内核源代码配置和重编 提取并动态加载和卸载新的文件系统 课程设计设备与环境 设备信息:PC 虚拟机:VM11 设计正文(包括分析与设计思路、各模块流程图、带注释的主要算法源码、内核编译过程以及动态模块加载过程等,如有改进或者拓展,请重点用一小节进行说明) (1) 安装虚拟机 (2) 安装和使用Linux(推荐SUSE)(注意包含内核源码和内核开发工具等) 安装OpenSUSE并下载相近版本的内核源码 初始内核版本 下载的源代码包 利用vmtools /home/a123/linux-3.12.51 *因为分配的磁盘空间比较小所以没有按照惯例把内核源码放在 附:磁盘分配情况 /swap(交换分区) 2.4G /(根目录) 11G /home(用户目录) 13G 解压好的内核源码文件在编译前需要稍作修改 Config文件可以用make menuconfig命令生成,但是需要自己选择相应的功能,太过复杂,这里有一个简便的方法 因为下载的内核源码是相近的版本所以可以使用现有版本的config文件该文件在boot目录下使用fig-3.11.6-4-desktop .config命令将此文件复制过来 注意:应当在内核所在的文件目录下使用此命令 复制成功 执行 虽然新版本的Linux可以直接执行make一步完成所有的编译工作,但此次课程设计仍然采用以前的编译的方式 执行 编译完成 执行 执行_install命令——安装模块 注: 在make menuconfig时我在General setup中把版本号改过执行 make install命令——安装新内核 Reboot重启 说明内核修改安装完毕,成功 VFS:虚拟文件系统,顾名思义。它为应用程序员提供一层抽象,屏蔽底层各种文件系统的差异。Linux的文件系统采用面向对象的方式设计,这使得Linux的文件系统非常容易扩展,我们可以非常容易将一个新的文件系统添加到Linux中。 super_block 位于linux/fs.h中 代码量巨大,此为部分代码 Ext4fs文件夹下的ext4文件夹内 此处打开file.c 用vim打开file.c 部分代码如下 在(4)中已经提到,VFS是C语言写的一个面向对象的设计,比如我们要调用alloc_inode方法: sb-s_op-alloc_inode(sb)。 这里与面向对象语言的差别是,面向对象语言里实例方法可以访问到this,这样就可以访问到自身的所有成员,但是在C里却做不到,所以需要将自身作为参数传入到函数中 图一表示了对文件写操作的调用过程 找到具体文件系统的read或write函数,使用printk(使用方法和printf一样)向后台打印文件读写信息。(read或write函数选一个即可) 因为Linux系统对文件的操作是通过函数调用来实现的所以在此我修改

文档评论(0)

整理王 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档