系统架构设计师部分计算题解析
目录
第一章:计算机组成与体系结构
流水线吞吐率、加速比
2017年下半年
其他
第二章:操作系统
PV操作、前趋图
2017年下半年
2015年下半年
2012年下半年
2011年下半年
其他
分页存储管理
2013下半年
2012年下半年
其他
文件系统
银行家算法
第三章:数据库系统
数据库关系模式、函数依赖
解题思路
候选键(码)思路一
候选键(码)思路二
2017年下半年
2016年下半年
其他
无损分解
最小函数集
元组演算表达式
第十二章嵌入式系统
第一章:计算机组成与体系结构
流水线吞吐率、加速比
2017年下半年
- 某计算机系统采用5级流水线结构执行指令,设每条指令的执行由取指令(2)、分析指令(1)、取操作数(3)、运算(1)和写回结果(2) 组成, 并分别用5个子部件完成,该流水线的最大吞吐率为( ) ;若连续向流水线输入10条指令,则该流水线的加速比为( ) 。
【解析】
理论流水线执行时间=(2+1+3+1+2)+max(2,1,3,1,2) *(n-1) = 9+(n-1)*3;
第一问:
最大吞吐率:
第二问:
10条指令使用流水线的执行时间=9+(10-1)*3=36。
10条指令不用流水线的执行时间=9*10=90。
加速比=使用流水线的执行时间/不使用流水线的执行时间=90/36 = 5:2。
其他
- 例:某计算机系统,一条指令的执行需要经历取指(2ms)、分析(4ms)、执行(1ms)三个阶段,现要执行100 条指令,利用流水线技术需要多长时间? (教材3.1)
理论上来说,1条指令的执行时间为:2ms+4ms+1ms=7ms。
所以:理论流水线执行时间=2ms+4ms+1ms+(100-1)*4=403ms。
而实际上,真正做流水线处理时,考虑到处理的复杂性,会将指令的每个执行阶段的时间都统一为流水线周期,即1条指令的执行时间为:4ms+4ms+4ms=12ms。所以:实际流水线执行时间=4ms+4ms+4ms+(100-1)*4=408ms
扩展:
上述题目中,如果采用
3级操作,2级流水,等价于将3级操作变成2级操作。
最合理的划分是由取指(2ms)、分析(4ms)、执行(1ms)相连划分为指(2ms)、分析(4ms)+执行(1ms)={2,5}。
然后利用公式计算就是理论:(2+5)+(100-1)*5=502,实际:(5+5)+(100-1)*5=505。
第二章:操作系统
PV操作、前趋图
2017年下半年
前趋图(Precedence Graph) 是一个有向无环图,记为:→={(Pi,Pj )|Pi must complete before Pj may strat}。假设系统中进程P={P1,P2,P3,P4,P5,P6,P7,P8},且进程的前驱图如下:
那么前驱图可记为:( )。
A: →={(P2,P1),(P3,P1),(P4,P1),(P6,P4),(P7,P5),(P7,P6),(P8,P7)}
B: →={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P5,P7),(P6,P7),(P7,P8)}
C: →={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P5,P7),(P6,P7),(P7,P8)}
D: →={(P2, P1), (P3,P1),(P4,P1),(P5,P2),(P5,P2),(P5,P3),(P6,P4),(P7,P5), (P7,P6),(P8,P7)}
【解析】
容易得答案C。
2015年下半年
- 某火车票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,…,n)。假设Hi(j=1,2+,…,m)单元存放某日某车次的剩余票数,Temp为Pi进程的临时工作单元,x为某用户的订票张数。初始化时系统应将信号量S赋值为 ( ) 。Pi进程的工作流程如下,若用P操作和V操作实现进程间的同步与互斥,则图中a、b和c应分别填入 ( ) 。
【解析】
第一空正确答案是1,因为公共数据单元马是一个临界资源,最多允许1个终端进程使用,因此需要设置一个互斥信号量S,初值等于1。
第二空的正确答案是P(S)、V(S)和V(S),因为进入临界区时执行P操作,退出临界区时执行 V操作。(个人理解临界区就是菱形判断条件)。
2012年下半年
- 某书店有一个收银员,该书店最多允许n个购书者进入。将收银员和购书者看作不同的进程,其工作流程如图所示。利用PV操作实现该过程,设置信号量S1、S2和Sn,初值分别为0,0,n。则图中a1和a2应填入 ( ) , b1和b2应填入 ( ) 。(2012年下半年)
【解析】
这是一道考查利用P、V操作实现进程间的同步工作的综合分析题。对于本试题收银员进程和购书者进程之间是一个同步问题,需要设置两个同步信号量,即S1和S2。其中,信号量 S1表示购书者购书时,通知收银员进程做收费工作,初值为0。信号量S2表示收银员收费结束,通知购书者进程可以进行一步工作,初值为0。
由于该书店最多只允许有n个购书者进入,因此,书店是一个临界资源,最多允许n个购书者购书,对应的是设置一个互斥信号量Sn,初值等于n。当购书者进入书店时需要执行P(Sn)操作,用于查看书店是否有空闲位置允许其进入购书。若有空闲位置,则进入书店进行购书;若没有空闲位置,则进入等待状态。当购书者完成购书操作退出书店时,需要执行V(Sn)操作,表明书店中已有一个空闲位置,并唤醒其他进入等待状态的购书者进程。
购书者进程中,完成购书操作后先执行V(S1)操作表示购书结束,唤醒收银员进程做收费工作。然后执行P(S2),用于查看该购书者是否已缴费,若已缴费,则继续进行一步工作,即执行V(Sn);若未缴费,则进入等待状态。
对于收银员进程,先执行P(S1)操作,用于检查是否有准备缴费的购书者申请。若有,则进行执行下一步工作,即进行收费操作;若没有准备缴费的购书者申请,则进入等待状态。当完成收费任务后,需继续执行V(S2)操作,用于通知购书者进程可以进行一步工作。
答案:V(S1)、P(S2);P(S1)、V(S2)
可参考视频《0405。PV操作练习题1.wmv》解析。
2011年下半年
- 进程P1、P2、P3、P4和P5的前趋图如下:
若用PV操作控制进程P1~P5并发执行的过程,则需要设置5个信号量S1、S2、S3、S4和S5,进程间同步所使用的信号量标注在上图中的边上,且信号量S1~S5的初值都等于零,初始状态下进程P1开始执行。下图中a、b和c处应分别填写( );d和e处应分别填写( ),f和g处应分别填写( )。
【解析】
最简单的理解方式:箭头出就是V操作,箭头入就是P操作。
答案:1、V(S1)V(S2)、P(S1)和V(S3)V(S4);P(S2)和V(S5);P(S3)和P(S4)P(S5)
其他
- 有一个仓库可以存放P1、P2两种产品,但是每次只能存放一种产品。要求:(不用太理解)
①w=Num(P1)-Num(P2);
②-i<w<k(i、k为正整数)。
如果Num(P1)=0,则-i<-Num(P2)<k,则-k<Num(P2)<i。所以仓库最多放i-1个P2产品;
若用P/V操作实现P1和P2产品的入库过程,则至少需要上 ( ) 个同步信号量及 ( ) 个互斥信号量。其中,同步信号量的初值分别为 ( ) ,互斥信号量的初值分别为 ( ) 。
【解析】
首先不看题,根据我的一般理解,一个系统中一般是问我有几个同步信号量,和互斥信号量,同步一般是2个,互斥一般是1个。同步的初值一般是0或者资源数,互斥的初值一般设为1
现在根据题目的第一句分析,一个仓库,放两种产品P1,P2,每次只能放一种。也就是说,有一个箱子,P1和P2都可以放,但是一次只能放P1,或者只能放P2,不能同时放,这和互斥很像,想想一下千军万马过独木桥,独木桥谁都能过,但是一次只能过一个。所以对于箱子而言是互斥的。
这里面有互斥,那么有没有同步。同步是指协作,谁和谁协作,没看出来,应该没有同步吧。初步答案,互斥1个,同步0个。
接着求初始值,看要求,w=Num(P1)-Num(P2),而且-i<w<k,i和k还都是整数。原来P1和P2的产品量不是一个啊,是多个啊。还有数量限制。
w=Num(P1)-Num(P2)不明白。但是 -i<w=Num(P1)-Num(P2)<k。看选项结果初值应该和k,i都些些关系。如果假设一个极端,Num(P1)=0或者Num(P2)=0。
如果Num(P1)=0,则-i<-Num(P2)<k,则-k<Num(P2)<i。所以仓库最多放i-1个P2产品(<i,i又为正数,只能是i-1); 而Num(P2)=0,则-i<Num(P1)<k,则仓库最多放k-1个P1产品。
然后仓库的操作过程可能是这样的。首先假设要放P1进入仓库,要看下仓库里是否有P2产品,如果有P1就不能放进去;如果没有P2产品,只有P1产品,还要看看P1产品的数量是否到达了i-1,如果已经到达了i-1,也不能放P1了。而对于产品P2,则要看是否有P1产品,是否数量达到了k-1。
尽管还是没有看出同步该有的协作,但是对于P1,P2产品应该用两个信号量S1,S2初始值分别为k-1和i-1,表示P1产品的数量,和P2产品的数量。每次放入一个P1产品,就P(S1)减少一个资源。P2同理。
而互斥信号量,就是表示这个放了P1不能放P2,放了P2不能放P1。它的初值为1,放了P1之后,变为0,P2不能放,没资源了;或者放了P2之后变为0,P1不能放了。
所以同步为2,互斥为1;同步的初始值为i-1,k-1;互斥的初始值为1。
分页存储管理
2013下半年
- 某操作系统采用分页存储管理方式,下图给出了进程A和进程B的页表结构。如果物理页的大小为512字节,那么进程A逻辑地址为1111(十进制)的变量存放在___号物理内存页中。假设进程A的逻辑页4与进程B的逻辑页5要共享物理页8,那么应该在进程A页表的逻辑页4和进程B页表的逻辑页5对应的物理页处分别填___。
【解析】