实验 进程的同步和互斥c语言,操作系统进程同步与互斥实验报告

《操作系统进程同步与互斥实验报告》由会员分享,可在线阅读,更多相关《操作系统进程同步与互斥实验报告(2页珍藏版)》请在人人文库网上搜索。

1、学 生 实 验 报 告姓名: 年级专业班级 学号 成绩 课程名称操作系统实验名称实验1 进程的同步与互斥实验类型验证 设计综合 创新【实验目的、要求】1.通过编写程序实现进程同步和互斥,使学生掌握有关进程(线程)同步与互斥的原理以及解决进程(线程)同步和互斥的算法,从而进一步巩固进程(线程)同步和互斥等有关的内容。2.了解Windows2000/XP中多线程的并发执行机制、线程间的同步和互斥。3.掌握多道程序设计的基本理论、方法和技术,培养学生多道程序设计的能力。【实验内容】在Windows XP或Windows 2000等操作系统环境下,使用VC、VB、Delphi、java或C等编程语言,。

2、采用进程(线程)同步和互斥的技术编写程序实现生产者-消费者问题(或哲学家进餐问题、读者-写者问题)或自己设计一个简单程序模拟进程(线程)同步和互斥在实际中的应用。【实验环境】(含主要设计设备、器材、软件等)计算机 C语言编程软件【实验步骤、过程】(含原理图、流程图、关键代码,或实验过程中的记录、数据等)1.认真分析生产者-消费者经典进程同步互斥问题,对算法构思.开 始2.算法的流程图表示如下:a=1?Y N输出1,0,0b=1?Y N c=1?输出0,1,0Y N输出0,0,0输出0,0,1结 束3.启动计算机,运行C编程软件.4.程序关键代码.#define N 1 /N定义为临界资源!pr。

3、intf(请输入三个进程:n); /初始状态为:临界资源处于空闲状态!loop:scanf(%d %d %d,&a,&b,&c); /输入的进程名为:a,b,c!进程名输入的先后代表进程的访问顺序!if(a=N) /判断进程a是否占据临界资源!若a=N,表明a访问临界资源! printf(a=%dn,a); /a正在访问临界资源!printf(b=0,c=0n); /b,c不能进入自己的临界区,需等待a释放临界资源!printf(“临界资源正在被进程a访问,进程b,c必须等待.n”);else if(b=N)printf(b=%dn,b); /b正在访问临界资源!printf(a=0,c=0n。

4、); /a,c不能进入自己的临界区,需等待b释放临界资源!printf(“临界资源正在被进程b访问,进程a,c必须等待.n”);5.编译链接所编写的程序,在编译正确的情况下执行程序.6.记录程序执行的结果(如下图所示).注意:初始状态为:临界资源处于空闲状20 10年 12 月16 日 【实验结果或总结】(对实验结果进行相应分析,或总结实验的心得体会,并提出实验的改进意见)1.进程a,b,c分别访问临界资源时程序执行的结果如下.(a) (b) (c)2.该程序初始化N为临界资源,根据输入a,b,c,的值是否等于N来判断进程分别是否进入自己的临界区。当a=N表明进程a正在访问临界资源。此时程序执。

5、行的输出为:a=1,b=c=0表示进程b,c不能进入自己的临界区。3.该程序能较好地体现程序并发执行时的一种制约关系-互斥,但不能较好的反映进程的同步关系,所以该算法有待改进,用以同时实现进程的同步和互斥。4.该程序的输入变量具有限制,若输入除0和1的数据,则将视为0处理.改进的方法为修改if语句中的条件为:1,即只要输入为非零,则有效。即逻辑表达式的值为真。(在逻辑数学里非零则表示为真!)5.为了能较好的实现进程的同步,可以另外设一个标志量,标志临界资源是否正被访问,当a,b,c中的其一访问临界资源时,其余2个将进行自我阻塞,当该进程执行完毕后,须将被阻塞的进程唤醒。指导教师签名: 20 年 月 日【备注。

你可能感兴趣的:(实验,进程的同步和互斥c语言)