一、填空(每小题5分,共20分)
(注意:答题时先给出填空内容,再作必要的说明)
1、设系统中仅有一个资源类,其中共有3个资源实例,使用此类资源的进程共有3个,每个进程至少请求一个资源,它们所需资源最大量的总和为X,则发生死锁的必要条件是:_________。
2、在一个请求分页系统中,采用先进先出页面置换算时,假如一个作业的页面走向为1,2,3,4,1,2,5,1,2,3,4,5,当分配给该作业的物理块数M分别为3和4时,访问过程中发生的缺页次数为_________和_________。(假定开始时,物理块中为空)
3、设系统中有三种类型的资源(A、B、C)和五个进程(P0,P1,P2,P3,P4),某时刻的状态如下:
根据银行家算法可知,该时刻存在着一个安全序列:____________________________________。
4、根据Bernstein 条件(程序能并发执行,且具有可再现性的条件),则如下4条语句中:
S1: a:=x+y
S2: b:=z+1
S3: c:=a-b
S4: w:=c+1
S1和S2两条语句_________并发执行,S3和S4两条语句_________并发执行。(本小题填空时考虑:是否可以并发执行)
二、回答下列问题(每小题6分,共30分)
1、什么要引入设备独立性?如何实现设备独立性?
2、举例说明在分页系统中,如何实现内存共享?要求图示说明。
3、从用户角度看,引入线程后有何好处?
4、生产者-消费者问题的同步算法中,为什么颠倒生产者进程中的两个P操作的次序,将导致进程死锁?
5、Intel 80386在保模式下工作时,为什么对内存有保护作用?
三(10分)
进程P1和P2通过两个缓冲区给进程P11、P12、P21、P22传递信息,进程P11、P12取进程P1的信息,进程P21、P22取进程P2的信息。假定这两个缓冲区一样大小,所要传递的信息也与缓冲区一样大,同一时刻只能由一个进程往缓冲区中送信息或取信息。试用PV操作来实现这6个进程之间的同步与互斥关系,只要求写出进程P1与P11的同步算法。
四、(10分)
在DOS、WINDOWS操作系统中使用的FAT文件系统中,一个文件使用的磁盘空间以簇为单位进行分配,并且将一个文件使用的全部簇组成一个链表放在FAT表(文件分配表)中;在UNIX中,一个文件使用的磁盘块号放在I结点(索引结点)中。试分析比较这两种典型的文件物理结构,在分析时要考虑到文件大小不同时对性能的影响。
五、(15分)
用户程序在需要OS提供某种服务时,是通过系统调用来完成的。请以一个具体例子(如读写磁盘、在显示屏幕上显示字符等)说明系统调用的处理过程。你可以按照一个你熟悉的操作系统(如UNIX、WINDOWS、LINUX)来说明,也可以介绍你自己根据某个硬件环境设计的系统调用的处理过程。
六、(15分)
页表设计。某系统采用了两级页表机制,可使页表所占用内存尽量少,分页地址变换机构如下图:
页目录表共1024项,每个页表1024项。地址转换时,先由分段部件生成线性地址,再由上面所述的分页部件,根据线性地址中的页目录索引在页目录表中找相应的项,该项中为所需页表在内存的块号,找到该页表后,然后按第21-12位的页表索引找到所需页的内存块号,把它与12位偏移相加得到32位的物理地址。
设系统有如表6.1中所示的10个段,已知:1-8段从内存的200000H处开始由低地址到高地址连续存放,映射到3G+4M开始的线性地址空间;9段(缓冲区)放在400000H开始的内存,映射的线性地址同物理地址;显存从B8000H开始,映射到3G开始的线性地址空间。本题用的页目录表和页表如表6.2中所示,所有页表连续存放。
表6.1
1、请按下面的格式设计页目录表和页表
表6.2
2、线性地址为:C0401010H、C0404010H、C0414010H,则物理地址是多少,所在段的段名是什么?
南京航空航天大学2002年数据结构与程序设计试题
一、将下列稀疏矩阵的非零元素表示成三元组的形式和十字链表的形式。
二、设一棵二叉树的层次遍历序列为ABDEGHJK,中序遍历序列为GDJHKBEA。
(1)画出这棵二叉树示意图
(2)说明建立这棵二叉树的原理
三、回答下列B树(有些教材中称为B-树)问题:
(1)一棵4阶4层(根为第一层,叶子为第二层)的B树,至少有多少关键字,至多有多少关键字
(2)在含有n个关键字的m阶B树中进行查找时,最多访问多少个结点。
四、哈希表中使用哈希函数H(key)=3 * key % 11,并采用开放定址法处理冲突,随机探测再散列的下一地址公式为:
d1=H (key )
di=( di-1 +7 * key ) % 11 (I=2,3…..)
试在0到10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)画出Hash表示意图,并求在等概率情况下查找成功的平均查找长度。
五、求出一棵滿k叉树的叶子结点数n和所有非叶子结点数m之间的关系,给出求解过程。
六、已知两个链表A和B,其元素值递增排列。编程,将A和B合并成一个递减有序(相同值只保留一个)的链表C,并要求利用原表结点。
七、已知一棵二叉树用二叉链表存储,root 指向根结点,p指向树中任一结点。编程,输出从root 到p 之间路径上的结点。
八、已知一棵树用孩子-兄弟链表存储。编程,计算该树的叶子数。
九、设有n 个整数组成的序列,每个整数为-1,0,1之一。编写一个时间复杂度为O(n)的算法,使该序列按负数、零、正数的次序排好。
十、已知n个顶点的带权图用邻接矩阵表示,编写函数,实现用Kruskal算法构造最小生成树,要求对函数中所使用的变量和内容做详细的注释说明。