操作系统习题解答

1.中断与程序并发之间的关系是什么?解析:本题考查中断的作用。答案:中断是程序并发的前提条件。如果没有中断,操作系统不能获得系统控制权,无法按调度算法对处理机进行重新分配,一个程序将一直运行到结束而不会被打断。2.在信号量S上执行P、V操作时,S的值发生变化,当S>0,S=0,S<0时,它们的物理意义是什么?P(S)、V(S)的物理意义又是什么?解析:对于信号量的操作只能通过PV操作来进行,用来改变资源的可用情况。答案:S>0表示有S个资源可用;S=0表示无资源可用;S<0则|S| 表示S等待队列中的进程个数。信号量的初值应该大于或等于0。P(S):表示申请一个资源,若申请后s<0,表示已无资源可用,需要将自己阻塞起来。V(S):表示释放一个资源,若释放后s<=0,表示等待队列上有等待进程,需要将第一个等待进程唤醒。PV原语小结PV原语通过操作信号量来处理进程间的同步与互斥的问题。其核心就是一段不可分割不可中断的程序。信号量是由操作系统来维护的,用户进程只能通过初始化和两个标准原语(P、V原语)来访问。初始化可指定一个非负整数,即空闲资源总数。P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞;V原语:V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。具体PV原语对信号量的操作可以分为三种情况:1)把信号量视为一个加锁标志位,实现对一个共享变量的互斥访问。实现过程:P(mutex); // mutex的初始值为1访问该共享数据V(mutex);非临界区2)把信号量视为是某种类型的共享资源的剩余个数,实现对一类共享资源的访问。实现过程:P(resource); // resource的初始值为该资源的个数N使用该资源;V(resource);非临界区3)把信号量作为进程间的同步工具实现过程:临界区C1;P(S);V(S); 临界区C2;利用PV操作实现互斥互斥信号量是根据临界资源的类型设置的。有几种类型的临界资源就设置几个互斥信号量。它代表该类临界资源的数量,或表示是否可用,其初值一般为“1”。

3.在一个只允许单向行驶的十字路口,分别有若干由东向西,由南向北的车辆在等待通过十字路口。为了安全,每次只允许一辆车通过。当有车辆通过时其它车辆必须等候,当无车辆在路口行驶时则允许一辆车通过。请用PV操作实现保证十字路口安全行驶的自动管理系统。解析:设置信号量s:表示临界资源十字路口,s初值为1 。答案:int s=1;main(){ pew(); psn();}pew() psn(){ {p(s); p(s);由东向西通过十字路口;由南向北通过十字路口;v(s); v(s);}}利用PV操作实现同步同步信号量是根据进程的数量设置的。一般情况下,有几个进程就设置几个同步信号量,表示该进程是否可以执行,或表示该进程是否执行结束。其初值一般为“0”。4.桌上有一个空盘子,只允许放一个水果。爸爸可以向盘中放苹果,也可以向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时,一次只能放一只水果,请用PV操作实现爸爸、儿子、女儿3个并发进程的同步。解析:设置信号量sp:表示盘子是否为空,sp初值为1;设置信号量sa:表示盘子里是否有苹果供女儿吃,sa初值为0;设置信号量so:表示盘子里是否有桔子供儿子吃,so初值为0。答案:int sp=1,sa=0,so=0; main(){father(); son();daughter();}father() son()daughter(){ while(1) {while(1){while(1){p(sp); {p(so); {p(sa);将水果放入盘中;从盘中取出桔子;从盘中取出苹果;if (放入的是桔子) v(sp); v(sp);v(so); 吃桔子;吃苹果;else v(sa); }}} }}同步与互斥的解题思路①分清哪些是互斥问题(互斥访问临界资源的),哪些是同步问题(具有前后执行顺序要求的)。②对互斥问题要设置互斥信号量,不管有互斥关系的进程有几个或几类,通常只设置一个互斥信号量,且初值为1,代表一次只允许一个进程对临界资源访问。③对同步问题要设置同步信号量

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值