欢迎来到天天文库
浏览记录
ID:56252012
大小:172.00 KB
页数:6页
时间:2020-03-25
《操作系统原理.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、湖北工业大学计算机学院《信息安全概论》课程实验报告实验名称进程同步算法的实现模拟实验序号姓名杨海铮系院专业网络工程班级三班学号1010322327实验日期2012.11.06指导教师阮鸥成绩一、实验目的进程的同步是操作系统处理机管理的重要内容,本实验要求学生理解生产者与消费者问题模型,掌握解决该问题的算法思想,学会使用同步机制。二、实验内容与要求(1)生产者—消费者问题。Get、put二进程共用缓冲区s(大小为每次只存放一个记录)。Get负责输入记录到缓冲区s,put负责把t中的记录取出打印。(2)设计进程PCB结构和三种进程状态的队列,可以实现PCB队列的插入、删
2、除、排序功能。(3)设计各进程使用的信号灯,画出各进程的P、V操作实现流程图;(4)实现进程同步,完成记录的正常输出,要能够通过程序运行表现出对缓冲区s的进行临界区互斥和进程同步的思想(最好能记录或输出二个进程的实时状态和变化过程、二个进程队列的实时内容、几个缓冲区中实时内容,输出到屏幕上,这个过程同时记录在一个文本文件中);(5)编程语言不限制,tc2.0,vc6.0,.net,java都可以。6网络工程系·2009年编制湖北工业大学计算机学院三、实验设备地点:实验实训中心A4-2硬件环境:Inte(R)CorT(Me)i5CPUM460@2053GHZwin7系
3、统软件环境:CAP教学软件VC++四、实验步骤数据定义及解释constunsignedshortSIZE_OF_BUFFER=15;//缓冲区长度unsignedshortProductID=0;//产品号unsignedshortConsumeID=0;//将被消耗的产品号unsignedshortin=0;//产品金缓冲区时的缓冲区下标unsignedshortout=0;//产品出缓冲区时的缓冲区下标intg_buffer[SIZE_OF_BUFFER];//缓冲区是个循环队列boolg_continue=true;//使程序跳出循环,控制程序结束HANDLE
4、g_hMutex;//用于线程间的互斥HANDLEg_hFullSemaphore;//当缓冲区满时迫使生产者等待HANDLEg_hEmptySemaphore;//当缓冲区空时迫使消费者等待DWORDWINAPIProducer(LPVOID);//生产者线程DWORDWINAPIConsumer(LPVOID);//消费者线程步骤:1.生产者功能描述:在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。2.消费者
5、功能描述:6网络工程系·2009年编制湖北工业大学计算机学院消费者线程从缓冲区中获得物品,然后释放缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。3.数据结构分析(1)生产者与消费者实现:这其中主要是通过多线程,来实现生产者和消费者之间的协调问题。(2)生产者(producer)——消费者(consumer):通过一些记录性变量,来记录模拟实现生产者的行为,通过输入语句的提示程序采用OO设计模式,缓存区采用数组结构存储程序源代码:#include#includeconstu
6、nsignedshortSIZE_OF_BUFFER=10;//缓冲区长度unsignedshortProductID=0;//产品号unsignedshortConsumeID=0;//将被消耗的产品号unsignedshortin=0;//产品进缓冲区时的缓冲区下标unsignedshortout=0;//产品出缓冲区时的缓冲区下标intg_buffer[SIZE_OF_BUFFER];//缓冲区是个循环队列boolg_continue=true;//控制程序结束HANDLEg_hMutex;//用于线程间的互斥HANDLEg_hFullSemaphore;//
7、当缓冲区满时迫使生产者等待HANDLEg_hEmptySemaphore;//当缓冲区空时迫使消费者等待DWORDWINAPIProducer(LPVOID);//生产者线程DWORDWINAPIConsumer(LPVOID);//消费者线程intmain(){//创建各个互斥信号g_hMutex=CreateMutex(NULL,FALSE,NULL);g_hFullSemaphore=CreateSemaphore(NULL,SIZE_OF_BUFFER-1,SIZE_OF_BUFFER-1,NULL);g_hEmptySemaphore=CreateSe
此文档下载收益归作者所有