操作系统进程同步与互斥实验报告190410

  • 格式:ppt
  • 大小:195.50 KB
  • 文档页数:2

下载文档原格式

  / 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指导教师签名: 20 年 月 日
【备注】
来自百度文库
//b 正在访问临界资源! //a,c 不能进入自己的临界区,需等待 b 释放临界资源!
printf(“临界资源正在被进程 b 访问,进程 a,c 必须等待.\n”);
1.进程 a,b,c 分别访问临界资源时程序执行的结果如下. (a) (b) (c)
2.该程序初始化 N 为临界资源,根据输入 a,b,c,的值是否等于 N 来判断进程分别是否进入自己的临界区。当 a=N 表明进程 a 正在访问临界资源。此时程序执行的输出为:a=1,b=c=0 表示进程 b,c 不能进入自己的临界区。 3.该程序能较好地体现程序并发执行时的一种制约关系-互斥,但不能较好的反映进程的同步关系,所以该算 法有待改进,用以同时实现进程的同步和互斥。 4.该程序的输入变量具有限制,若输入除 0 和 1 的数据,则将视为 0 处理.改进的方法为修改 if 语句中的条件 为:1,即只要输入为非零,则有效。即逻辑表达式的值为真。(在逻辑数学里非零则表示为真!) 5.为了能较好的实现进程的同步,可以另外设一个标志量,标志临界资源是否正被访问,当 a,b,c 中的其一访 问临界资源时,其余 2 个将进行自我阻塞,当该进程执行完毕后,须将被阻塞的进程唤醒。
学生实验报告
姓名: 年级专业班级 学号 成绩
课程名称
操作系统
实验名称
实验 1 进程的同步与互斥
验证 设计
实验类型
综合 创新
【实验目的、要求】 1.通过编写程序实现进程同步和互斥,使学生掌握有关进程(线程)同步与互斥的原理以及解决进 程(线程)同步和互斥的算法,从而进一步巩固进程(线程)同步和互斥等有关的内容。2.了解 Windows2000/XP中多线程的并发执行机制、线程间的同步和互斥。3.掌握多道程序设计的基本理论、方 法和技术,培养学生多道程序设计的能力。 【实验内容】 在 Windows XP或 Windows 2000等操作系统环境下,使用 VC、VB、Delphi、java或 C等编程语言, 采用进程(线程)同步和互斥的技术编写程序实现生产者-消费者问题(或哲学家进餐问题、读者-写者 问题)或自己设计一个简单程序模拟进程(线程)同步和互斥在实际中的应用。 【实验环境】(含主要设计设备、器材、软件等) 计算机 C 语言编程软件 【实验步骤、过程】(含原理图、流程图、关键代码,或实验过程中的记录、数据等) 1.认真分析生产者-消费者经典进程同步互斥问题,对算法构思. 2.算法的流程图表示如下: 开 Y a=1? Y 输出 1,0,0 输出 0,1,0 b=1? Y N N 始 N
【实验结果或总结】(对实验结果进行相应分析,或总结实验的心得体会,并提出实验的改进意见)
//判断进程 a 是否占据临界资源!若 a==N,表明 a 访问临界资源! //a 正在访问临界资源! //b,c 不能进入自己的临界区,需等待 a 释放临界资源!
printf(“临界资源正在被进程 a 访问,进程 b,c 必须等待.\n”);
c=1?
输出 0,0,1
输出 0,0,0
结 3.启动计算机,运行 C 编程软件. 4.程序关键代码.

#define
N
1
//N 定义为临界资源!
printf("请输入三个进程:\n"); //初始状态为:临界资源处于空闲状态! loop:scanf("%d %d %d",&a,&b,&c); //输入的进程名为:a,b,c!进程名输入的先后代表进程的访问顺序! if(a==N) { printf("a=%d\n",a); printf("b=0,c=0\n"); } else if(b==N) { printf("b=%d\n",b); printf("a=0,c=0\n"); } 5.编译链接所编写的程序,在编译正确的情况下执行程序. 6.记录程序执行的结果(如下图所示). 注意:初始状态为:临界资源处于空闲状 20 10 年 12 月 16 日