购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.7 习题解析

试题 1 分析

S1 的初值为 2,显然表明最开始有两个“发货员”这种资源,当顾客去提货时要用去一个这样的资源,于是a显然填P(S1)。当提货完了之后,顾客进程要释放“发货员”资源,于是b显然填V(S1)。从图中可以看出,接着审核员要审核提货是否正确;同理,顾客要用去一个“审核员”资源,于是c应该填P(S2)。最后,d显然填V(S2)了。

值得一提的是,很多考生记不清是P操作加 1 还是V操作加 1,这里给大家提供一个小窍门。大家看字母“V”,从下往上看其水平宽度是逐渐变大的,这表明V操作是对信号量进行加 1 操作。

试题 1 答案

(1)A

(2)C

试题 2 分析

数组 A [150][100]总共有 150 行、100 列,由于每个页面可存放 150 个整数变量,即存放 1.5 行,也就是说,矩阵的 3 行刚好放在两页内,访问它们需要中断 2 次,这样 150 行总共需要中断 100 次。由于页面淘汰算法用的是LRU,该算法的原则是淘汰最久未被访问的页,所以用来存放程序的页是不会被淘汰的,两个数据页中的数据是矩阵的最后 3 行。

试题 2 答案

(3)B

(4)C

试题 3 分析

这里用时空图来表示系统的运行过程(见图 2-18)。

图 2-18 进程运行时空图

从时空图可以看出总时间为:10+13+5+5+5+2+13+5=58,所以第(5)空答案为B。

CPU在整个时间轴上仅在倒数第 2 段CPU为空闲状态,空闲时间为 13ms。所以第(6)空答案为D。

试题 3 答案

(5)B

(6)D

试题 4 分析

安全状态,是指系统能按某种进程顺序(P 1 ,P 2 ,…,P n )为每个进程P i 分配其所需资源,直到满足每个进程对资源的最大需求,使每个进程都可以顺利完成。如果无法找到这样的一个安全序列,则称系统处于不安全状态。

本题已经给出序列,只需将 4 个选项按其顺序执行一遍,便可以判断出现死锁的 3 个序列。

首先求剩下的资源数:

R 1 =9−(1+2+2+1+1)=2

R 2 =8−(2+1+1+2+1)=1

R 3 =5−(1+1+3)=0

由于R 3 已分配的资源为 0,系统不能再分配R 3 资源,所以不能一开始就运行需要分配R 3 资源的进程。所以,A和D显然是不安全的。

其次,求序列P 2 →P 4 →P 5 →P 1 →P 3 是否安全。进程运行分析如表 2-6 所示。

表 2-6 进程运行分析表

显然,该序列是安全的。

最后,求序列P 2 →P 1 →P 4 →P 5 →P 3 是否安全。进程运行分析如表 2-7 所示。

表 2-7 进程运行分析表

这时候,我们发现进程P 1 需要R 1 资源为 5,我们能提供的R 1 资源为 4,所以序列无法进行下去,为不安全序列。

试题 4 答案

(7)C

试题 5 分析

在树形目录结构中,树的根节点为根目录,数据文件作为树叶,其他所有目录均作为树的节点。从根节点出发到达任一文件叶子节点得到唯一一条路径(在UNIX中,各节点间用“/”隔开),这便是该文件的绝对路径,比如图 2-16 中左边f1 的绝对路径为/D1/W1/f1。文件名相同,但绝对路径不同,可能是不同的文件。从当前目录开始(不包括当前目录)到达文件叶子节点的路径称为该文件的相对路径。比如,若当前目录为D1,那么图 2-16 中左边f1 的相对路径为W1/f1。

可采用相对路径名和绝对路径名来访问文件,但前者访问目录文件的次数比后者要少。在该题中,当前路径为D1,如采用相对路径为W1/f1 来访问f1,需要访问磁盘两次才可以读取文件f1,第 1 次是在当前目录D1 中找到W1,第 2 次是在W1 文件目录中找到文件f1的物理位置,接着就可以读取文件f1 了。

试题 5 答案

(8)C

(9)C

(10)B

试题 6 分析

