习题
3.1. 右侧的状态转换图是简化的进程
管理模型。标号表示就绪态、运行态、
阻塞态和非常驻态间的转换。分别列
出引发每个上述状态转换的事件。可
用图示的方法进行说明。
就绪 运行 阻塞 非常驻
就绪 —
运行 2
阻塞 4
1
—
—
—
3
—
5
—
6
答:
1. 就绪态到运行态是由于该进程被分派器分派到处理器;
2. 运行态到就绪态是进程被抢占;
3. 运行态到阻塞态是由于该进程运行中,发生了必须等待某些事件发生才能继
续运行,因此会进入到阻塞态;
4. 阻塞态到就绪态是由于等待的事件发生了,阻塞态的进程就会转为就绪态;
5. 就绪态到非常驻态是由于此时内存所保存的进程已经达到最大有新的进程要
创建,或者由于系统并发度需要降低;
6. 阻塞态到非常驻态和就绪态到非常驻态发生的原因类似,都是由于内存中进
程太多,将其转入到磁盘当中挂起。
3.2 假设在时刻 5 仅使用了系统资源中的处理器和内存。考
虑如下事件:
时刻 5: P1 执行一个命令读磁盘单元 3.
时刻 15:P5 的时间片结束。
时刻 18:P7 执行一个命令写磁盘单元 3。时刻 20:
P3 执行一个命令读磁盘单元 2。时刻 24:P5 执行一
个命令读磁盘单元 3。
时刻 28:换出 P5。
时刻 33:P3 读磁盘单元 2 完成,产生中断。时刻 36:
P2 读磁盘单元 3 完成,产生中断。
时刻 38:P8 结束。
时刻 40:P5 写此判断元 3 完成,产生中断。
时刻 44:调入 P5。
时刻 48:P7 写磁盘单元 3 完成,产生中断。
分别写出每个进程在时刻 22、37 和 47 的状态。若
被阻塞,
进程等
一个进程
请写出该
待的事件。
5
15
18
20
22
24
28
33
36
1
R->B
B
B
B
B
B
B
B
B
2
D
D
D
D
D
D
D/R
D/R
B->D
3
D
D
D
R->B
B
B
B
B->D
5
D
R->D
D
D
R
R->B
B->Bs
Bs
Bs
7
D
D
R->B
B
B
B
B
B
B
8
D
D
D
D
D
D
3.2 答: 37
38
40
44
47
48
B
B
B
B
B
B
D
D
Bs
Bs
Bs-
>Ds
Ds->D
D/R
D/R
D/R
B
B
B
B
B
B->D
R
R->E
E
E
E
E
3.4 请仿照
(b),画
3.9(b)
态进程模
队图。
答:
图 3.8
出图
中 7 状
型的排
3.5. 考虑图 3.9(b)中的状态转换图。假设操作系统正在分
派进程,有进程处于就绪态和就绪/挂起态,且至少有一个
处于就绪/挂起态的进程的优先级,高于处于就绪态的所有
进程的优先级。有两种极端的策略:(1)总是分派一个处于
就绪态的进程,以减少交换;(2)总是把机会给具有最高优
先级的进程,即使会导致在不需要交换时进行交换。
请给出一种能均衡考虑优先级和性能的中间策略。
答:对于一个就绪/挂起态的进程,降低一定数量(如一或两个)优先级,从而
保证只有当一个就绪 /挂起态的进程比就绪态的进程的最高优先级还高出几个
优先级时,它才会被选做下一个执行。
5.3.
考虑下列程序
P1{ shared
int x x = 10;
while(1){ x
= x-1; x =
x+1;
if(x != 10)
{
}
}
}
printf(“x is %d”,x);
P2{ shared
int x x = 10;
while(1){ x
= x-1; x =
x+1;
if(x != 10)
printf(“x
is %d”,x);
{
}
}
}
请注意单处理器系统上的 调度器将会通过交替执行指令来实
现两个进程的“伪并行”,交替执行的顺序无严格要求。
a. 给出打印“x is 10”的顺序
b. 给出打印“x is 8”的顺序