计算机操作系统实验报告
实验内容: P、V原语的模拟实现
实验类型:验证型
指导教师:毕国堂
专业班级:
姓名:
学号:
实验地点:东6E507
实验时间:2017/10/23
一、实验目的
1.理解信号量相关理论
2.掌握记录型信号量结构
3.掌握P、V原语实现机制
二、实验内容
1.输入给定的代码
2.进行功能测试并得出证正确结果
三、实验要求
1.分析signal和wait函数功能模块
●Signal函数
在进行资源增加时,首先判断增加的资源是否存在,如果不存在则报错
并结束函数;如果存在则将需要增加的资源数量加一,然后再判断增加
后的资源数是否大于0,如果大于0则表示之前等待队列为空,没有需
要分配的进程;如果增加后的资源不大于0,表示之前等待队列中存在
进程,则将队首的进程取出并将资源分给该进程。
●Wait 函数
在执行wait函数时,先判断请求的资源和进程是否存在,如果不存在则
报错提示;如果存在则将对应资源的资源数减一,然后判断减少后的资
源数是否小于0,如果小于0,表示该资源等待队列为空,可直接将资源
分配给请求的进程;如果不小于0则表示之前资源的等待队列不为空,
则将请求的进程插在等待队列最后。
2.画出signal和wait函数流程图
3.撰写实验报告
四、实验设备
1.PC机1台安装visual c++ 6.0
五、测试
1.首先将所有的资源分配完
2.这时再请求资源时就会出现等待现象
3.此时增加一个资源s0,则进程1对s0的等待结束直接获取资源s0
4.当再增加资源s0、s1时则进程1也结束对资源s1的等待,并且s0资源
为有空闲状态
六、实验思考
1.如何修改wait操作,使之能一次申请多个信号量?
wait函数传入一个进程号和多个资源名,在wait函数中使用循环依
次进行资源分配或将进程加入对应资源等待队列。
2.该设计和实际的P、V操作有什么异同点?
该设计的p、v操作中资源时不可再生的资源分配给某个进程后资源不能释放,只能通过增加资源来增加资源的数量。
相同点在于对资源的分配规则基本一致。