华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc
华中科技大学计算机学院
操作系统课程设计报告
班级:
学号:
姓名:彭博
时间:2010年3月
设计内容一:熟悉和理解Linux编程环境
编写一个C程序,实现文件拷贝功能。
2)编写一个C程序,使用下的图形库,分窗口显示三个并发进程的运行
运行./copy a.out b.out后:
实现了文件拷贝的功能。
2、运行./gtk_process结果如下:
终端输出:
点击每个按钮显示进程名:
设计内容二:掌握添加系统调用的方法
1)采用编译内核的方法,添加一个新的系统调用。
编写一个应用程序,测试新添加的系统调用。
系统调用的功能:文件拷贝。
实验结果:
测试运行前文件目录状态
运行./testmycopycall .sort .sort_mycopycall后
返回值是文件的大小,可以看见系统调用已经在当前目录生成了sort_mycopycall文件。
通过ls -l查看文件详细信息。
设计内容三:掌握添加设备驱动程序的方法
1)采用模块方法,添加一个新的设备驱动程序。
)要求添加字符设备的驱动。
)编写一个应用程序,测试添加的驱动程序。
运行结果如下:
可以看到输出成功。
设计内容四:理解和分析文件
1)了解文件的特点和使用方法。
2)监控系统状态,显示系统中若干部件的使用情况。
3)用图形界面显示系统监控状态。
附录(代码):
实验一:文件拷贝
实验一:并行程序的运行
实验二:系统调用
实验二:系统调用测试代码
实验三:添加模块
实验三:模块测试代码
实验四:资源管理器
1
实验分析:
文件拷贝相对来说比较简单,主要问题在程序的健壮性上,要充分考虑在文件拷贝过程中可能出现的问题。比如参数个数的合法性,源文件存在性,目的文件的合法性等等问题。
linux下面的图形库主要有gtk和qt两种,但这两个库没有本质的区别,都是基于面向对象的概念和信号的模型。最后选定使用gtk来完成本次实验。
实验分析:
使用的linux内核为2.6.31.12;因为2.6的内核和之前的2.4结果变化太大,所以老师给的一些参考资料有些已经过时,对于2.6内核添加系统调用在网上查了很久,就是2.6本身因为小版本的变化结果也有较大的变化,对于最新的内核一方面查看内核Documentation文件夹下的帮助文档,一方面参考了Amit Choudhary的Implementing a System Call on Linux 2.6 for i386 才最终将系统调用添加成功,总结步骤如下:
①vim /usr/src/linux26/arch/x86/include/asm/unistd_32.h添加#define __NR_mycopycall 337
②vim /usr/src/linux26/include/linux/syscalls.h添加:asmlinkage long sys_mycopycall(char *src,char *des);
③vim /usr/src/linux26/arch/x86/kernel/syscall_table_32.S添加:.long sys_mycopycall
④vim /usr/src/linux26/Makefile修改Makefile,以下参考了Amit Choudhary
Add mycall/ to core-y(Search for regex:core-y.*+=).You will be creating this directory.This direstory will contain the source file,header file and Makefile for our system call.
⑤root@ubuntu:/usr/src/linux26# mkdir mycopycall创建mycopycall目录,并将写的系统调用的源码放在这里
⑥vim /usr/src/linux26/mycopycall/Makefile创建Makefile文件,只需添加obj-y := mycopycall.o
⑦好了,可以开始编译内核了
实验分析:
模块的添加主要是按格式写代码,没有什么新的东西。由于是实现简单的字符设备,我主要在模块中定义了一个buffer,用来实现数据的存储,以便实现设备的读写。
主要注意几个步骤:
①、编写代码并编译。参考了2.6内核的文档使用make -C /usr/src/linux26 M=`pwd`命令进行。
②、编译成功后使用insmod ./pbdev.ko在当前系统中插入模块。
③、使用mknod /dev/pbdev c 251 0在/dev目录下建立一个链接文件,其中251是设备号,0代表字符设备。
④
华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc相关推荐
- 万年历java课程设计报告_java《万年历系统》课程设计报告附源码.doc
java<万年历系统>课程设计报告附源码.doc 学号<面向对象程序设计>课程设计报告题目:万年历系统专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:计算机与信息工程系 ...
- java万年历设计报告_JAVA《万年历系统》课程设计报告附源码.doc
JAVA<万年历系统>课程设计报告附源码 学号<> 课程设计报告 万年历系统专业:计算机科学与技术班级:姓名:学号:指导教师:成绩: 计算机与信息工程系 2014年6月6日目录 ...
- java计算机毕业设计ssm社区团购系统13kbd(附源码、数据库)
java计算机毕业设计ssm社区团购系统13kbd(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- java计算机毕业设计广东省梅州市宇恒节能科技有限公司(附源码、数据库)
java计算机毕业设计广东省梅州市宇恒节能科技有限公司(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...
- java计算机毕业设计高校体育器材及场地管理(附源码、数据库)
java计算机毕业设计高校体育器材及场地管理(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...
- java计算机毕业设计ssm校园舆情监控系统tgv13(附源码、数据库)
java计算机毕业设计ssm校园舆情监控系统tgv13(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...
- java计算机毕业设计web高校车辆调度系统设计与实现(附源码、数据库)
java计算机毕业设计web高校车辆调度系统设计与实现(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...
- java计算机毕业设计ssm理想电子商城网站c48j7(附源码、数据库)
java计算机毕业设计ssm理想电子商城网站c48j7(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ ...
- java计算机毕业设计web唐院寻人表白系统(附源码、数据库)
java计算机毕业设计web唐院寻人表白系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclis ...
最新文章
- SQL Server学习1(建数据库,建表,建约束)
- 第四天学习Java的笔记(方法入门,编译器优化)
- httpf发送 json_Java发送http请求发送json对象
- AD小技巧:update changes to PCB后如何调整布线
- Ian Goodfellow等提出自注意力GAN,ImageNet图像合成获最优结果!
- JAVA-初步认识-第七章-this关键字内存图解
- (转)水晶报表横向打印BUG处理
- 均匀分布产生高斯分布
- 【尚硅谷_数据结构与算法】一、数据结构与算法概述
- netbeans php 发布,Apache NetBeans 12.0 LTS 发布
- java根据经纬度得出中心点的经纬度
- C++实验3-税收计算
- selenium之判断是否定位正确
- 惠普笔记本固态装系统。
- 一些文字,纪念我远去的姑父
- DenseFuse: A Fusion Approach to Infrared and Visible Images 阅读笔记
- 确定性现象与随机现象
- C++入门>>初识类
- 第五届湖南省机器人大赛暨第十四届湖南省智能汽车大赛名单
- 2021年11月本周最新商品期货手续费和保证金一览
热门文章
- Microsoft AI - Custom Vision in C#
- .NET Core 2.0及.NET Standard 2.0
- ASP.NET Core + Angular 2 Template for Visual Studio
- WCF服务寄宿IIS时.SVC文件无法浏览的解决办法
- Android之提示This version of Android Studio cannot open this project, please retry with Android Studio
- C语言之理解(*(void (*)())0)()和signal函数
- Android之解决java.lang.NoSuchMethodError:android.os.powerManager.isInteractive问题
- 汇编语言之寄存器(CPU工作原理)
- ubuntu如何杀死进程
- Android之自定义ContentProvider详解