第一范文网 - 专业文章范例文档资料分享平台

华科操作系统试验

来源:用户分享 时间:2025/8/22 2:22:49 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

课程实验报告

操作系统课程设计

课程名称:

专业班级: 学 号: 姓 名: 指导教师:报告日期:

计算机科学与技术学院.

目录

实验1:进程并发实验 ............................................... 1 1.1 实验概述 .................................................. 1

1.2 实验内容 .................................................. 1

1.3 实验设计 .................................................. 1

1.4 实验过程 .................................................. 2

1.5实验结果 ................................................... 3

1.6实验小结 ................................................... 3

实验2:添加系统功能调用 ........................................... 4

2.1 实验概述 .................................................. 4

2.2 实验内容 .................................................. 4

2.2.1 阶段1 添加源代码 .................................... 4

2.2.2 阶段2 连接新的系统功能调用 .......................... 4

2.2.3 阶段3 重建内核 ...................................... 5

2.2.4 阶段4 修改grub文件 ................................. 6

2.3 实验小结 .................................................. 6

实验3:添加设备驱动程序 ........................................... 8

3.1 实验概述 .................................................. 8

3.2 实验内容 .................................................. 8

3.2.1 阶段1 编写设备驱动程序 .............................. 8

3.2.2 阶段2 编译设备驱动模块 .............................. 8

3.2.3 阶段3 加载设备驱动模块 .............................. 9

3.2.4 阶段4 生成设备文件 .................................. 9

3.2.4 阶段5 编写应用程序测试 .............................. 9

3.3实验小结 .................................................. 10

11......................................................... 实验总结

实验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.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所示。 图 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 入口函数

4.分别为这3个进程设计器对应的显示菜单,其中部分变量可以通过设置参数的方式进行调控。并将进程输出结果与Forms中的UI绑定,在进程结果显示 在界面中。.

1.5实验结果

任务1.

任务1的内容比较简单,主要使用C语言完成程序的编写,其对应的结果有两种情况,复制成功或者复制失败,从实验1的第一阶段的代码可以看出,失败阶段主要是是因为复制源文件打开失败造成的。下面主要演示完成正确赋值的情况。如图1-12所示。 图 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实验小结

本次实验分为2个任务,第一个任务完成文件的赋值拷贝。只要是运用write函数和read函数对文件进行读写操作。操作简单没有什么难度,通过写readbuf函数和writebuf函数使得读写函数使用起来更加的方便。运行结果达到了预期要求。

第2个任务需要实现进程的并行以及运行结果的刷新显示,编写的语言是采用c++语言,需要为3个进程创建3个不同的类,在同一个函数入口中对3个并发进行进行操作,并显示其对应的结果。其中遇到的问题主要集中在两个方便。一是怎样将输出结果与显示窗口进行绑定,绑定时需要注意什么以及如何调整。需要去网上查阅资料对对应的参数进行调整,由于QT的环境搭建的很好,学起来还是很轻松的。将菜单对应的标签与输出结果绑定即可。第二个问题是怎样实现1秒钟刷新一次输出结果呢?查阅资料发现可以使用connect(timer,

SIGNAL(timeout()), this, SLOT(MainWindowtm()));每当timer发生变化时就会调用SLOT中对应的函数,该函数就是对应的进程。每一秒调用一次从而实现 刷新。通过上述方法成功实现了进程并行与输出结果的刷新。.

实验2: 添加系统功能调用

2.1 实验概述

通过添加系统功能调用,掌握添加系统功能调用的方法。

2.2 实验内容

采用编译内核的方法,添加一个新的系统调用,实现文件拷贝功能 编写一个应用程序,测试新加的系统调用。 2.2.1 阶段1 添加源代码

1.任务描述:添加的系统功能调用需要实现一个文件拷贝的系统功能。 2.实验设计:本次实验需要添加的系统功能调用时文件的复制拷贝功能,由于实验1的任务1已经使用c语言实现了该功能则可以借用实验1任务1的思想,只是需要将函数做一些修改,包括函数名格式,入口参数,以及其中调用的其他函数。

3.实验过程:将调用函数名修改为以sys_开头的函数,命名为sys_mysyscall。文件的打开函数以及输出结果函数也需要使用内核函数,避免内存检查时出现错误。源代码如图2-1所示。 图 2-1 编写系统调用源代码

4.实验结果:完成系统功能调用源代码的设计。 2.2.2 阶段2 连接新的系统功能调用 1.任务描述:该阶段的任务主要是使得内核的其余部分知道该系统功能调用的存在。在该阶段需要编辑两个文件,include/linux/syscalls.h以及arch/x86/syscalls/syscall_32.tbl。

2.实验设计:该阶段需要修改include/linux/syscalls.h的代码添加新的系统接着需要修改number);sys_mysyscall(int long asmlinkage 调用的函数定义。. arch/x86/syscalls/syscall_32.tbl(系统调用表)在系统调用表中为新增的系统调用分配调用号和系统调用名。

3.实验过程:在系统调用定义中添加新的系统条用定义。操作如图2-2所示。 图 2-2 添加系统调用定义

接着需要在系统调用表中为该系统调用分配一个系统调用名和一个系统调用号。系统调用号为359,系统调用名为mysyscall如图2-3所示。 图2-3 分配系统调用号和调用名 4.实验结果:完成第二阶段添加系统定义以及为系统调用分配系统调用名和系统调用号。

2.2.3 阶段3 重建内核

1.任务描述: 在第三阶段主要完成系统内核的重建。 2.实验设计:,其完成的步骤为:1.生成内核配置文件,2.编译内核映像,3.生成并安装模块,4.安装新的系统。其中如果报错说没有对应的软件包则需要下载软件包。

3.实验过程:a.首先根据自己的内核版本下载对应的内核源码,生成内核配置文件,接着编译内核映像,实现的操作为:make menuconfig。运行成功回出现一个弹出框,可以直接退出,如图2-4所示。 图 2-4 生成内核配置文件1

退出后显示如下结果如图 2-5 所示。 图 2-5 生成内核配置文件2

b.当完成内核文件的配置下面需要完成内核配置映像。操作为指令为make bzImage。如图2-6所示。 图 2-6 编译内核映像

搜索更多关于: 华科操作系统试验 的文档
华科操作系统试验.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4to541umfr3pit886asl2xn8u9whcj00470_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top