中国科学技术大学
一九九七年招收硕士学位研究生入学考试试题
试题名称:编译原利于操作系统
编译原理部分
(8分) 为正规式 ( a | b )a ( a | b ) 构造一个确定的有限自动机.
(5分) 在Pascal语言中, begin , var 和 type 是保留字,而 integer, true 和 sin等是标准标识符.保留字有固定含义,而标准标识符可由用户进行重定义,编译器在处理这两类符号时有何区别?
(10分) 为下列文法构造LR(1)项目集规范族,然后通过合并同心集构造LALR(1) 项目集规范族,最后确定该文法是否是LALR(1)文法.
S ---> A B ---> ε C --->ε A ---> BCA A ---> a
(7分)简要说明为什么C语言可以允许一函数的返回值类型是函数类型(即函数指针类型),而Pascal语言不允许?
(10分)就下面的文法
S ---> ( L ) |a L ---> L, S | S
给出一个翻译方案,它输出每个a的嵌套深度.如句子( a, ( a, a) ) 的输出是1 2 2
(10分)简要说明为什么下面程序的运行不终止.
main()
{ addr();
loop();
}
long *p;
loop()
{ long i, j;
j=0;
for( i=0; i < 10; i ++)
{ printf(“*p=%ld\n,j=%ld\n”,*p, j );
(*p) – – ; j ++;
}
}
addr()
{ long x;
x=0; p=&x;
}
操作系统部分
(6分) 在操作系统中,虚拟技术主要表现在那些地方?
(6分) 某操作系统只支持单级文件目录,如果它允许在该目录下有任意多的文件和任意长的文件名,可否用它来模拟多级目录?若可以,请给出你的方法.
(8分) 解决死锁问题的方法通常有哪几种?各有什么特点?
(10分) 请用send / receive 原语和伪Pascal语言(或C语言) 写出一个解决具有N个缓冲区的“生产者---消费者”问题的算法.
(10分) 在UNIX系统V中,请求调页管理采用了哪几种主要的数据结构?其功能各是什么?如果一个进程当前访问的虚地址为1996K,相应的物理页号为1997,其拷贝在对换设备1上,对应的块号为2000,引用计数为1.请以该情况为例,给出上述主要数据结构之间的关系描述.
(10分) 在分页存储管理中,如果虚地址的长度为64位,页的大小为4K,那么一个作业的页表有多大?会给系统的实现带来什么样的新问题?请给出两种可能的解决方案.