
展开全部
1.
(1)
* 结果为0,一种执行顺序:process 1 读, process 1 写, process 2 读, process 2 写
* 结果为1,一种执行顺序:process 1 读, process 2 读, process 1 写, process 2 写
* 结果为-1,一种执行顺序:process 1 读, process 2 读, process 2 写, process 1 写
(2)
[不很确定,追根究底,硬件提供test-and-set指令是必需的]
int main(int argc, char** argv) {
extern int y;
extern int lock;
while (lock == 1) {}
lock = 1;
y = y + 1;
lock = 0;
return y;
}
int main(int argc, char** argv) {
extern int y;
extern int lock;
while (lock == 1) {}
lock = 1;
y = y - 1;
lock = 0;
return y;
}
(3)
整型信号量是一个整数计数器,记录型信号量是除此外还包含一个进程标识队列。
2.
[平均值自己算吧]
A B C D E
3 9 18 5 13
3 8 16 2 9
1 2 3.2 1 2.25
3 7 12 14 18
3 6 10 11 14
1 1.5 2 5.5 3.5
3.
FIFO: 13/20
LRU: 13/20
OPT: 10/20
4.
(1)
T2 - (T1 + t) = d
T4 - (T3 - t) = d
d = (T2 - T1 + T4 - T3)/2
t = (T2 + T3 - T1 - T4)/2
(2)
T2 - T1 = d + t
T4 - T3 = d - t
d = (T2 - T1 + T4 - T3)/2
t = (T2 + T3 - T1 - T4)/2
5.
(1)
* 进程0在时刻6向进程1和进程2发送请求消息,收到消息后,进程1和进程2向进程0发送批准消息。
* 进程0进入临界区域
* 进程1在时刻8向进程0和进程2发送请求消息,收到消息后,进程2向进程1发送批准消息,进程0暂缓回复。
* 进程0离开临界区域,并向进程1发送批准消息
* 进程1收到所有批准消息,进入临界区域
* 进程1离开临界区域
(2)
所有事件都是全序时,不可能发生死锁。
6.
(1)
A(1, 2, 4) B(1, 3, 5) C(1, 6, 7) D(1, 8, 1)
(2)
可以,进程1收到探测消息(1, 8, 1)说明出现了自依赖。
(3)
多个进程同时发起该算法时,可能有多个进程自杀,这没有必要。可以记录消息传递路径,杀掉路径途中标号最小的进程。
(1)
* 结果为0,一种执行顺序:process 1 读, process 1 写, process 2 读, process 2 写
* 结果为1,一种执行顺序:process 1 读, process 2 读, process 1 写, process 2 写
* 结果为-1,一种执行顺序:process 1 读, process 2 读, process 2 写, process 1 写
(2)
[不很确定,追根究底,硬件提供test-and-set指令是必需的]
int main(int argc, char** argv) {
extern int y;
extern int lock;
while (lock == 1) {}
lock = 1;
y = y + 1;
lock = 0;
return y;
}
int main(int argc, char** argv) {
extern int y;
extern int lock;
while (lock == 1) {}
lock = 1;
y = y - 1;
lock = 0;
return y;
}
(3)
整型信号量是一个整数计数器,记录型信号量是除此外还包含一个进程标识队列。
2.
[平均值自己算吧]
A B C D E
3 9 18 5 13
3 8 16 2 9
1 2 3.2 1 2.25
3 7 12 14 18
3 6 10 11 14
1 1.5 2 5.5 3.5
3.
FIFO: 13/20
LRU: 13/20
OPT: 10/20
4.
(1)
T2 - (T1 + t) = d
T4 - (T3 - t) = d
d = (T2 - T1 + T4 - T3)/2
t = (T2 + T3 - T1 - T4)/2
(2)
T2 - T1 = d + t
T4 - T3 = d - t
d = (T2 - T1 + T4 - T3)/2
t = (T2 + T3 - T1 - T4)/2
5.
(1)
* 进程0在时刻6向进程1和进程2发送请求消息,收到消息后,进程1和进程2向进程0发送批准消息。
* 进程0进入临界区域
* 进程1在时刻8向进程0和进程2发送请求消息,收到消息后,进程2向进程1发送批准消息,进程0暂缓回复。
* 进程0离开临界区域,并向进程1发送批准消息
* 进程1收到所有批准消息,进入临界区域
* 进程1离开临界区域
(2)
所有事件都是全序时,不可能发生死锁。
6.
(1)
A(1, 2, 4) B(1, 3, 5) C(1, 6, 7) D(1, 8, 1)
(2)
可以,进程1收到探测消息(1, 8, 1)说明出现了自依赖。
(3)
多个进程同时发起该算法时,可能有多个进程自杀,这没有必要。可以记录消息传递路径,杀掉路径途中标号最小的进程。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询