华科计算机课程设计,华中科大操作系统课程设计报告(附源码).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代表字符设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值