精品文档---下载后可任意编辑1、举例说明为什么对并发执行的程序不加控制会产生与执行时间有关的错误
解:程序在并发执行时由于资源是共享的,而且常常资源数少于程序对这些资源的需求数,致使这些并发执行的程序之间因为竞争资源导致存在间接制约关系,这种间接制约使得并发执行的程序具有随机性(异步性),即“执行—暂停—执行”,它们何时启动、何时停止是未知的
例如:飞机售票系统、堆栈的存数与取数过程等(示例说明略)
2、程序并发执行为什么会失去顺序执行时的封闭性和可再现性
解:所谓“封闭性”是指程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响
在程序并发执行时由于资源共享,导致这些资源的状态将由多个程序来改变,又由于存在程序执行的随机性,所以程序的运行失去封闭性
由于失去了封闭性,也将导致其失去可再现性
即虽然它们执行时的环境和初始条件相同,但得到的结果却可能各不相同
习题二1、试用加锁的方法解决飞机售票系统的问题
例:民航售票系统,n 个售票处2、用机器指令(testAndset)解决飞机售票系统中任一进程的算法
习题三1、进程在做 P、V 操作时对自己和其他进程有何影响
进程在信号量上执行 P 操作后,若信号量的值为正,当前进程继续执行;若信号量的值为负,当前进程变为等待状态、放弃处理机,其它进程则有机会获得 CPU
进程在信号量上执行 V 操作后,不会对自己有任何影响,但当信号量的值不大于 0 时,需要唤醒在该信号量上所对应的等待队列中的进程
2、设课程的前驱、后继关系如下,若每修一门课程看作进程 Px(x1
6∈)试用 P、V 操作算法描述这种前驱与后继关系
答:Semaphore:S1:=S2:=S3:=S4:=S5:=S6:=0;Begin Cobegin P1、P2、P3、P4、P5、P6 coend; end
P1() P2() P3()Begin beg