位示图是利用二进制的一位来表示文件存储空间中的一个物理块的使用情况,当其值为“0”时,表示对应物理块为空闲;为“1”时表示已分配。

例如,若文件存储空间总共有 32 个物理块,则可用一个 4×8 二维数组描述,如图 2-19所示。

数组元素 b ij 所代表的块号为 x = m × i + j

其中, m 为矩阵的列数, n 为矩阵的行数,0≤ i < n , 0≤ j < m

回到题目当中,系统中字长为 32 位,磁盘上的物理块依次编号为:0、1、2……则可以采用一个 m 行 32 列的二维数组来描述。所以:8192÷32=256。但问题是问在位示图的第多少个字中描述,要把 0 号物理块算上,所以是第 257 个字中描述。

图2-19 位示图

试题 6 答案

(11)B

试题 7 分析

由题目已知页面大小为 8KB,因为 8KB=2 13 ,所以页内地址有 13 位。现在把逻辑地址9612 转成二进制得:10 0101 1000 1100,这里的低 13 位为页内偏移量,最高一位则为页号,所以逻辑地址 9612 的页号为:1 即十进制的 1,所以物理块号为 3,转为二进制得:11。把物理块号和页内偏移地址拼合得:110 0101 1000 1100,转为十进制得:25996。所以正确答案是B。

试题 7 答案

(12)B

试题 8 分析

本题的出题方式比较新颖,让人看上去觉得这个题很难,但实际上非常容易,比一般的页面淘汰算法题还要容易。只要理解最近最少使用页面淘汰算法,就能轻松解题。题目中提到系统为每个作业分配了 3 个页面的主存空间,其中一个页面用来存放程序,这样剩余的两个页面可用于存放数组数据,由于一个页面存储 128 个整数,所以正好可存矩阵 A 的一行数据。这样进入内存的数据序列为:第 1 行数据、第 2 行数据、第 3 行数据……当进入第 3 行数据时,内存的 3 个页面已满(3 个页面的内容分别为:程序页、第 1 行数据页、第 2 行数据页),需要进行页面淘汰,淘汰算法是LRU,所以要把最久未使用过的页面淘汰掉。程序页时时都在被调用,显然不符合最久未使用这一原则,不能淘汰;第 1 行数据相对于第 2 行数据而言是最久未使用过的,所以淘汰第 1 行数据。当第 4 行数据进入时,淘汰第 2 行数据,以此类推,内存中最后剩下了矩阵 A 的最后两行数据。而每次调入一行数据,产生一次缺页中断,共有 128 页,故有 128 次缺页中断。

试题 8 答案

(13)B

(14)A

试题 9 分析

因为系统使用的是单缓冲区,且顺序处理 9 个记录,每个记录处理时间为 3ms,加上读写时间,总的时间就超过 3ms了。而磁盘旋转一圈的时间为 27ms,也就是说,当系统读取第 0 个记录后,正在处理的过程中,磁盘已经旋过了第 1 个记录。那么,要读取第 1 个记录,就需要磁盘再次旋转到第 1 个记录(即磁盘旋转 1 圈后,27+3=30ms)。同理,要读取第 2个记录时,也需要等 30ms。这样,要读取后面 8 个记录,需要 8×30=240ms,同时加上处理第 0 个记录的时间(3ms)和处理第 8 个记录的时间(3ms),共需 246ms。

要想节约时间,可以把记录错开存放,如表 2-8 所示。

表 2-8 记录安排表

这样,就可以在磁盘旋转两圈内完成所有记录的处理,时间为 54ms。要注意的是,最后处理的记录R 8 不是最后一个磁盘块,所以不需要旋转到最后一个物理块。也就是说,第 2圈的旋转时间只需要 24ms就到达R 8 了。但是,因为要加上R 8 的处理时间 3ms,所以总时间仍然为 54ms。

试题 9 答案

(15)B

(16)C RfzCpZA/gfG8iHgaAfS3x1IzLPTcZTyt+FSFeTyb3zYV++k2MNJnxzNZ0Rn0J2s2

点击中间区域
呼出菜单
上一章
目录
下一章
×