操作系统实验第六讲进程的同步解析_第1页
操作系统实验第六讲进程的同步解析_第2页
操作系统实验第六讲进程的同步解析_第3页
操作系统实验第六讲进程的同步解析_第4页
操作系统实验第六讲进程的同步解析_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告实验哈尔滨工程大学计算机科学与技术学院1原理。修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。EOS决生产者-消费者问题EOS工作过程3.3.2.1等待信号量(不阻塞)3.3.2.2释放信号量(不唤醒)3.3.2.3等待信号量(阻塞)3.3.2.4释放信号量(唤醒)EOS信号量算法程1.设计思路和流程图准备实验准备实验生产者-消费者问题调试EOS信号量的工作过程号量(唤结束实验号量(不量号量(阻号量(不创信量号1者线程者线程等待生产者线程和消费者线程结束关闭句柄函数生产一个产品,占用一个缓冲区循环向后移动缓冲生产完消费一个产品,清空一个缓冲区循环向后移动缓等前10个产秒待毫消完费毕的数值范围是0到10,只有当临界1资(2)修改EOS的信号量算法)/*++信号量的Wait操作(P操作)。--*/{g}//如果信号量大于零,说明尚有资源,可以为线程分配})/*++信号量的Signal操作(V操作)。超时唤醒功能后,此参数的值能够大于等于1。--*/{}//记录当前的信号量的值。reviousCount}}//可能有线程被唤醒,执行线程调度。}}15.源程序并附上注释intBufferBUFFERSIZE];//产品数量。NT//用于生产者和消费者同步的对象句柄。MutexHandle//生产者和消费者的线程函数v{EBUG//创建用于互斥访问缓冲池的Mutex对象。if(NULL==MutexHandle){1}//}}//创建生产者线程。//NULL,NULL);//线程函数入口地址//线程函数参数//创建标志//线程ID}//创建消费者线程。NULL,NULL);}//等待生产者线程和消费者线程结束。//关闭句柄}//生产者线程函数。{inti;for(i=0;i<PRODUCT_COUNT;i++){Ele}Buffer[InIndex]=i;//休息一会。每500毫秒生产一个数。}}//消费者线程函数。每次消耗一个m{inti;for(i=0;i<PRODUCT_COUNT;i++){}//休息一会儿。让前10个数的消费速度比较慢,后面的较快。if(i<10){}}}*///消费者线程函数,每次消耗两个{inti;foriiPRODUCTCOUNTi+=2){}}//休息一会儿。让前14个数的消费速度比较慢,后面的较快。if(i<14){}}}1生产者-消费者同步执行单步调试PsInitializeSemaphore函数执行的过程,查看信号量结构体被初始化的过程。打开“调用堆栈”窗口,查看函数的调用层次。3.3.2.3等待信号量(阻塞)查看Empty信号量计数(Semaphore->Count)的值为-1,所以会调用PspWait函数将生产者线程放入Empty信号量的等待队列中进行等待(让出CPU)。激活虚拟机窗口查看以缓冲池中的10个缓冲区就都被占用了。3.3.2.4释放信号量(唤醒)数返回并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论