华科操作系统实验
操作系统第1章-第4章(华中科技大学版)_OK
2. 什么是处理机的状态 是用来表明处理机,当前正在执行哪一类程序
的一种标志。 3. 处理机状态的分类 (1) 管态 (Supervisor mode,或系统态)
操作系统的程序执行时,处理机所处的状态 在此状态下运行的程序:
14
第一种:系统不干涉程序的执行 四. 多道成批处理、及批量操作系统 1.什么是多道成批处理
• 所有的作业输入外存; • 根据资源条件、及调度原则
选择一批作业进入内存 • 进入内存的作业按某种次序交替运行 • 当前运行的程序,只要不自动放弃CPU
就一直运行下去。 即: CPU不能被强行剥夺 ★
15
传输数据): 便将另一道程序投入运行。
★
12
(2) 多道运行的特征 • 多道 • 宏观上并行 • 微观上串行 执行系统采用多道程序设计技术后,就形成
了操作系统。
★
13
手工操 作阶段
联机 批处理
脱机 批处理
批处理
执行 系统
多道程序系统 多道批 分时 处理系统 系统 实时系统 操作系统形成
问题:只有一个CPU,在内存中运行的每一个程序 如何才能得到CPU 、并保持对其的占有的呢? ★
40
二、微机存储器的结构
速度快 成本高 容量小
指令 CACHE
数据
CACHE
内存
★
外存
操作系统实验报告--华科
实验一哲学家就餐问题
一、实验目的
1、熟练使用VC++6.0编译环境,调试并正确运行程序。
2、理解哲学家就餐问题中出现的问题,进而掌握死锁的必要条件。
3、理解源程序中产生和防止死锁的算法,及相关窗口操作。
4、熟悉哲学家就餐问题流程。
5、在VC++6.0环境下编译哲学家就餐问题演示程序,考虑其他解决死锁方法.
二、实验原理
1、问题描述
有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,
每人面前有一只空盘子,每两人之间放一只筷子。每个哲学
家的行为是思考,感到饥饿,然后吃通心粉。为了吃通心粉,
每个哲学家必须拿到两只筷子,并且每个人只能直接从自己
的左边或右边去取筷子。
2、分配方式
方式一(不会进入死锁)
仅当一个哲学家左右两边的筷子都可用时,才允许他拿
筷子。这样要么一次占有两只筷子(所有线程需要的资源)
进行下一步的吃通心粉,然后释放所有的资源;要么不占用资源,这样就不可能产生死锁了。
方式二(会进入死锁)
当筷子(资源)可用时,先分配左边的筷子,等待一会后再分配右边的筷子,由于这个过程中,左边的筷子一直没有释放,就有可能产生死锁了。
3、程序运行说明
程序运行过程中会弹出一个MessageBox提示操作者操作:
1)第一个对话框用于选择运行模式
a.选择yes 表示采用的是运行的防止死锁的方式,这样的话整个程序可以一直运行下去,不会产生死锁。
b.选择no 表示运行产生死锁的方式会弹出第二个对话框。
2)第二个对话框用于选择运行时,线程运行的时间
a. 选择res 线程时间比较短,很快就可以死锁
b.选择no 线程时间跟选择yes 时候的时间差不多,产生死锁的时间稍微长一点。
华科_计算机系统实验报告
课程实验报告课程名称:计算机系统基础
专业班级:
学号:
姓名:
指导教师:
报告日期:年月日
计算机科学与技术学院
目录
实验1: (1)
实验2: (7)
实验3: (24)
实验总结 (34)
实验1:数据表示
1.1 实验概述
实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。
实验目标:加深对数据二进制编码表示的了解。
实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。
实验语言:c。
实验环境:linux
1.2 实验内容
需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。
1)位操作
表1列出了bits.c中一组操作和测试位组的函数。其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。
你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。
表1 位操作题目列表
2)补码运算
表2列出了bits.c中一组使用整数的补码表示的函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。
表2 补码运算题目列表
3)浮点数操作
表3列出了bits.c中一组浮点数二进制表示的操作函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。
华中科技大学计算机系统基础实验报告
课程实验报告课程名称:计算机系统基础
专业班级:
学号:
姓名:
指导教师:
报告日期:2016年5月24 日
计算机科学与技术学院
目录
实验1: (2)
实验2: (9)
实验3: (22)
实验总结 (30)
实验1:数据表示
1.1 实验概述
本实验的目的是更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。
实验中,你需要解开一系列编程“难题”——使用有限类型和数量的运算操作实现一组给定功能的函数,在此过程中你将加深对数据二进制编码表示的了解。实验语言:c; 实验环境: linux
1.2 实验内容
需要完成bits.c 中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。
1.3 实验设计
源码如下:
/*
* lsbZero - set 0 to the least significant bit of x
* Example: lsbZero(0x87654321) = 0x87654320
* Legal ops: ! ~ & ^ | + << >>
* Max ops: 5
* Rating: 1
*/
int lsbZero(int x) {
//x右移一位再左移一位实现把最低有效位置0
x = x>>1;
x = x<<1;
return x;
}
/*
* byteNot - bit-inversion to byte n from word x
* Bytes numbered from 0 (LSB) to 3 (MSB)
* Examples: getByteNot(0x12345678,1) = 0x1234A978
华科操作系统实验报告
课程实验报告课程名称:操作系统原理
专业班级:cs1209
学号:
姓名:
指导教师:
报告日期: 2015年1月5日
计算机科学与技术学院
目录
1 实验一Linux线程及信号灯..........................................................................1
1.1 实验目的与内容................................................................................. (1)
1.1.1实验目的................................................................................. (1)
1.1.2 实验内容...................................................................................... (1)
1.2 实验过程................................................................................................1
1.2.1 预备知识.........................................................................................1
华科操作系统实验报告
华科操作系统实验报告
一、实验目的
操作系统是计算机系统的核心组成部分,对于理解计算机的工作原
理和提高计算机应用能力具有重要意义。本次华科操作系统实验的主
要目的是通过实际操作和实践,深入理解操作系统的基本概念、原理
和功能,掌握操作系统的核心技术和应用方法,提高我们的实践能力
和问题解决能力。
二、实验环境
本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 2004),开发工具包括 Visual Studio Code、GCC 编译器等。实验硬件环境为个
人计算机,配置为英特尔酷睿 i7 处理器、16GB 内存、512GB 固态硬盘。
三、实验内容
1、进程管理
进程创建与销毁
进程调度算法模拟
进程同步与互斥
2、内存管理
内存分配与回收算法实现
虚拟内存管理
3、文件系统
文件操作与管理
文件系统的实现与优化
4、设备管理
设备驱动程序编写
设备分配与回收
四、实验步骤及结果
1、进程管理实验
进程创建与销毁
首先,使用 C 语言编写程序,通过系统调用创建新的进程。在程序中,使用 fork()函数创建子进程,并在子进程和父进程中分别输出不同的信息,以验证进程的创建和执行。实验结果表明,子进程和父进程能够独立运行,并输出相应的信息。
进程调度算法模拟
实现了先来先服务(FCFS)、短作业优先(SJF)和时间片轮转(RR)三种进程调度算法。通过模拟多个进程的到达时间、服务时间和优先级等参数,计算不同调度算法下的平均周转时间和平均等待时
间。实验结果显示,SJF 算法在平均周转时间和平均等待时间方面表现较好,而 RR 算法能够提供较好的响应时间和公平性。
华中科技大学操作系统课件全集
通道有专用的I/O处理器,可与CPU并行工作 可实现 I/O联机处理
中断:是指CPU在收到外部中断信号后,停止原来工 作,转去处理该中断事件,完毕后回到原来断点继续 工作。
多道批处理系统(续)
多道程序设计:
指在主存(内存)中存放一个以上用户作业,使之同 时处于运行状态,共享系统资源。 起因:高速CPU与低速I/O设备不匹配。 根本目的:提高CPU利用率;提高内存利用率;提高 I/O利用率;增加系统吞吐量。 多道:内存中同时存放几个作业; 宏观上并行运行:都处于运行状态,但都未运行完; 微观上串行运行:各作业交替使用CPU;
缺点:
4、分时与实时操作系统
分时计算机系统: 由于中断技术的使用,使得一台计算 机能连接多个用户终端,用户可通过各自的终端使用和 控制计算机,我们把一台计算机连接多个终端的计算机 系统称为分时计算机系统。或称分时系统。 分时技术: 把处理机的响应时间分成若于个大小相等 (或不相等)的时间单位,称为时间片(如100毫秒), 每个终端用户获得CPU,就等于获得一个时间片,该用户 程序开始运行,当时间片到(用完),用户程序暂停运 行,等待下一次运行。
CPU 单道 多道 17% 33% 打印机 33% 66% 磁带 50% 100%
多道批处理系统(续)
华中科技大学计算机学院操作系统课程设计报告[1]
华中科技大学
嵌入式操作系统课程设计实验报告
院系: 计算机科学与技术学院
专业:
班级:
姓名:
指导老师:
报告时间:
计算机科学与技术学院
目录
1.课程设计目的 (3)
2.课程设计环境搭建 (3)
3.内容一:熟悉和理解Linux编程环境
内容要求 (5)
设计过程及实现 (5)
4.内容二:掌握添加系统调用的方法
内容要求 (9)
设计过程及实现 (9)
5.内容三:掌握添加设备驱动程序的方法
内容要求 (17)
设计过程及实现 (17)
6.内容四:理解和分析/proc文件
内容要求 (22)
设计过程及实现 (22)
1 课程设计目的
(1)掌握Linux操作系统的使用方法;
(2)了解Linux系统内核代码结构;
(3)掌握实例操作系统的实现方法。
2 课程设计环境搭建
(1)windows 7上,利用虚拟机软件VMware软件搭建的linux平台:◎Ubuntu (安装包:)
◎内核:
(2)更改root登录:
在现阶段Ubuntu的系统中,是不允许直接以root身份登录系统的,但是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法:
◎开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端:
初始化/修改root密码
sudo passwd root
用vi编辑器修改这个文件:
sudo vi /etc/lightdm/
在文件最后加入这么一行代码:
greeter-show-manual-login=true
嵌入式操作系统实验报告华中科技大学
本科实验报告
课程名称:嵌入式操作系统实验报告
姓名:
学院:计算机科学与技术
专业:计算机科学与技术
年级:
学号:
指导教师:
2007年12月2日
试验一ADS、中断、串口通讯
一实验目的
1、熟悉ADS 1.2开发工具--创建、编译、下载、调试工程
2、中断--中断响应、分发、处理
3、串口通讯--串口控制器初始化、收/发数据
二实验内容
1 修改uC/OS-II的main函数
2编写串口消息接受任务函数
3编写串口中断处理函数
三参考代码
int main(void)
{
ARMTargetInit(); //硬件初始化
OSInit(); //操作系统初始化
LCD_Init(); //LCD初始化
LCD_Refresh();
clearscreen(); //清屏
OSTaskCreate(Task1, (void *)0,
(OS_STK *)&task1_Stack[STACKSIZE-1], Task1_Prio);
//创建串口数据接收进程message=OSMboxCreate((void*)NULL); //创建消息队列
OSAddTask_Init(0); //创建idle进程,设置时钟中断
OSStart(); //操作系统开始运行,开始调度
return 0;
}//main
void Task1(void *Id)
{
U8 *c1, err;
U16 timeout=0;
InitUart(); //串口初始化;
while(1) //循环接收串口数据并打印到LCD
{
c1 = OSMboxPend(message, timeout,&err); //等待串口数据,进入等待状态
华科操作系统教程(第五版)费祥林部分习题答案
第一章操作系统概论
应用题
T2、
T4、
第二章处理器管理
应用题
T1:
只能在内核态运行的指令:(3)、(4)、(5)、(6)、(7)。T11:
(4)SJF调度算法
T15:
HRRF性能较好。
第三章同步、通信与死锁
应用题:2、5(1)、38(1),T2、
T5、
T38(1)
第四章存储管理
二、应用题:3(3)、5、20、30
T3(3)
答:作业的物理块数为3时,FIFO为9次,75%;LRU为10次,83%;OPT为7次,58%;
作业的物理块数为4时,FIFO为10次,83%,LRU为8次,66%,OPT为6次,50%。
其中FIFO出现Belady现象。
T5、
T20、
T30:
(1)页面访问系列为1,1,2,2,1,4,2,3,3,5,5,4 (2) FIFO5次,41.6%;LRU为6次,50%。
嵌入式操作系统实验报告华中科技大学
本科实验报告
课程名称:嵌入式操作系统实验报告
姓名:
学院:计算机科学与技术
专业:计算机科学与技术
年级:
学号:
指导教师:
2007年12月2日
试验一ADS、中断、串口通讯
一实验目的
1、熟悉ADS 1.2开发工具--创建、编译、下载、调试工程
2、中断--中断响应、分发、处理
3、串口通讯--串口控制器初始化、收/发数据
二实验内容
1 修改uC/OS-II的main函数
2编写串口消息接受任务函数
3编写串口中断处理函数
三参考代码
int main(void)
{
ARMTargetInit(); //硬件初始化
OSInit(); //操作系统初始化
LCD_Init(); //LCD初始化
LCD_Refresh();
clearscreen(); //清屏
OSTaskCreate(Task1, (void *)0,
(OS_STK *)&task1_Stack[STACKSIZE-1], Task1_Prio);
//创建串口数据接收进程message=OSMboxCreate((void*)NULL); //创建消息队列
OSAddTask_Init(0); //创建idle进程,设置时钟中断
OSStart(); //操作系统开始运行,开始调度
return 0;
}//main
void Task1(void *Id)
{
U8 *c1, err;
U16 timeout=0;
InitUart(); //串口初始化;
while(1) //循环接收串口数据并打印到LCD
{
c1 = OSMboxPend(message, timeout,&err); //等待串口数据,进入等待状态
华科操作系统实验报告
课程实验报告课程名称:操作系统原理
专业班级:
学号:
姓名:
指导教师:
报告日期:
计算机科学与技术学院
目录
目录 (2)
实验一:线程的同步 (3)
一、实验目的 (3)
二、实验内容 (3)
三、实验心得 (4)
实验二:誊抄实验的进程实现 (4)
一、实验目的 (4)
二、实验内容 (4)
三、实验心得 (4)
实验三:Linux文件目录操作 (4)
一、实验目的 (4)
二、实验内容 (4)
三、实验心得 (4)
实验一:线程的同步
一、实验目的
1、掌握Linux系统用户界面中键盘命令的使用。
2、学会一种Linux下的编程环境。
3、掌握Linux下进(线)程的概念。
4、了解Linux进程同步与通信的主要机制,并通过信号灯操作实现进程间的同步与互斥。
二、实验内容
1、程序要求
两个线程,共享公共变量a
线程1负责计算(+1)
线程2负责打印
2、运行环境
软件配置(含操作系统版本):ubuntu -
硬件:PC
3、源程序
源程序:
#include <>
#include <>
#include <>
#include <sys/>
#include <sys/>
#include <sys/>
int semid;
int a=0;
typedef union senum
{
int val;
struct semid_ds *buf;
unsigned short *array;
struct seminfo *_buf;
}SEM_CTL_UN;
void P(int semid,int index)
华中科技大学计算机学院操作系统课程设计报告
华中科技大学
嵌入式操作系统课程设计实验报告
院系: 计算机科学与技术学院
专业:
班级:
姓名:
指导老师:
报告时间:
计算机科学与技术学院
目录
1.课程设计目的 (3)
2.课程设计环境搭建 (3)
3.内容一:熟悉和理解Linux编程环境
3.1 内容要求 (5)
3.2 设计过程及实现 (5)
4.内容二:掌握添加系统调用的方法
4.1 内容要求 (9)
4.2 设计过程及实现 (9)
5.内容三:掌握添加设备驱动程序的方法
5.1 内容要求 (17)
5.2 设计过程及实现 (17)
6.内容四:理解和分析/proc文件
6.1 内容要求 (22)
6.2 设计过程及实现 (22)
1 课程设计目的
(1)掌握Linux操作系统的使用方法;
(2)了解Linux系统内核代码结构;
(3)掌握实例操作系统的实现方法。
2 课程设计环境搭建
(1)windows 7上,利用虚拟机软件VMware软件搭建的linux平台:◎Ubuntu 11.10 (安装包:ubuntu-11.10-desktop-i386)
◎内核:linux-headers-3.0.0-12-generic
(2)更改root登录:
在现阶段Ubuntu的系统中,是不允许直接以root身份登录系统的,但是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法:
◎开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端:
初始化/修改root密码
华中科技大学操作系统实验报告
华中科技大学电信学院
操作系统实验报告电子信息与通信学院班级:电信1202班
姓名:XX
学号:U2012133XX
时间:2014年11月5日
实验一哲学家就餐问题
一.实验目的
1.熟悉哲学家就餐问题流程,编译程序,了解程序运行过程。
2.理解利用设置信号量及P、V操作解决进程间的互斥这一方法,并了解其代码实现的
相关方法,提炼出代码的思想(用伪代码表示)。
3.对哲学家就餐问题提出新的解决方式,并简述其实现过程。
二.实验原理
1、问题描述
有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子。每个哲学家的行为是思考,感到饥饿,然后吃通心粉。为了吃通心粉,每个哲学家必须拿到两只筷子,并且每个人只能直接从自己的左边或右边去取筷子。
2、分配方式
方式一(不会进入死锁)
仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子。这样要么一次占有两只筷子(所有线程需要的资源)进行下一步的吃通心粉,然后释放所有的资源;要么不占用资源,这样就不可能产生死锁了。
方式二(会进入死锁)
当筷子(资源)可用时,先分配左边的筷子,等待一会后再分配右边的筷子,由于这个过程中,左边的筷子一直没有释放,就有可能产生死锁了。
3、程序运行说明
程序运行过程中会弹出一个MessageBox提示操作者操作:
1)第一个对话框用于选择运行模式
a.选择yes 表示采用的是运行的防止死锁的方式,这样的话整个程序可以一直运行下去,不会产生死锁。
b.选择no 表示运行产生死锁的方式会弹出第二个对话框。
2)第二个对话框用于选择运行时,线程运行的时间
华中科技大学计算机学院操作系统课程设计报告1
华中科技大学
嵌入式操作系统课程设计实验报告
院系: 计算机科学与技术学院
专业:
班级:
姓名:
指导老师:
报告时间:
计算机科学与技术学院
目录
1、课程设计目的 (3)
2、课程设计环境搭建 (3)
3、内容一:熟悉与理解Linux编程环境
3、1 内容要求 (5)
3、2 设计过程及实现 (5)
4、内容二:掌握添加系统调用的方法
4、1 内容要求 (9)
4、2 设计过程及实现 (9)
5、内容三:掌握添加设备驱动程序的方法
5、1 内容要求 (17)
5、2 设计过程及实现 (17)
6、内容四:理解与分析/proc文件
6、1 内容要求 (22)
6、2 设计过程及实现 (22)
1 课程设计目的
(1)掌握Linux操作系统的使用方法;
(2)了解Linux系统内核代码结构;
(3)掌握实例操作系统的实现方法。
2 课程设计环境搭建
(1)windows 7上,利用虚拟机软件VMware软件搭建的linux平台:
◎Ubuntu 11、10 (安装包:ubuntu-11、10-desktop-i386)
◎内核:linux-headers-3、0、0-12-generic
(2)更改root登录:
在现阶段Ubuntu的系统中,就是不允许直接以root身份登录系统的,但就是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法:
◎开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端:
初始化/修改root密码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华科操作系统实验 Corporation standardization office #QS8QHH-HHGX8Q8-GNHHJ8
课程实验报告
课程名称:操作系统课程设计
专业班级:
学号:
姓名:
指导教师:
报告日期:
计算机科学与技术学院
目录
实验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中对应的函数,该函数就是对应的进程。每一秒调用一次从而实现刷新。通过上述方法成功实现了进程并行与输出结果的刷新。