1、何谓之与时间有关的错误?举例说明之。并发进程执行时一定会产生与时间有关的错误吗?为什么。
与时间有关的错误是指两个程序都以各自的速度交叉着运行,同时访问共享信息导致的错误。
比如程序A对共享变量p执行+1操作后,休眠一秒输出变量p,程序B对共享变量p执行减1操作后,休眠一秒输出变量p。导致的结果就会和想象中的不相同。
并发程序不一定都导致时间相关的错误,我们可以对共享变量加锁来解决这个问题
2、什么是临界区,什么是相关临界区,对相关临界区的使用规则?
系统中某些资源一次只允许一个进程使用,则这类资源被称为临界资源,而在进程中访问临界资源的程序被称为临界区。
多个进程涉及到同一个临界资源的临界区被称为相关临界区。
使用规则:1、只能选择一个进程进入临界区,其他进程必须等待。
2、 不能强迫一个进程无限的等待进入他的临界区
3、任何一个进程在进入临界区后都要在有限的时间内退出临界区。
3、若使用P、V操作管理某一组相关临界区,其信号量S的值在【-1,1】之间变化,当S=-1,s=0,S=1时,他们各自的物理含义是什么?
当S=-1,临界区已满,且有一个进程正在等待
当S=0,临界区已满
当S=1, 临界区为空
4、两个并发执行的进程A和B的程序如下:
进程A:
While(true){
N = N+5;
};
进程B:
While(true){
打印N的值;
N = 0;
};
其中,N为整数,初值为4,若进程A先执行3次循环后,进程A和进程B又并发执行了一个循环,请写出可能出现的打印值。
可能出现的打印值:19,0,24
5、a,b两点之间有一段单行车道,现在设计一个自动管理系统,管理规则如下:允许同方向的车同时驶入ab段,但另一方向的车必须在ab段外等待,当ab之间无车辆在行驶时,到达a点(或者B点)的车辆可以进入ab段,但不能从a点或者b点同时驶入,当某方向在ab段行驶的车辆驶出了ab段且同方向无车辆进入ab段的时候,应让另一方等待的车辆进入ab段行驶,请编写程序,使用PV操作实现对ab段的正确管理以保证行驶安全。
A() //A点
{
While(true)
{
//准备驶入
P(ab)
P(empty)
//驶出
V(empty)
V(ab)
}
}
B() //B点
{
While(true)
{
//准备驶入
P(ab)
P(empty)
//驶出
V(empty)
V(ab)
}
}
6,7,8,9同5
10、设有两个优先级相同的进程P1,P2,如下所示,信号量S1,S2的初值都为0,试问P1,P2并发执行后,X,Y,Z的值各是多少?
进程P1:
Y =1;
Y = y+2;
V(S1);
Z = y+1;
P(s2);
Y = z+y;
进程P2:
X=1;
X = x+1;
P(s1);
X = x+y;
V(s2);
Z = x+z;
X=5,y=7,z=9;
来源:CSDN
作者:程序小黑
链接:https://blog.csdn.net/qq_27180763/article/details/102543268