53ef32064d5c22add9a4c10ae94b5e55.docx
- 文档编号:11878663
- 上传时间:2023-04-08
- 格式:DOCX
- 页数:75
- 大小:904.42KB
53ef32064d5c22add9a4c10ae94b5e55.docx
《53ef32064d5c22add9a4c10ae94b5e55.docx》由会员分享,可在线阅读,更多相关《53ef32064d5c22add9a4c10ae94b5e55.docx(75页珍藏版)》请在冰豆网上搜索。
习题
就绪
运行
阻塞
非常驻
就绪
—
1
—
5
运行
2
—
3
—
阻塞
4
—
—
6
3.1.右侧的状态转换图是简化的进程
管理模型。
标号表示就绪态、运行态、阻塞态和非常驻态间的转换。
分别列出引发每个上述状态转换的事件。
可用图示的方法进行说明。
答:
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的状态。
若一个进程被阻塞,请写出该进程等待的事件。
1
2
3
5
7
8
5
R->B
D
D
D
D
D
15
B
D
D
R->D
D
D
18
B
D
D
D
R->B
D
20
B
D
R->B
D
B
D
22
B
D
B
R
B
D
24
B
D
B
R->B
B
D
28
B
D/R
B
B->Bs
B
33
B
D/R
B->D
Bs
B
36
B
B->D
Bs
B
37
B
D
D
Bs
B
R
38
B
Bs
B
R->E
40
B
Bs->Ds
B
E
44
B
Ds->D
B
E
47
B
D/R
D/R
D/R
B
E
48
B
B->D
E
3.2答:
3.4请仿照图3.8(b),画出图3.9(b)中7状态进程模型的排队图。
答:
3.5.考虑图3.9(b)中的状态转换图。
假设操作系统正在分派进程,有进程处于就绪态和就绪/挂起态,且至少有一个处于就绪/挂起态的进程的优先级,高于处于就绪态的所有进程的优先级。
有两种极端的策略:
(1)总是分派一个处于就绪态的进程,以减少交换;
(2)总是把机会给具有最高优先级的进程,即使会导致在不需要交换时进行交换。
请给出一种能均衡考虑优先级和性能的中间策略。
答:
对于一个就绪/挂起态的进程,降低一定数量(如一或两个)优先级,从而保证只有当一个就绪/挂起态的进程比就绪态的进程的最高优先级还高出几个优先级时,它才会被选做下一个执行。
5.3.
考虑下列程序
P1{sharedintxx=10;while
(1){x=x-1;x=x+1;
if(x!
=10)
{
printf(“xis%d”,x);
}
}
}
P2{sharedintxx=10;while
(1){x=x-1;x=x+1;
if(x!
=10)
{
printf(“xis%d”,x);
}
}
}
请注意单处理器系统上的调度器将会通过交替执行指令来实现两个进程的“伪并行”,交替执行的顺序无严格要求。
a.给出打印“xis10”的顺序
b.给出打印“xis8”的顺序
答
P1{ P2{
sharedintxx=10;while
(1){
sharedintxx=10;while
(1){x=x-1;x=x+1;x=x-1;
if(x!
=10){x=x+1;if(x!
=10){
printf(“xis%d”,x);
}
}}
printf(“xis%d”,x);
}
}
}
答
P1{ P2{
sharedintxx=10;
sharedintxx=10;while
(1){x=x-1;
while
(1){LDR0,x;DECRR0
x=x+1;
STOROx;
if(x!
=10){
printf(“xis%d”,x);
x=x+1;if(x!
=10){
printf(“xis%d”,x);
}
}
} }
}
}
5.4考虑下面的程序
constintn=50;inttally;
voidtotal()
{
intcount;
for(count=1;count<=n;count++)
{
tally++;
}
}
voidmain()
{tally=0;
parbegin(total(),total();write(tally);
}
a.确定这个并行程序最终输出变量tally的合适下届和上届。
假设这些进程可以任意相对速度执行,且一个变量只能在被一条单独的机器指令载入到寄存器后自增。
b.在a中假设的基础上,进一步假设允许并行执行任意数量的这种程序,这对tally的上界和下界有何影响?
5.4.答:
a.考虑下面由这两进程按交替顺序执行载入,增加,存储的情况,同时变更这个共享变量的取值:
1.进程A载入tally值,tally值加到1,在此时失去处理器(它已经增加寄存器的值到1,但是还没有存储这个值).
2.进程B载入tally值(仍然是0),然后运行完成49次增加操作,在它已经将49这个值存储给共享变量tally后,失去处理器控制权.
3.进程A重新获得处理器控制权去完成它的第一次存储操作(用1去代替先前的49这个tally值),此时被迫立即放弃处理器.
4.进程B重新开始,将1(当前的tally值)载入到它自己的寄存器中,但此时被迫放弃处理器。
5.进程A被重新安排开始,但这次没有被中断,直到运行完成它剩余的49次载入,增加和存储操作,结果是此时tally值已经是50。
6.进程B在它终止前完成仅有的最后一次增加和存储操作.它的寄存器值增至2,同时存储这个值为这个共享变量的最终结果,这样tally值的正确范围[2,100].
b.对一般有N个进程的情况下,tally值的最终范围是[2,N*50],因为对其
他所有进程来说,从最初开始运行到在第五步完成.但最后都被进程B破坏掉它们的最终结果
5.6.考虑下面的程序:
booleanblocked[2]intturn;voidP(intid){while(true){blocked[id]=true;while(turn!
=id){while(blocked[1-id])
/**/turn=id;
}
/*临界区*/
blocked[id]=false;
/*其余部分*/
}
}
voidmain()
{blocked[0]=false;blocked[1]=false;turn=0;parbegin(P(0),P
(1));
}
这是解决互斥问题的一种软件方法。
请举出证明该方法不正确的一个反例。
5.6.答:
voidP(0) voidP
(1)
{ {
while(true){while(true){
blocked[1]=true;while(turn!
=1){
while(blocked[0]) blocked[0]=0
blocked[0]=true;
while(turn!
=0){ turn=0 /**/
turn=1;
while(blocked[1])
/**/turn=0;
} }
/*临界区*/
blocked[id]=false;
/*其余部分*/
/*临界区*/ }
blocked[0]=false; }
/*其余部分*/
}
}
5.11当按图5.2的形式使用专门的机器指令提供互斥时,对进程在允许访问临界区之前必须等待多久没有限制。
设计一个使用compare&swap指令的算法,保证任何一个等待进入临界区的进程在n-1个turn内进入,n是要求访问临界区的进程数,turn是指一个进程离开临界区而另一个进程获准访问临界区的事件。
5.11答:
intconstn=N;//进程数
intlock;
intwaiting[N];//进入临界区进程排队队列
voidP(inti){
while(true)
{waiting[i]=true;
whilewaiting[i]andcompare&swap(lock,0,1);waiting[i]=false;
/*临界区*/
j=(i+1)%n;
while(j!
=i)and(!
waiting[j])//寻找队列里等待的下一个进程
{j=(j+1)%n;
}
ifj==i//队列里没有其他等待的进程
lock=fasle;
else//找到下一个进程直接将进入临界区的锁交给该进程
waiting[j]=false;}
}main(){
lock=false;
memset(waiting,0,sizeof(waiting));
parbegin(P(0),P
(1),P
(2),...,P(N-1));}
5.16.用2元信号量实现一般信号量。
我们使用semWaitB操
作和semSignalB操作以及两个二元信号量delay和mutex。
考虑下面的代码。
voidsemWait(demaphores) voidsemSignal(demaphores)
{ {
semWaitB(mutex); semWaitB(mutex);
s--; s++;
if(s<0) if(s<=0)
{ semSignalB(delay);
semSignalB(mutex);semSignalB(mutex);semWaitB(delay);}
}
else
semSignalB(mutex);
}
上面的程序有一个缺点。
请找出这个缺点,并提出解决方案。
5.16.答:
当同时有两个进程执行semWait,两个进程执行
semSignal时,如果执行semWait的进程在semWaitB(delay)之前出现进程切换时,此时s=-2,delay为0。
转而执行semSignal时,第一个进程执行完semSignalB(delay)会使delay
变为1,第二个进程再执行semSignalB(delay)时会导致delay变量超出其定义的范围。
解决方法如下
voidsemWait(demaphores) voidsemSignal(demaphores)
{ {
semWaitB(mutex); semWaitB(mutex);
s--; s++;
if(s<0) if(s<=0)
{ semSignalB(delay);
semSignalB(mutex); else
semWaitB(delay); semSignalB(mutex);
} }
semSignalB(mutex);
}
6.5.
在如下条件下考虑银行家算法。
6个进程:
P0~P5;4种资源:
A(15单位),B(6单位),C(单位),D(单位);时间T0时的情况:
可用资源向量
A
B
C
D
6
3
5
4
当前已分配
最大需求
A
B
C
D
A
B
C
D
P0
2
0
2
1
9
5
5
5
P1
0
1
1
1
2
2
3
3
P2
4
1
0
2
7
5
4
4
P3
1
0
0
1
3
3
3
2
P4
1
1
0
0
5
2
2
1
P5
1
0
1
1
4
4
4
4
a验证可用资源向量的正确性b计算需求矩阵c证明当前状态是安全的,即给出一个安全的进程序列。
同时针对该序列,
给出可用资源向量(工作数组)在每个进程终止时的变化情况d假设进程P5的请求为(3,2,3,3).该请求应被允许吗?
答:
a
A
B
C
D
P0
2
0
2
1
P1
0
1
1
1
P2
4
1
0
2
P3
1
0
0
1
P4
1
1
0
0
P5
1
0
1
1
9
3
4
6
R
A
B
C
D
15
6
9
10
V
A
B
C
D
6
3
5
4
b需求矩阵 C证明
A
B
C
D
P0
7
5
3
4
P1
2
1
2
2
P2
3
4
4
2
P3
2
3
3
1
P4
4
1
2
1
P5
3
4
3
3
进程序列:
P4P5P3P2P1P0
P4运行完成:
V(7,4,5,4)
P5运行完成:
V(8,4,6,5)
P3运行完成:
V(9,4,6,6)
P2运行完成:
V(13,5,6,8)
P1运行完成:
V(13,6,7,9)
P0运行完成:
V(15,6,9,10)
答:
d
已分配资源
A
B
C
D
P0
2
0
2
1
P1
0
1
1
1
P2
4
1
0
2
P3
1
0
0
1
P4
1
1
0
0
P5
4
2
4
4
R
A
B
C
D
15
6
9
10
V
A
B
C
D
3
1
2
1
需求矩阵
A
B
C
D
P0
7
5
3
4
P1
2
1
2
2
P2
3
4
4
2
P3
2
3
3
1
P4
4
1
2
1
P5
0
2
0
0
没有一个进程的全部资源需求可以被满足,为非安全状态,因此该请求不被允许。
6.6.如下代码涉及3个进程竞争6种资源(A~F)。
a使用资源分配图指出这种实现中可能存在的死锁b改变某些请求的顺序预防死锁
A
B
C
D
E
F
P0
P1
P2
6.10.在THE多道程序设计系统中,一页可以进行下列状态转换:
1.空->输入缓冲区(输入生产)
2.输入缓冲区->处理区域(输入消耗)
3.处理区域->输出缓冲区(输出生产)
4.输出缓冲区->空(输出消耗)
5.空->处理区域(过程调用)
6.处理区域->空(过程返回)
a根据量i,o,p定义这些转换的结果。
b上述转换中是否存在一个会导致死锁的转换
1.i=i+12.i=i-1,o=o+13.o=o-1,p=p+14.o=o-15.o=o+16.o=o-1
调用大小为max-resp的过程时,占用了全部页,如果过程需要调用数据时,没有更多的页给输入缓冲,产生死锁
6.15.考虑有4个进程和1种资源的系统,当前的资源请求和分配矩阵如下:
é3ù
êê2úú
C=
ê9ú
êú
ë7û
é1ù
êê1úú
A=
ê3ú
êú
ë2û
最少需要多少单元的资源才能保证当前的状态是安全的?
答:
需要找到一个安全进程序列。
设四个进程分别为P0,P1,P2,P3。
根据银行家算法,计算需求矩阵C-A为 é2ù
C-A=ê1úú
ê
ê6ú
êú
ë5û
最小的进程对资源的需求为1,因此,假设剩余资源为1。
此时寻找安全序列
P1运行完成:
V
(2),P0运行完成:
V(3)已经无法满足P2,P3,此时最少需要资源数为5,反推回初始状态,所需的最少资源为3.
6.17.评价下述哲学家就餐问题的解决方案。
一位饥饿的哲学家首先拿起左边的叉子,如果他右边的叉子也可用,则拿起右边的叉子开始吃饭,否则该哲学家放下左边的叉子,并重复上述过程。
答:
破坏不可抢占条件的死锁预防方法。
会导致活锁。
7.1.2.3列出了内存管理的5个目标,7.1节列出了5种需求。
请说明他们是一致的。
答:
进程隔离重定位
自动分配和管理保护
支持模块化程序设计共享
保护和访问控制逻辑组织
长期存储 物理组织
7.2.假设使用固定分区的内存管理方案,分区大小为216字节,内存总大小为224。
系统维护有一张进程表,它为每个常驻进程保存指向一个分区的指针。
这个指针需要多少位。
答:
采用固定分区方案,每个固定分区放一个进程,总共可以放的进程个数为
224/216,因此,进程表总共包含进程数为28,需要的指针位数为8.
7.5.动态分区的另一种放置方法为最差适配。
在这种情况下调入一个进程时,使用最大的空闲存储块。
a.该方法与最佳适配、首次适配、下次适配相比,优点和缺点各是什么?
b.最差适配的平均查找长度是多少?
优点
缺点
最佳适配
保证每次产生的碎片大小尽量小
很快出现较多无法满足任何内存分配请求的小碎片
首次适配
方法简单,内存末尾总有较大的存储空间满足大内存申请
内存前端出现很多小碎片,碎片多时查找效率变低
下次适配
方法简单,一般情况下平均查找时间较短
会把末端大的内存空间分成小的碎片
最差适配
最小化外部碎片
较大的进程有可能没有足够空间分配
答:
a
7.5.动态分区的另一种放置方法为最差适配。
在这种情况下调入一个进程时,使用最大的空闲存储块。
a.该方法与最佳适配、首次适配、下次适配相比,优点和缺点各是什么?
b.最差适配的平均查找长度是多少?
答:
b.最差适配每次都需要把全部内存碎片遍历一遍,空闲片个数为s时查找长度为s。
7.12.系统使用简单分页,内存大小为232字节,页大小为210字节,逻辑地址空间包含216页。
a逻辑地址有多少位?
b一个页框有多少字节?
c物理地址中的多少位是页框号?
d页表中有多少表项?
e假设每个页表项中含一位有效位,每个页表项有多少位?
7.12.系统使用简单分页,内存大小为232字节,页大小为210字节,逻辑地址空间包含216页。
a逻辑地址有多少位?
b一个页框有多少字节?
c物理地址中的多少位是页框号?
d页表中有多少表项?
e假设每个页表项中含一位有效位,每个页表项有多少位?
逻辑页号
偏移量
答:
a逻辑地址16+10=26。
b页框大小与分页大小相同,也为210字节。
c内存大小决定物理地址总的位数,为32位。
页框号
偏移量
物理地址组成为物理地址和逻辑地址的偏移量相同,因此,页框号的位数为32-10=22。
d页表每一项代表了一个逻辑页,与逻辑地址空间大小相同,为216个页表项
e每个页表项中的内容为改页对应的页框号和标志位,页框号位数为22,因此,总的位数为22+1=23
7.14.一个分段系统中,包含如下段表:
起始地址
长度
660
248
1752
442
222
198
996
604
对如下的每个逻辑地址,确定其对应的物理地址或说明段错误是否发生:
a.0,198;b.2,156;c.1,530;d.3,444;e.0,222
答:
660+198222+156530>440996+444660+222
8.1.假设当前运行进程的页表如下。
所有数字都是十进制的,
所有计数都是从0开始,所有地址都是内存字节地址。
页尺寸为1024字节。
虚页号
有效位
引用位
修改位
页框号
0
1
1
0
4
1
1
1
1
7
2
0
0
0
-
3
1
0
0
2
4
0
0
0
-
5
1
0
1
0
a详细描述虚拟地址是如何转换为物理地址的。
b若下列虚拟地址能转换为物理地址,物理地址是多少。
(i)1052(ii)2221(iii)5499
答:
a
答:
a多级页表
答:
b(i)1052010000011100页号为1查表得页框号为7
物理地址为11100000111007196
(ii)2221100010101101页号为2查表知道为缺页
(iii)54991010101111011页号为5查表得页框号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 53 ef32064d5c22add9a4c10ae94b5e55