操作系统算法题.docx
- 文档编号:10830726
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:42
- 大小:35.80KB
操作系统算法题.docx
《操作系统算法题.docx》由会员分享,可在线阅读,更多相关《操作系统算法题.docx(42页珍藏版)》请在冰豆网上搜索。
操作系统算法题
1.在信号量机制中,若P(S)操作是可中断的,则会有什么问题?
答:
P(S)的操作如下:
Begin
S.Value:
=S.Value-1;①
IfS.Value<0Then②
Begin
Insert(*,S.L);
Block(*)③
End
End.
若P(S)可中断的,例如进程A在执行了语句①之后从CPU上退下了,假定此时S.Value=0;这时换另一进程B,B又将S.Value的值减1使之为-1,在执行语句③时,B被阻塞;然后又换回A执行,由于A的"断点"是语句①之后,当它执行语句②时,由于这时S.Value已经是-1,故进程继续执行而被阻塞。
这就出现了错误:
本来A操作P(S)操作后,S.Value=0,是不应该被阻塞的,现在却被阻塞了。
2.何谓临界区?
下面给出的两个进程互斥的算法是安全的吗?
为什么?
#definetrue;
#definefalse;
Intflag[2];
flag[1]=flag[2]=false;
enter-crtsec(i)
inti;
{
While(flag[1-i])
flag[i]=true;
}
feave-crtsec(i)
Inti;
{
flag[i]=false;
}
processI;
…
Enter-crtsec(i);
Incriticalsection;
Leave-crtsec(i);
答:
一次仅允许一个进程使用的资源称为临界资源,在进程中对临界资源访问的程序段称为临界区。
从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自的速度向前推进。
但由于它们共享某些临界资源,因而产生了临界区问题。
对于具有临界区问题的并发进程,它们之间必须互斥,以保证不会同时进入临界区。
这种算法不是安全的。
因为,在进入临界区的enter-crtsec()不是一个原语操作,如果两个进程同时执行完其循环(此前两个flag均为false),则这两个进程可同时进入临界区。
3.当进程X和进程Y共享某个资源r,进程并发执行时的程序如下:
Begin
S:
semaphore:
=1;
Cobegin
ProcessX
Begin
L1:
P(S);
使用资源r;
V(S);
GotoL1;
End;
ProcessY
Begin
L2:
P(S);
使用资源r;
V(S);
GotoL2;
End;
Coend;
End;
请回答:
(1)两个进程并发执行时,能否保证互斥地使用资源?
为什么?
(2)若要使用两个进程交替使用资源,仍使用P、V操作来进行管理,写出应定义的信号量及其初值。
(3)修改上述程序,使两个进程能交替使用资源r。
答:
当进程X和进程Y共享某个资源r,回答各问如下:
(1)能保证互斥使用资源。
因为在两个进程中,"使用资源r"都是作为临界区,由于P(S)和V(S)操作保证了互斥执行,S的初值定义为1,符合要求。
(2)要使两个进程交替使用资源,仅仅保证互斥使用是不够的,必须要两个进程互相等待互相通知。
为此,必须定义新的信号量。
定义两个私有信号量S1和S2。
假定进程X先使用资源,那么进程X的私有信号量S1的初值定义为1,进程Y的私有信号量S2的初值定义为0。
轮流使用可以保证互斥,因此信号量S可以不要。
(3)两个进程可以改写为:
Begin
S1:
semaphore:
=1;
S2:
semaphore:
=1;
Cobegin
ProcessX
Begin
L1:
P(S1);
使用资源r;
V(S2);
GotoL1;
End;
ProcessY
Begin
L2:
P(S2);
使用资源r;
V(S1);
GotoL2;
End;
Coend;
End;
4.某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。
若把一个购票者看作一个进程,请回答下列问题:
(1)用P、V操作管理这些并发进程时,应怎样定义信号量?
写出信号量的初值以及信号量各种取值的含义。
(2)根据所定义的信号量,把应执行的P、V操作填入下述程序中,以保证进程能够正确地并发执行。
CobeginPROCESSPi(i=1,2,…)
Begin
进入售票厅;
购票;
退出;
End;
Coend
(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
答:
售票厅问题解答如下:
(1)定义一信号量S,初始值为20。
S>0S的值表示可继续进入售票厅的人数;
S=0表示售票厅中已有20名购票者;
S<0|S|的值为等待进入售票厅中的人数。
(2)上框为P(S),下框为V(S)。
(3)S的最大值为20,S的最小值为20-N,N为某一时刻需要进入售票厅的最多人数。
5.已经系统中有四个缓冲池M0,M1,M2,M3。
其容量分别为3、2、3、2,现各缓冲区分别存在0、1、0、2个数据。
现同时有四个进程P0、P1、P2、P3分别在各缓冲区间不断地移动数据(见图3.5)。
例如,P0进程从M0向M1移动数据。
试用信号量及其P、V(或signal,wait)操作及类Pasic/C语言描述各进程之间的同步关系,并给出各信号量的含义和初值。
答:
(1)互斥信号量和初值
M(0)=1,M
(1)=1,M
(2)=1,M(3)=1,
(2)同步信号量
Full(i)表示buffer(i)是否有数据;
初值为full(0)=0,full
(1)=1,full
(2)=0,full(3)=2;
Empty(i)表示buffer(i)是否有空间;
初值为empty(0)=3,empty
(1)=1,empty
(2)=3,empty(3)=0
(3)进程i的程序
ProcessProc(i)
{p(full(i));
p(empty(i+1)mod5);
p(m(i));
move;
v(m(i));
v(m(full(i+1)mod5));
v(empty(i));
}
6.设有两个优先级相同的进程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;
答:
因为P1和P2是两个并发进程,所以进程调度程序调度P1和P2的顺序是不确定的。
这里不妨假设P1先执行。
进程P1执行到语句P(S2)时,S2=-1,进程P1阻塞。
此时y=3,z=4。
当进程调度程序调度到进程P2时,由于进程P1已执行了V(S1),进程P2在执行P(S1)时并未阻塞而继续执行,当执行到V(S2)时,将P1唤醒,然后执行最后一个语句z:
=x+z,此时x=5,z=9。
当进程P1再次被调度时,继续执行P1的最后一个语句,此时y=12,最终结果是:
x=5,y=12,z=9。
如果当P2进程执行到V(S2)时,将P1唤醒,然后P2进程被中断,此时x=5,y=3,z=4。
P1进程开始执行然后执行最后一个语句y:
=z+y,此时x=5,y=3,z=7。
然后P2进程被调度,执行z:
=x+z,此时x=5,y=3,z=12。
如果P2先执行,则执行结果与上面相同。
7.在批处理系统、分时系统和实时系统中,各采用哪几个进程(作业)调度算法?
答:
(1)批处理系统中的作业调度算法有:
先来先服务算法(FCFS)、短作业优先算法(SJF)、优先级调度算法(HPF)和高响应比优先算法(RF)。
批处理系统的进程调度算法有:
先进先出算法(FIFO)、短进程优先算法(SPF)、优先级调度算法(HPF)和高响应比优先算法(RF)。
(2)分时系统中只设有进程调度(不设作业调度),其进程调度算法只有轮转法(RR)一种。
(3)实时系统中只设有进程(不设作业调度),其进程调度算法调度有:
轮转法、优先级调度算法。
前者适用于时间要求不严格的实时系统;后者用于时间要求严格的实时系统。
后者又可细分为:
非抢占式优先级调度、抢占式优先级调度、基于时钟中断的抢占式优先级调度。
注意,一个纯粹的实时系统是针对特定应用领域设计的专用系统。
作业提交的数量不会超过系统规定的多道程序的道数,因而可全部进入内存。
若将实时系统与批处理系统结合的话,就可以让作业量超过多道程序道数,使优先级低的作业呆在外存的后备队列上。
8.假设系统中有5个进程,它们的到达时间和服务时间见下表1,忽略I/O以及其他开销时间,若按先来先服务(FCFS)、非抢占的短作业优先和抢占的短作业优先三种调度算法进行CPU调度,请给出各个进程的完成时间、周转时间、带权周转时间、平均周转时间和平均带权周转时间,完成表2。
表1进程到达和需要服务时间
进程
到达时间
服务时间
A
0
3
B
2
6
C
4
4
D
6
5
E
8
2
表2进程的完成时间和周转时间
进程
A
B
C
D
E
平均
FCFS
完成时间
周转时间
带权周转时间
SPF(非抢占)
完成时间
周转时间
带权周转时间
SPF(抢占)
完成时间
周转时间
带权周转时间
答:
进程
A
B
C
D
E
平均
FCFS
完成时间
3
9
13
18
20
周转时间
3
7
9
12
12
8.6
带权周转时间
1.00
1.17
2.25
2.40
6.00
2.56
SPF(非抢占)
完成时间
3
9
15
20
11
周转时间
3
7
11
14
3
7.6
带权周转时间
1.00
1.17
1.75
2.80
1.50
1.84
SPF(抢占)
完成时间
3
15
8
20
10
周转时间
3
13
4
14
2
7.2
带权周转时间
1.00
2.16
1.00
2.80
1.00
1.59
9.一个逻辑空间最多可有64个页,每页1KB字节。
若把它映射到由32个物理块组成的存储器。
问:
(1)有效的逻辑地址由多少位?
(2)有效的物理地址由多少位?
答:
一个逻辑空间有64个页,每页1KB字节。
若把它映射到由32个物理块组成的存储嚣。
64=26,则:
(1)逻辑地址有16位。
(2)物理地址有15位。
说明:
解此题的关键是要知道在分页管理中,"页"和"块"是一样大小的,这样才知道物理存储器是32KB。
10.在某分页系统中,测得CPU和磁盘的利用率如下,试指出每种情况下的问题和措施。
(1)CPU的利用率为15%,磁盘利用率为95%。
(2)CPU的利用率为88%,磁盘利用率为3%。
(3)CPU的利用率为13%,磁盘利用率为5%。
答:
在某分页虚存系统中,在题中的CPU和磁盘的利用率的情况下,出现的问题和应采取的措施如下:
(1)可能已出现了抖动现象,应减少系统的进程数。
(2)系统比较正常,可考虑适当增加进程数以提高资源利用率。
(3)CPU和磁盘的利用率都较低,必须增加并发进程数。
11.对访问串:
1,2,3,4,1,2,5,1,2,3,4,5,指出在驻留集大小分别为3,4时,使用FIFO和LRU替换算法的缺页次数。
结果说明了什么?
答:
首先采用FIFO,当m=3时,缺页次数=9,当m=4时,缺页次数=10。
采用LRU算法,当m=3时,缺页次数=10;当m=4时,缺页次数=8。
结果说明:
FIFO有Belady奇异现象,即不满足驻留集增大,缺页次数一定减小的规律;另外在m=3时,LRU的缺页次数比FIFO要多,所以LRU算法并不总优于FIFO,还要看当前访问串的特点。
12.一个分页存储器的页表存放在内存。
(1)若内存的存取周期为0.6ms,则CPU从内存取一条指令(或一个操作数)需多少时间?
(2)若使用快表且快表的命中率为75%,则内存的平均存取周期为多少?
答:
一个分页存储器的页表存放在内存
(1)因为页表放在内存,故取一条指令(或一个操作数)须访问两次内存,所以需0.6ms×2=1.2ms的时间。
(2)这里家假设访问快表的时间忽略不计,命中快表时,取数只要一次访问,故此时的平均存取周期为0.6ms×0.75+1.2ms×(1-0.75)=0.75ms
13.在一个请求分页系统中,采用LRU页面置换算法时,假如一个作业的页面走向为4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理内存块数M分别为3和4时,分别计算在访问过程中所发生的缺页次数和缺页率,并画出页面置换图。
解:
访问过程中缺页情况(M=3)
页面走向432143543215
最近最长时间未使用的页面4332435432
43214354321
最近刚使用过的页面432143543215
缺页√√√√√√√√√√
当M=3时,缺页次数为10次,缺页率为10/12=0.83=83%。
访问过程中缺页情况(M=4)
页面走向432143543215
最近最长时间未使用的页面432111543
4321435432
43214354321
最近刚使用过的页面432143543215
缺页√√√√√√√
当M=4时,缺页次数为8次,缺页率为8/12=0.66=66%。
可见,增加分配给作业的内存块数可以减少缺页次数,从而降低缺页率。
14.对于一个使用快表的页式虚存,设快表的命中率为70%,内存的存取周期为1ns;缺页处理时,若内存有可用空间或被置换的页面在内存未被修改过,则处理一个缺页中断需8000ns,否则需20000ns。
假定被置换的页面60%是属于后一种情况,为了保证有效存取时间不超过2ns,问可接受的最大缺页率是多少?
答:
设可接受的最大缺页率位p,则有
1ns×0.7+2ns×(1-0.7-p)+0.4p×8000ns+0.6p×20000ns=2ns
即0.7+0.6-2p+3200p+12000p=2
15198p=0.7
P=0.000046
15.在分页存储管理系统中,存取一次内存的时间是8ns,查询一次快表的时间是1ns,缺页中断的时间是20ns。
假设页表的查询与快表的查询同时进行,当查询页表时,如果该页在内存但快表中没有页表项,系统将自动把该页页表项送入快表。
一个作业最多可保留3个页面在内存。
现在开始执行一作业,系统连续对作业的2,4,5,2,7,6,4,8页面的数据进行一次存取,如分别采用FIFO算法和最优页面置换算法,求每种上存取这些数据需要的总时间。
答:
(1)FIFO
第2页面:
20+8×3
第4页面:
20+8×3
第5页面:
20+8×3
第2页面:
8+1
第7页面:
20+8×3
第6页面:
20+8×3
第4页面:
20+8×3
第8页面:
20+8×3
因此总的时间是(20+8×3)×7+(8+1)ns
(2)OPT
第2页面:
20+8×3
第4页面:
20+8×3
第5页面:
20+8×3
第2页面:
8+1
第7页面:
20+8×3
第6页面:
20+8×3
第4页面:
8+1
第8页面:
8+1
因此总的时间是(20+8×3)×5+(8+1)×3ns
16.在一个请求分页系统中,采用LRU页面置换算法时,假如一个作业的页面走向为1、3、2、1、1、3、5、1、3、2、1、5,当分配给该作业的物理内存块数M分别为3和4时,分别计算在访问过程中所发生的缺页次数和缺页率,并画出页面置换图。
解:
访问过程中缺页情况(M=3)
页面走向132113513215
最近最长时间未使用的页面1332135132
13221351321
最近刚使用过的页面132113513215
缺页√√√√√√
当M=3时,缺页次数为6次,缺页率为6/12=0.5=50%。
访问过程中缺页情况(M=4)
页面走向132113513215
最近最长时间未使用的页面222553
1332135132
13221351321
最近刚使用过的页面132113513215
缺页√√√√
当M=4时,缺页次数为4次,缺页率为4/12=0.33=33%。
可见,增加分配给作业的内存块数可以减少缺页次数,从而降低缺页率。
17.在一个请求分页系统中,采用OPT页面置换算法时,假如一个作业的页面走向为4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理内存块数M分别为3和4时,分别计算在访问过程中所发生的缺页次数和缺页率,并画出页面置换图。
解:
访问过程中缺页情况(M=3)
页面走向432143543215
最近最长时间未使用的页面2111544/33/21/2
3334335
最近刚使用过的页面44443443555
缺页√√√√√√√
当M=3时,缺页次数为7次,缺页率为7/12=0.583=58.3%。
访问过程中缺页情况(M=4)
页面走向432143543215
最近最长时间未使用的页面111544/34/3/21/3/2
222225
33343325
最近刚使用过的页面44443443255
缺页√√√√√√
当M=4时,缺页次数为8次,缺页率为6/12=0.5=50%。
可见,增加分配给作业的内存块数可以减少缺页次数,从而降低缺页率。
18.在一个请求分页系统中,采用FIFO页面置换算法时,假如一个作业的页面走向为4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物理内存块数M分别为3和4时,分别计算在访问过程中所发生的缺页次数和缺页率,并画出页面置换图。
解:
访问过程中缺页情况(M=3)
页面走向432143543215
最近最长时间未使用的页面4321444355
43214333522
最近刚使用过的页面432143555211
缺页√√√√√√√√√
当M=3时,缺页次数为9次,缺页率为9/12=0.75=75%。
访问过程中缺页情况(M=4)
页面走向432143543215
最近最长时间未使用的页面444321543
4333215432
43222154321
最近刚使用过的页面432111543215
缺页√√√√√√√√√
当M=4时,缺页次数为10次,缺页率为10/12=0.86=83%。
可见,增加分配给作业的内存块数并不能减少缺页次数,降低缺页率,这种现象叫抖动现象(Belady)。
19.利用信号量机制描述前趋关系:
S={S1,S2,S3,S4,S5,S6,S7}={(S1,S2),(S1,S3),(S2,S4),(S2,S5),(S3,S5),(S3,S6),(S4,S7),(S5,S7),(S6,S7)}
解:
Vara,b,c,d,e,f,g,h,i,:
semaphore:
=0,0,0,0,0,0,0,0,0,0;
Begin
Parbegin
BeginS1;signal(a);signal(b);end;
Beginwait(a);S2;signal(c);signal(d);end;
Beginwait(b);S3;signal(e);signal(f);end;
Beginwait(c);S4;signal(g);end;
Beginwait(d);wait(e);S5;signal(h);end;
Beginwait(f);S6;signal(i);end;
Beginwait(g);wait(h);wait(i);S7;end;
Parend
end
20.利用记录型信号量解决经典同步问题:
生产者——消费者
解:
Varmutex,empty,full:
semaphore:
=1,n,0;
buffer:
array[0,...,n-1]ofitem;
in,out:
integer:
=0,0;
begin
parbegin
proceducer:
begin
repeat
...
produceranitemnextp;
...
wait(empty);
wait(mutex);
buffer(in):
=nextp;
in:
=(in+1)modn;
signal(mutex);
signal(full);
untilfalse;
end
consumer:
begin
repeat
wait(full);
wait(mutex);
nextp:
=buffer(out);
out:
=(out+1)modn;
signal(mutex);
signal(empty);
consumertheiteminnextc;
untilfalse;
end
patend
end
21.利用记录型信号量解决经典进程同步问题:
读者——写者
解:
Varrmutex,wmutex:
semaphore:
=1,1;
Readcount:
integer:
=0;
Begin
parbegin
Reader:
begin
repeat
wait(rmutex)
i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 算法