华科操作系统课程设计_华科操作系统实验.doc

华科操作系统实验

课 程 实 验 报 告

课程名称: 操作系统课程设计

姓 名:

指导教师:

报告日期:

计算机科学与技术学院

目录

实验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.任务描述:添

实验一 Linux系统的安装及用户界面的使用 一.实验目的 1. 了解Linux系统的安装、熟悉系统的启动过程和使用环境。 2. 掌握Linux环境下vi编辑器的使用方法。 3. 掌握Linux系统中编辑、编译、调试、运行一个C语言程序的全过程。 二.实验内容 1、实验要求 1. 在VMWare虚拟机环境或真实物理机器上,安装一个Linux操作系统。 2. 体验Linux操作系统中X Windows系统的使用。 3. 尝试Linux系统键盘命令的使用,并熟练掌握常用的基本命令。 4. 掌握命令行方式下vi编辑器的使用。 5. 编写一段C程序,使用系统调用fork()创建两个子进程。各进程显示不同的信息,如父进程显示字符“a”,子进程分别显示字符“b”和“c”。多次运行观察显示结果,并分析产生这种执行效果的原因。 实验二 Linux进程控制 一.实验目的 1. 掌握进程的概念,明确进程和程序的区别。 2. 认识和了解并发执行的实质。 二.实验内容 1、实验要求 1. 编写一段程序,使用系统调用fork()创建两个子进程。各进程显示不同的信息,如父进程显示字符“a”,子进程分别显示字符“b”和“c”。多次运行观察显示结果,并分析产生这种执行效果的原因。 2. 修改上面编写的程序,将每个进程的输出由单个字符改为循环输出一句话,如父进程显示:“parent:”加上进程ID,子进程分别显示:“Child1:”(或“Child2:”)加上自己的进程ID。再观察程序执行时屏幕上出现的现象,并分析原因。 3.一个父进程创建一个子进程,子进程通过exec系统调用执行另一个文件。各自的代码中显示不同的信息,观察其运行结果,分析两个进程并发执行的效果。 4. 编写程序创建如图所示的进程树,在每个进程中显示当前进程ID和父进程ID。 实验三 Linux进程间通信 一.实验目的 (1) 分析进程争用临界资源的现象,学习解决进程互斥的方法; (2) 学习如何利用进程的“软中断”、管道机制进行进程间的通信,并加深对上述通信机制的理解; (3) 了解系统调用pipe( )、msgget( )、msgsnd( )、msgrcv( )、msgctl( )、shmget( )、shmat( )、shmdt( )、shmctl( )的功能和实现过程,利用共享存储区机制进行进程间通信。 二、实验内容 1、实验要求 (1) 进程的控制 修改已编制的程序,将每个进程输出一个字符修改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析出现问题的原因,进一步理解各个进程争夺临界资源的情况。 如果在程序中使用系统调用locking( )来给每一个进程加锁,可以实现进程之间的互斥,试观察并分析出现的现象。 (2) 进程的软中断通讯 编制一段程序,实现进程的软中断通讯:使用系统调用fork( )创建两个子进程;再使用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按Del键);在捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发信号;子进程捕捉到信号后分别输出下列信息后终止: Child process1 is killed by parent! Child process2 is killed by parent! 父进程等待两个子进程都终止以后,输出如下信息后终止: Parent process in killed! (3) 进程的管道通讯 编制一段程序,实现进程的管道通讯:使用系统调用pipe( )建立一条管道线;两个子进程分别循环向这条管道写一句话: Child 1 is sending a message! Child 2 is sending a message! 而父进程则循环从管道中读出信息,显示在屏幕上。 实验报告 内含源代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值