2018年兰州交通大学机电技术研究所828数据结构考研基础五套测试题
● 摘要
一、单项选择题
1. 在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是( )。
A. 直接插入排序
B. 起泡排序
C. 简单选择排序
D. 快速排序
【答案】A
【解析】当待排序列基本有序时,对冒泡排序来说,若最大关键字位于序列首部,则每趟排序仅能使其“下沉”一个位置,要使其下沉到底部仍需n -1趟排序,也即时间复杂度仍为0(n2)。而对简单选择排序来说,其比较次数与待排序列的初始状态无关;归并排序要求待排序列已经部分有序,而部分有序的含义是待排序列由若干有序的子序列组成,即每个子序列必须有序,并且其时间复杂度为;直接插入排序在待排序列基本有序时,每趟的比较次数大为降低,也
2即n -1趟,比较的时间复杂度由O(n) 降至O(n)。
2. 下列关于虚拟存储的叙述中, 正确的是( )。
A. 虚拟存储只能基于连续分配技术
B. 虚拟存储只能基于非连续分配技术
C. 虚拟存储容量只受外存容量的限制
D. 虚拟存储容量只受内存容量的限制
【答案】D 。
【解析】所谓虚拟存储, 是指运行的进程不必全部装入内存, 只需要部分装入便可以开始运行的一种技术, 在运行过程中, 当所需要的代码部分不在内存时, 通过一种技术(例如缺页中断技术) , 将所需要的页面调入内存, 从而继续运行。虚拟存储可以在较少的内存中运行较大的程序。但是需要有较大的外存以及相应的软、硬件机制配合才能实现。虚拟存储器可以连续分配也可以非连续分配, 虚拟存储器和外存大小没有关系, 所以选项中的A , B , C 都是错误的, 所以答案是D 项。
3. 进程P0和P1的共享变量定义及若进程P0和P1访问临界资源的类C 伪代码实现如下:
则并发执行进程P0和PI 时产生的情况是( ).
A. 不能保证进程互斥进入临界区,会出现“饥饿”现象
B. 不能保证进程互斥进入临界区,不会出现“饥饿”现象
C. 能保证进程互斥进入临界区,会出现“饥饿”现象
D. 能保证进程互斥进入临界区,不会出现“饥饿”现象
【答案】D
【解析】这是皮特森算法(Peterson‟SAlgorithm)的实现,保证进入临界区的进程合理安全. 该算法为了防止两个进程为进入临界区而无限期等待,设置变量tum ,表示不允许进入临界区的编号,每个进程在先设置自己标志后再设置turn 标志,不允许另一个进程进入,这时,再同时检测另一个进程状态标志和不允许进入标志,这样可以保证当两个进程同时要求进入临界区时只允许一个进程进入临界区. 保存的是较晚的一次赋值,则较晚的进程等待,较早的进程进入. 先到先人,后到等待,从而完成临界区访问的要求.
4. 下列指令中, 不能在用户态执行的是( )
A.trap 指令
B. 跳转指令
C. 后找指令
D. 关中断指令
【答案】D
【解析】关中断指令必须在和心态才能执行, trap 指令可以在用户态下执行, 执行了就转到和心态, 跳转与退栈指令都是可以在用户态下执行的指令。
5. 在文件的索引节点中存放直接索引指针10个, 一级二级索引指针各1个, 磁盘块大小为1KB 。每个索引指针占4个字节。若某个文件的索引节点已在内存中, 到把该文件的偏移量(按字节编址) 为1234和307400处所在的磁盘块读入内存。需访问的磁盘块个数分别是( )。
A.1, 2
B.1, 3
C.2, 3
D.2, 4
【答案】B
【解析】文件的索引结点的直接索引指针有10个, 因此直接索引的偏移量范围是0〜2559, 一级索引的偏移量范围是2560〜65791, 二级索引访问的偏移量范围是65792〜45183907。偏移量1234可以通过直接索引得到在磁盘块的地址, 因此需要一次访问, 307400需要通过二级索引查找其在磁盘的位置, 需要分别访问存放二级索引的两个索引块以及对应的数据块。
6. 若x=103, y=-25测下列表达式采用8位定点补码运算实现时, 会发生溢出的是( )
A.x+y
B.-x+y
C.x-y
D.-x-y
【答案】C
答:8位定点补码能表示的数的范围为:-128~127
A 结果为78, B 结果为-128, D结果为-78都在此范围内, 只有C 结果128超过了8位定点补码能表示的数的范围, 会发生溢出
7. 在缺页处理过程中, 操作系统执行的操作可能是( )。
Ⅰ. 修改页表
Ⅱ. 磁盘
Ⅲ. 分配页框
A. 仅Ⅰ、Ⅱ
B. 仅Ⅱ
C. 仅Ⅲ
D. Ⅰ、Ⅱ和Ⅲ
【答案】D
【解析】首先我们要考虑的是, 为什么会发生缺页中断? 当然, 在一个采用虚拟存储管理技术的系统中, 程序是部分装入的, 还有部分是处于外存上的, 因此, 当需要访问那部分位于外存上的代码或数据时, 系统会产生缺页中断。产生缺页中断的目的是要将位于外存上的代码或数据装入内存, 据此, 缺页中断接下去所做的工作就是首先要在内存中找到空闲页框并分配给需要访问的页(若没有空闲的页面则要调用页面置换程序找到一处页面, 将该页面的内容处理掉, 或回写磁盘, 或覆盖掉, 然后将此页分配给需要访问的页) , 分配妥当以后,
缺页中断处理程序调用设备驱动程序做磁盘
, 将位于外存(一般是磁盘) 上的页面调入内存, 调入后转身去修改页表, 将页表中代表该页是否在内存的标志位(一般称为存在位或有效位、在位位) 修改为“真”, 将物理页框号填入相应位置, 若必要还需修改其它相关表项等。完成上述任务后, 缺页中断处理程序返回, 继续程序的执行。从上述过程可以看出, 涉及的相关处理非常多, 因此, 答案就显而易见了。