中国科学院软件研究所 一九九四年招收硕士学位研究生入学考试试题 试题名称:软件基础 操作系统部分(30分) 填充(1分×14) 1.采用单级文件目录的主要缺陷是存在 问题。 2.在单道程序运行环境下,常用的作业调度算法有 、 和 。 3.特权指令是只能由 使用的指令。 4.存储器的保护机制(硬件)有 保护和 保护。 5.预防死锁中的预先分配法和标准分配法,它们分别破坏了产生死锁必要 条件中的 条件和 条件。 6.在段式虚拟存储管理中,段表设置“改变位”的目的是为了 。 7.进程有三种基本状态,即① 状态, ① ② 状态,③ 状态。 当进程由①演变为②或③时,就会立即引起 。 ② ③ 二.判断(1分×5,正确的打“√”,错误的打“×” ) 1.( )有了动态重定位机构,作业地址空间的代码就可以原封不动地装 入到给定的内存中。 2.( )任一时刻,若有执行状态的进程,就一定有就绪状态的进程。 3.( )文件系统中,设置OPEN操作的目的是为了将文件复制到内存中。 4.( )临界段是不可中断的程序。 5.( )作业由提交状态进入后备状态的过程是由作业调度程序完成的。 三.(5分)分页式存储管理与分段式存储管理的主要区别是什么? 四.(6分)以下是高级通讯原语SEND和RECEIVE不完整的框图。请填充以 适当的P,V操作,并说明所用信号量的意义和初值。 SEND: ↓         RECEIVE: ↓ 申请一消息区 ③ ↓ ↓ 消息送消息区 ④ ↓ ↓ ①   从消息链上摘下一消息 ↓ ↓ 消息区挂入消息链 ⑤ ↓ ↓ ② 消息送接受区 ↓ ↓ V(S2) 释放消息区 ↓ ↓ 语言与编译部分(35分) 一.(7分)把下面不确定的有限自动机化为确定的有限自动机。 二.(8分)有文法: S (L)| a L L,S | S 给此文法配上语义动作子程序(或者说为此文法写一个语法制导定义),它 输出配对的括号的个数,如对于句子(a,(a,a))输出是2。 三.(15分)为语言{ }写三个文法,它们分别是二义文法,LR(1) 文法和非LR(1)且非二义的文法。不必证明所写文法的正确性,但每个文 法的产生式不能超过4个。 四.(5分)右边是一个FORTRAN 77程序。 CALL SUB 按语言的语义,程序的输出结果是什么? CALL SUB 在静态存储分配情况下,实际的输出结 END 果是什么?两者是否有区别?说明理由。 SUBROUTINE SUB DATA I/10/ WRITE (*,*)I I=100 END 程序设计与数据结构部分(35分) 一.(8分)下面的程序段是合并两条链(f和g)为一条链f的过程。作为参数 的两条链都是按节点上number值由大到小链接的。合并后新链仍按此方式 链接。请填写下述空框,使程序正确工作。 type pointer = ↑node; node = record number: integer; next  : pointer end; procedure combine(var f:pointer,g:pointer); var h,p:pointer; begin new(h); h↑.next:= nil; p:=h; while (f<>nil)and (g<>nil) do if f↑.number>=g↑.number then begin p↑.next:= ;p:= ; end else begin p↑.next:= ;p:= ; end; if f=nil then ; if g=nil then ; f:=h↑.next; dispose(h); 二.(12分)如果一个数列中的某一段(至少有两个元素)的各元素值均相同, 则称之为等值数列段。等值数列段中元素的个数叫做等值数列段的长度。 现有由N个元素组成的整数数列A,编一程序求A中长度最大的所 有等值数列段的始末位置。如果没有等值数列段,则输出特殊标志。 三.(15分)编一个程序,对输入的任意正整数n,打印出集合{0,1,…,n-1} 的所有子集。例如:输入为3时,输出是 {} {0} {1} {0,1} {2} {0,2} {1,2} {0,1,2}