中科院计算机技术研究所1999年硕士生入学试题 编译原理与操作系统
一.(15分)有表达式如下:A+B*(C-D)**N (**为幂乘)
(1)给出该表达式的逆波兰式表示(后缀式);
(2)给出上述表达式的四元式和三元式序列.
二.(15分)有C程序如下:
main()
{
printf("%d,%d,%d/n",10);
}
(1)试着写出上述printf语句输出的结果;
(2)从运行环境和printf的实现分析为什么会有这样的输出结果.
三.(5分)构造一个DFA(确定的有限自动机),使之接受含偶数个"1"的0,1串集.
四.(5分)有文法G,其产生式如下:
S->S(S),
S->ε /*空产生式*/
试写出一个语法制导定义,它输出配对的括号个数.
五.(10分)已知某语言L={a^(m)b^(n)|n>m>=0}.试写出产生该语言的两个文法G1和
G2,其中G1是LR(1)文法,G2是非LR(1)和非二义性文法.
六.填空(每空一分,共20分)
1.现代操作系统的两个最基本的特征是___和___.
2.进程控制块的初始化工作包括___,___和___.
3.在操作系统中引入线程概念的主要目的是___.
4.unix系统v中,系统向用户提供的用于创建新进程的系统调用是___;用于建立无名
管道的系统调用是___;用于创建有名管道的系统调用是___.
5.unix系统v中,引起进程调度的原因有___,___,___和___等.
6.在分区分配算法中,首次适应算法倾向于优先利用内存中___部分的空闲分区,从
而保留了___部分的大空闲区.
7.进行设备分配时所需的数据表格主要有___,___,___和___等.
8.利用符号链实现文件共享时,对文件主删除了共享文件后造成的指针悬空问题,解
决的方法是___.
七.(8分)在消息传递通信方式下,
A.发送进程和接收进程在通信过程中可以采用那三种同步方式?
B.试以下面给出的发送进程和接收进程(将接收到的数据存入S)为例,说明当接收进
程执行到标号为L2的语句时,采用这三种同步方式,X的值可能各是多少?
发送进程P: 接收进程Q:
M=10;
L1: send M to Q; L1: receive S from P;
L2: M=20; L2: X:=S+1;
goto L1;
八.(8分)一系统具有150个存储单元,在T0时刻按下表所示分配给3个进程:
进程 Maximum demand Current allocation
P1 70 25
P2 60 40
P3 60 45
对下列请求应用银行家算法分析判定是否是安全的:
A.第4个进程P4到达,最大需求60个存储单元,当前请求分配25个单元.
B.第4个进程P4到达,最大需求50个存储单元,当前请求分配35个单元.
如果是安全的请给出一个可能的进程安全执行序列.如果是不安全的,请说明原因.
九、(14分)设正在处理器上执行的一个进程的页表如下.页表的虚页号和物理块号
是十进制数,起始页号(块号)均为0.所有的地址均是存储器字节地址,页的大小为
1024字节.
A.详述在设有快表的请求分页存储管理系统中,一个虚地址转换成物理内存地址的过程.
B.下列虚地址对应与什么物理地址: (1)5499; (2) 2221;
虚页号 状态位 访问位 修改位 物理块号
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
注释:访问位---当某页被访问时,其访问位被置为1.
※试卷提供:王敏
※来源:天极网考研 http://edu.yesky.com/jxzl/kaoyan/kaoyan.htm
--
中科院计算机技术研究所1999年硕士生入学试题 编译原理与操作系统参考答案
一.
(1)后缀式:ABCD-*+ECD-N**/+
(2)
四元式 三元式
(1)( - , C , D , t1) (1)( - , C , D )
(2)( * , B , t1, t2) (2)( * , B ,(1))
(3)( +, A , t2, t3) (3)( +, A ,(2))
(4)( - , C , D, t4) (4)( - , C , D )
(5)(**, t4, N , t5) (5)(**, (4), N)
(6)( / , E , t5, t6) (6)( / ,E ,(5))
(7)( +, t3, t6, t7) (7)( +,(3),(6))
二.
(1)(5分)输出结果: 10,X,Y 其中X,Y是随机整数值
(2)(10分)
从活动记录内容安排看,在运行栈中,调用者的活动记录在被调用者的下面,如图:
其中参数域和可能有的返回值放在紧靠调用者活动记录的地方.这样的好处是,对
调用者来说无须了解被调用者的局部数据或临时量,做到信息隐藏.另一好处是,
可以处理变元个数可变的过程,如printf.
从printf实现看,C语言中的printf函数,他的第一个变元指出了其余参数的性质,所以
一旦printf能够确定第一个变元位置,他就能找到其余变元.C的参数是逆序计算和
进栈的,这样就保证了被调用者能知道第一个变元的位置.在所给例子中,main函数
调用printf时仅压入两个参数到栈中,而第一个参数中指示要显示三个整数值,但仅
给出(压入栈(一个有效值).所以出现上述结果.
三.(5分)
见附件图片
四.(5分)为符号S引入综合属性h,语法制导定义如下:
产生式 语义规则
S->S1(S2) S.h:=S1.h+S2.h+1
S->ε S.h:=0
S'->S print(S.h)/*输出其配对括号数*/
五.(10分)
G1:LR(1)文法 G2:非LR(1),非二义性文法
S->A,B S->aSb|B
A->aAb|ε B->Bb|b
B->Bb|b
六.填空
1.并发,共享
2.初始化标识符信息,初始化处理机状态信息,初始化处理机控制信息;
3.为了减少程序并发执行时所需付出的时空开销,提高程序执行的并发度;
4.fork pipe mknod
5.正在执行的进程时间片完; 正在执行的进程执行了sleep系统调用; 正在执行的
进程执行了exit系统调用; 正在执行的进程在用户态运行时有优先级更高的进程
进入就绪队列
6.中低地址 , 高地址
7.设备控制表, 控制器控制表, 通道控制表, 系统设备表
8.只让文件主拥有指向该文件索引结点的指针,而共享该文件的其他用户只有该文
件的路径明而不是指向索引结点的指针.
七.在消息传递通信方式下:
A三种同步方式分别为:
1.发送进程和接收进程均阻塞(即同步的发送和接收)
2.发送进程不阻塞,接收进程阻塞(即阻塞的发送和接收)
3.发送进程和接收进程均不阻塞(即无阻塞的发送和接收)
B.同步的发送和接收方式下:X=11;
阻塞的发送和接收方式下:X=11;
无阻塞的发送和接收,X=11,或21,或-99.
八.应用银行家算法
A.安全,存在至少一个进程安全执行队列:P3,P2,P1,P4.(只要P3排第一均可)
B.不安全.因为系统在满足了P4的资源请求后,已不满足安全性.
九.
A.在设有快表的请求分页系统中地址变换机构在进行地址变换时,
(1)首先检索快表,试图找到所要访问的页.若找到,便修改页表中的访问位.对于写指
令,还需将修改位置成"1",然后利用页表项中给出的物理块号和页内地址(偏移址),
形成物理地址.
(2)如果在快表中未找到该页的页表项,则应再到内存中查找页表,再从找到的页表
项的状态位来了解该页是否已调入内存,其结果可能是:
(1)该页已调入内存,这时应将该页的页表写入快表,当快表已满时,应先调出按某种
算法确定的页的页表项,然后再写入该页的页表项.然后再执行如(1)所述的地址变
换过程.
(2)该页尚未调入内存,便要产生缺页中断,请求操作系统从外存将所缺之页调入内
存.操作系统的缺页中断机构从外存中找到所缺的页后,判断内存是否已满.若否,则
从外存调入所缺的页;若是,还要先调用页面置换算法从内存中换出一页,再从外存
调入所缺的页.在做页面置换时,若将被换出的页的修改位置为"1",说明已被修改过
,则要将该页写回内存,然后执行(1)所述的地址变换过程.
B.
虚地址(虚页号,页内地址) 物理地址(物理块号,块内地址)
2221=1024*2+173 (2,173) (不在内存)
5499=1024*5+379 (5,379) (0,379)