华科操作系统实验
课 程 实 验 报 告
课程名称: 操作系统课程设计
姓 名:
指导教师:
报告日期:
计算机科学与技术学院
目录
实验1:进程并发实验1
1.1 实验概述1
1.2 实验内容1
1.3 实验设计1
1.4 实验过程2
1.5实验结果6
1.6实验小结7
实验2:添加系统功能调用8
2.1 实验概述8
2.2 实验内容8
2.2.1 阶段1 添加源代码8
2.2.2 阶段2 连接新的系统功能调用9
2.2.3 阶段3 重建内核10
2.2.4 阶段4 修改grub文件13
2.3 实验小结14
实验3:添加设备驱动程序15
3.1 实验概述15
3.2 实验内容15
3.2.1 阶段1 编写设备驱动程序15
3.2.2 阶段2 编译设备驱动模块16
3.2.3 阶段3 加载设备驱动模块17
3.2.4 阶段4 生成设备文件18
3.2.4 阶段5 编写应用程序测试18
3.3实验小结19
实验总结20
实验1: 进程并发实验
1.1 实验概述
通过本次进程并发实验,让同学更加熟悉和理解Linux编程环境。
1.2 实验内容
本次实验的内容主要分为两个任务
1.编写一个C程序,用read、write等系统调用实现文件拷贝功能。命令形式:copy
2. 编写一个C程序,使用图形编程库 (QT/GTK)分窗口显示三个并发进程的运行(一个窗口实时显示当前系统时间,一个窗口循环显示0到9,一个窗口做1到1000的累加求和,刷新周期均为1秒)。
1.3 实验设计
任务1:实验1的第一个阶段需要实现一个简单的C语言程序,首先需要有一个复制的源文件,同时需要创建一个存放复制内容的复制文件,文件复制传输的中间站可以设置一个缓冲数组,此次试验设计了一个大小为10个字节的数组。打开复制源文件,返回一个INT标识,使用readbuf()函数每次读取writebuf()函数
任务为了实现进程的结果能实时更新需要调用connectimer每次发生变化时就回调用该类的成员函数也就是进程的具体实现从而实时显示进程的细节内容
任务1。
1.首先需要有复制源文件和复制目的文件,具体实现方式如图1-1所示。
图 1-1 打开文件
分别以只读和只写的方式将文件打开。
2.创建缓冲区,大小为10个字节的数组。如图1-2所示。
图 1-2 创建缓存区
3.通过循环读写的方式实现文件的复制,如图1-3所示。
图 1-3 文件复制
4.关闭文件。
5.其中的writebuf和readbuf是自己编写的一个读和写的函数,调用的是read和write函数。如图1-4所示。
图 1-4 读写函数
任务2。
1.首先根据3个不同的进程创建3个不同的类。如图1-5,图1-6,图1-7所示。
图 1-5 进程1
图 1-6 进程2
图 1-7 进程3
2.分别为这3个类编写其对应的成员函数,实现进行的具体功能。具体实现如图1-8,图1-9,图1-10所示。
图 1-8 进程显示时间
图 1-9 进程循环显示0-9
图 1-10 进程显示1-1000求和
3.在一个入口函数中创建3个不同的子进程,在进程中分别创建对应的类,使用类的方法来实现进程的功能。具体实现如图1-11.
图 1.11 入口函数
任务语言完成程序的编写其对应的结果有两种情况
图 1-12 运行结果图
将infile与outfile进行对比如图1-13,图1-14所示。
图 1-13 复制原文件infile
图 1-14 任务1复制输出文件
进过对比可以看出,程序运行的结果正确。
任务2.
任务2需要并发执行3个进程,3个进程分别显示系统当前的时间, 1-1000的求和以及循环显示0-9,刷新时间为1秒(1000ms),程序的运行结果如下图 1-15所示。
图 1-15 任务2进程运行结果图
1.6实验小结
本次实验分为
第connect(timer, SIGNAL(timeout()), this, SLOT(MainWindowtm()));每当实验2: 添加系统功能调用
2.1 实验概述
通过添加系统功能调用,掌握添加系统功能调用的方法。
2.2 实验内容
采用编译内核的方法,添加一个新的系统调用,实现文件拷贝功能
编写一个应用程序,测试新加的系统调用。
2.2.1 阶段1 添加源代码
1.任务描述:添