2017年内蒙古大学计算机学院892数据结构与程序设计(自命题)考研强化模拟题
● 摘要
一、应用题
1. 一单道批处理系统中,有如下四个作业,并采用短作业优先调度算法,试计算作业的平均周转时间和平均带权周转时间。 (单位:小时)
【答案】7点时作业1先运行;
平均周转时间
为
小时 小时平均带权周转时间
为
【解析】作业平均周转时间和作业带权周转时间按下列公式计算。
作业平均周转时间
作业平均周转时间可用来衡量不同调度算法对同一作业流的调度性能。作业平均周转时间T 的公式为:
是作业的完成时间减去作业的提交时间。平均带权周转时间
作业i
的带权周转时间是作业i
的周转时间与作业i
的实际运行时间之比,
即
而作业平均带权周转时间W 的公式为:
2. 下图将一组进程分为4类,假定各类进程之间采用优先级调度,每类进程内部采用时间片轮转调度。请简述PI 、P2、P3、P4、P5、P6、P7、P8进程的调度过程。
【答案】不同类进程之间采用优先级调度,而同类进程内部采用时间片轮转调度。先进行优先级4的进程调度,P1, P2, P3按时间片进行轮转;等Pl ,P2, P3均执行完,执行优先级3的进程P4, P5。同理P4, P5按时间片轮转,运行完成后调度优先级1的进程P6, P7, P8。进程P6, P7, P8按时间片轮转直至完成。
【解析】所谓多级反馈队列轮转法就是把就绪进程按优先级排成多个队列,并赋给每个队列不同的时间片,高优先级进程的时间片比低优先级进程的时间片小。调度时先选择高优先级队列的第一个进程,使其投入运行,当该进程时间片用完后,若高优先级队列中还有其他进程,则按照轮转法依次调度执行,否则转入低一级的就绪队列。只有高优先级就绪队列为空时,才从低一级的就绪队列中调度进程执行。
二、综合题
3. 为了破坏“请求和保持”条件而提出了两种协议,试比较这两种协议。
【答案】(1)第一种协议在所有进程开始运行之前,必须一次性地申请其在整个运行过程中所需的全部资源,并且在分配资源时,只要有一种资源不能满足进程的要求,即使其它所需的各种资源都空闲也不分配给该进程,而让该进程等待。因此有资源被严重浪费、进程经常会发生饥饿现象等缺点。
(2)第二种协议是对第一种协议的改进,它允许一个进程只获得运行初期所需的资源后,便开始运行。进程运行过程中再逐步释放已分配给自己的,且已用毕的全部资源,然后再请求新的所需资源。如此便可提高设备的利用率,还可减少进程发生饥饿的概率。
4. 叙述多级反馈队列调度算法的实施过程。
【答案】所谓多级反馈队列轮转法就是把就绪进程按优先级排成多个队列,并赋给每个队列不同的时间片,高优先级进程的时间片比低优先级进程的时间片小。调度时先选择高优先级队列的第一个进程,使其投入运行,当该进程时间片用完后,若高优先级队列中还有其他进程,则按照轮转法依次调度执行,否则转入低一级的就绪队列。只有高优先级就绪队列为空时,才从低一级的就绪队列中调度进程执行。此种方法既照顾了时间紧迫的进程又兼顾了短进程同时考虑了长进程,是一种比较理想的进程调度方法。
5. 试全面比较连续分配和离散分配方式。
【答案】(1)连续分配方式
指为一个用户程序分配一个连续的地址空间,包括单一连续和分区两种分配方式。单一连续方式将内存分为系统区和用户区,它最简单,只用于单用户单任务操作系统;分区方式分固定分区和动态分区两种。连续分配方式会形成许多碎片,虽然可以通过紧凑方式将许多碎片拼接成可用的大块空间,但须为之付出很大开销。
(2)离散分配方式
离散分配方式分为分页、分段和段页式存储管理。分页式存储管理旨在提高内存利用率,分段式存储管理旨在满足用户(程序员)的需要,段页式存储管理则将两者结合起来,具有分段系统便于实现、可共享、易于保护和动态链接等优点,又能像分页系统那样很好地解决外部碎片及可离散地为各段分配内存等问题,是比较有效的存储管理方式。
6. 引入捡查点的目的是什么?引入检查点后又如何进行恢复处理?
【答案】(1)引入检查点的目的
引入检查点的目的是使对事务记录表中事务记录的清理工作经常化,即每隔一定时间便做一次下述工作:首先是将驻留在易失性存储器(内存)中的当前事务记录表中的所有记录输出到稳定存储器中;其次是将驻留在易失性存储器中的所有己修改数据输出到稳定存储器中;然后是将事务记录表中的(检查点)记录输出到稳定存储器中;最后是每当出现一个(检查点)记录时,系统便执行恢复操作,利用redo 和undo 过程实现恢复功能。
(2)引入检查点后恢复处理的方法
恢复处理由恢复例程来实现。首先查找事务记录表,确定在最近检查点以前开始执行的最后的事务Ti 。在找到这样的事务后再返回去搜索事务记录表,便找到第一个检查点记录,恢复例程从该检查点开始,返回搜索各个事务记录,并利用redo 和undo 过程对它们进行处理。
7. trap.C 是什么程序? 它将完成哪些处理?
【答案】trap.C 程序是一个处理各种陷入情况的C 语言文件,共有12种陷入的处理要调用trap.C 程序(如因系统调用、进程调度中断、跟踪自陷非法指令、访问违章、算术自陷等)。用于处理在中断和陷入发生后的若干公共问题。如果因为系统调用而进入trap.C 时,它所要进行的处理将包括:确定系统调用号、实现参数传送、转入相应的系统调用处理子程序。在由系统调用处理子程序返回到trap.C 后,需要重新计算进程的优先级,对收到的信号进行处理等。
8. 何谓成组调度方式?按进程平均分配处理器和按线程平均分配处理器时间的方法,哪个更有效?
Leutenegger 提出了成组调度方式。【答案】为了解决在自调度方式中线程被频繁切换的问题,
该方式将一个进程中的一组线程分配到一组处理器上去执行。在成组调度时,如何为应用程序分配处理器时间,可考虑采用以下两种方式: