操作系统实验5.docx
《操作系统实验5.docx》由会员分享,可在线阅读,更多相关《操作系统实验5.docx(10页珍藏版)》请在冰豆网上搜索。
![操作系统实验5.docx](https://file1.bdocx.com/fileroot1/2023-2/11/180e1286-8fed-4b4d-975f-2f272b0221c6/180e1286-8fed-4b4d-975f-2f272b0221c61.gif)
操作系统实验5
操作系统
实验报告
课程名称
操作系统实验
实验项目名称
进程的同步
学号
班级
姓名
专业
学生所在学院
指导教师
实验室名称地点
一、实验概述
1.实验名称
进程的同步
2.实验目的
使用EOS的信号量,编程解决生产者消费者问题,理解进程同步的意义。
3.实验类型
验证
二、实验环境
OSLab
三、实验过程
3.2查看生产者消费者同步执行的过程:
3.3调试EOS信号量的工作过程
3.3.1创建信号量
进入CreateSemaphore函数
进入PsCreateSemaphoreOobject函数
观察PsInitiaIzeSemaphore函数中用来初始化信号量结构体成员的值与传入CreateSemaphore函数的参数值一致。
调用堆栈,查看函数的调用层次
3.2.2等待,释放信号量
3.2.2.1等待信号量
在144行插入断点
在68行插入断点
Empty的值为0xa
完成PsWaitForSemaphore函数中的所有操作,Empty减少了1
3.3.2.2释放信号量
在152行插入断点
Full信号量为0
完成PsReleaseSemaphore函数中所有操作后,Full信号量变为1
3.3.2.3等待信号量
在78行插入断点,调试
Producer:
14
查看Empty的值为-1
查看输出结果:
3.3.2.4释放信号量
Consumer的值变为4
Empty信号量的值为-1
Empty信号量的值由-1变为0
验证生产者线程被唤醒后是从之前被阻塞时的状态继续执行的:
Empty的信号量计数的值为0:
查看Producer函数中变量i的值为14
3.4修改EOS的信号量算法
修改后的PsWaitForSemaphore
修改后的PsReleaseSemaphore
测试
执行原有的生产者-消费者应用程序项目,结果与13-2一致
修改Producer和Consumer函数后消费两个产品
四、思考题
1.缓冲区只有十个空间,现在装了4到13号十个产品,消费者只消费了三个,所以生产者不能继续装入产品,必须等消费者消费了4号产品才能继续生产14号产品。
2.
PsWaitForSemaphore流程图
PsReleaseSemaphore流程图
五、实验体会
通过本实验我学会了使用EOS信号量,编程解决生产者-消费者问题,理解了进程同步的意义,原理,通过修改EOS的信号量的算法,使之支持等待超时唤醒功能,加深理解进程同步的原理。