- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验2进程同步和通信
实验1:熟悉Linux系统
熟悉Linux系统的基本操作和开发环境
目的
熟悉和掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。
启动、退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)…
C语言编辑、编译
内容及要求
熟练掌握Linux基本文件命令 ;
掌握Linux编辑程序、对源代码进行编译、连接、运行及调试的过程 ;
认真做好预习,书写预习报告 ;
实验完成后要认真总结、完成实验报告。
预习报告要求
题目,目的,要求 ;
对所要熟悉和掌握的命令的理解 ;
在Linux环境下编制、调试源程序的过程 。
实验报告要求
题目,目的,要求 ;
通过实验,掌握Linux的命令及其含义 ;
在Linux环境下编制、调试源程序的实际过程(每一步的具体说明 )。
实验2:进程状态
模拟进程状态转换及其PCB的变化
目的
自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。
内容及要求
设计并实现一个模拟进程状态转换及其相应PCB组织结构变化的程序;
独立设计、编写、调试程序;
程序界面应能反映出在模拟条件下,进程之间状态转换及其对应的PCB组织的变化。
内容及要求(续)
进程的状态模型(三状态、五状态、七状态或其它)可自行选择
内容及要求(续)
代码书写要规范,要适当地加入注释;
鼓励在实验中加入新的观点或想法,并加以实现;
认真进行预习,完成预习报告;
实验完成后,要认真总结,完成实验报告。
预习报告要求
题目,目的,要求 ;
初步设计的程序流程图;
初步的程序源代码、文档注释及必要的文字说明;
预期的程序运行结果 。
实验报告要求
题目,目的,要求 ;
程序流程图;
使用的数据结构及其说明;
程序源代码、文档注释及文字说明;
运行结果及其说明;
程序使用说明。
实验3:进程同步和通信
生产者和消费者问题模拟
目的
调试、修改、运行模拟程序,通过形象化的状态显示,使学生理解进程的概念,了解同步和通信的过程,掌握进程通信和同步的机制,特别是利用缓冲区进行同步和通信的过程。通过补充新功能,使学生能灵活运用相关知识,培养创新能力。
内容及要求
调试、运行给出的程序,从操作系统原理的角度验证程序的正确性;
发现并修改程序中的原理性错误或不完善的地方;
鼓励在程序中增加新的功能。完成基本功能的,得基本分;添加新功能的加分;
在程序中适当地加入注释;
认真进行预习,阅读原程序,发现其中的原理性错误,完成预习报告;
实验完成后,要认真总结,完成实验报告。
程序说明
所给程序模拟两个进程,即生产者(producer)进程和消费者(Consumer)进程工作;
生产者每次产生一个数据,送入缓冲区中;
消费者每次从缓冲区中取走一个数据。
共享缓冲区
生产指针
消费指针
Producer
Consumer
满
空
指针移动方向
程序说明
缓冲区可以容纳8个数据;
因为缓冲区是有限的,因此当其满了时生产者进程应该等待;当消费者取走一个数据后,应唤醒正在等待的生产者进程;
当缓冲区空时,消费者进程应该等待;当生产者向缓冲区放入了一个数据时,应唤醒正在等待的消费者进程。
这就是生产者和消费者之间的同步
程序说明(续)
每次写入和读出数据时,都将读和写指针加一。当指针到达缓冲区尾,重新将指针退回起点;
为简单起见,每次产生的数据为0-99的整数,从0开始,顺序递增;
两个进程的调度是通过运行者使用键盘来实现的。
程序使用的数据结构
进程控制块:包括进程名,进程状态和执行次数。
缓冲区:一个整数数组
缓冲区说明块:包括类型,读指针,写指针,读等待指针和写等待指针。
程序使用说明
启动程序后,如果使用‘p’键则运行一次生产者进程;
使用‘c’键则运行一次消费者进程;
使用‘e’键则退出程序;
通过屏幕可以观察到两个进程的状态和缓冲区变化的情况。
预习报告要求
题目,目的,要求
初步理解的程序流程图
拟修改、补充的源程序,指出原来程序错误所在,并说明程序中拟加入的功能。
新加功能预期运行结果的说明
实验报告要求
题目,目的,要求
程序流程图
最终运行的源程序及修改、补充的说明
运行结果及其说明
实验4:进程的管道通信
编程实现进程的管道通信程序
目的
加深对进程概念的理解,明确进程和程序的区别;
学习进程创建的过程,进一步认识并发执行的实质;
分析进程争用资源的现象,学习解决进程互斥的方法;
学习解决进程同步的方法;
掌握Linux系统进程间通过管道
文档评论(0)