华科操作系统课程设计_操作系统实验报告--华科

begin

P(mutex); //创造段,使以下操作不被打断

readcount:=readcount+1; //等待阅读者加一

if readcount=1 then

P(wrt); //标志第一位阅读者,获取写入资源,禁止写入V(mutex);

读数据集;

P(mutex);

readcount:=readcount-1; //等待阅读者减一

if readcount=0 then

V(wrt); //释放写入资源

V(mutex);

End

Writeri:

begin

P(wrt);

写数据集;

V(wrt);

end;

coend

2、代码分析:

源程序很好地管理了并行和互斥,利用P/V操作使得过程不被打断(互斥),使用cobegin/coend实现并行。但在实际生活中,写入者(通常是管理员)应具有更高权限,设计程序通常应该是写入者优先。

四、思考题

1、程序中使用到了互斥变量和临界资源来实现互斥,这两者在实现机制上有不同吗,若有,是什么不同?

答:互斥变量属于信号量,其值只可以为0或1,主要用于进程间的互斥应用情况,也即“非此即彼”的状况,而临界资源(共享变量)的值可以是整形变量,主要用于进程间相互合作的同步应用情况,其值大于零时表示可用资源数,其值小于零时表示在该信号量上等待的进程数。

2、考虑演示程序是怎样实现在随机调度进程时间、控制进程延迟时间、关闭进程时间的,找出相关函数,变量,并说明。

答:程序是通过运用函数Sleep(P_DELAY)来实现对进程调度、延迟、关闭时间的控制的,其中变量P_DELAY的值为rand()/25*10,其会产生0到1/25*10之间的一个随机数作为随机时间。

五、实验总结

这次实验是对C语言程序阅读能力的进一步检测,因为已经在课堂以及书本上了解了此程序的算法原理,再加上第一次对代码形式有所了解,这一次学习较为轻松。这里使用的是阅读者优先算法,同时也会有写入者优先算法,而以后在写设计算法的过程中,需要全方面考虑,使阅读者或写入者优先算法交替使用,从而获得最好效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值