课 程 实 验 报 告
课程名称:
操作系统课程设计
专业班级: 学 号: 姓 名: 指导教师: 报告日期:
计算机科学与技术学院
1
目录
实验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
2
实验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()函数,每次读取10个字节的内容,将内容存放到缓冲区数组,使用writebuf()函数将缓冲区的10个字节写到复制文件中,重复上述过程直到将整个复制过程完成。
任务2:实验的第二个阶段是实现进程的同步,实现的工具是QT。主要实现3个进程的同步,3个进程分别为:实时显示系统时间、循环显示0-9、显示1-1000的累加和。以上程序的刷新时间设置为1秒钟。使用的是c++编程语言。为了实现3个进程。需要为这3个进程分别创建3个不同的类,这3个不用的类具有不同的成员函数,使用成员函数来实现进程的所代表的具体细节。为了实现进程的结果能实时更新,需要调用connect()函数,该函数的功能是每当其中的timer每次发生变化时,就回调用该类的成员函数,也就是进程的具体实现,从而实时显示进程的细节内容。而3个进程的实现是在Main中创建3个类,对应3个进程,调用类的一些函数实现进程并发。
1
1.4 实验过程
给出实验过程的详细描述,分步骤说明实验的具体操作过程 任务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所示。
2
图 1-5 进程1
图 1-6 进程2
图 1-7 进程3
2.分别为这3个类编写其对应的成员函数,实现进行的具体功能。具体实现如图1-8,图1-9,图1-10所示。
3