《操作系统精髓与设计原理·第五版》练习题及答案

上传人:kms****20 文档编号:40206528 上传时间:2018-05-24 格式:DOC 页数:55 大小:954.50KB
返回 下载 相关 举报
《操作系统精髓与设计原理·第五版》练习题及答案_第1页
第1页 / 共55页
《操作系统精髓与设计原理·第五版》练习题及答案_第2页
第2页 / 共55页
《操作系统精髓与设计原理·第五版》练习题及答案_第3页
第3页 / 共55页
《操作系统精髓与设计原理·第五版》练习题及答案_第4页
第4页 / 共55页
《操作系统精髓与设计原理·第五版》练习题及答案_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《《操作系统精髓与设计原理·第五版》练习题及答案》由会员分享,可在线阅读,更多相关《《操作系统精髓与设计原理·第五版》练习题及答案(55页珍藏版)》请在金锄头文库上搜索。

1、1第第 1 章章 计算机系统概述计算机系统概述1.1、图 1.3 中的理想机器还有两条 I/O 指令:0011 = 从 I/O 中载入 AC0111 = 把 AC 保存到 I/O 中 在这种情况下,12 位地址标识一个特殊的外部设备。请给出以下程序的执行过程(按照图 1.4 的格式):1.从设备 5 中载入 AC。 2.加上存储器单元 940 的内容。 3.把 AC 保存到设备 6 中。 假设从设备 5 中取到的下一个值为 3940 单元中的值为 2。 答案:存储器(16 进制内容):300:3005;301:5940;302:7006步骤 1:3005IR;步骤 2:3AC步骤 3:5940

2、IR;步骤 4:325AC步骤 5:7006IR:步骤 6:AC设备 6 1.2、本章中用 6 步来描述图 1.4 中的程序执行情况,请使用 MAR 和 MBR 扩充这个描述。 答案:1. a. PC 中包含第一条指令的地址 300,该指令的内容被送入 MAR 中。b. 地址为 300 的指令的内容(值为十六进制数 1940)被送入 MBR,并且 PC 增 1。这两个步骤 是并行完成的。c. MBR 中的值被送入指令寄存器 IR 中。2. a. 指令寄存器 IR 中的地址部分(940)被送入 MAR 中。b. 地址 940 中的值被送入 MBR 中。c. MBR 中的值被送入 AC 中。3.

3、a. PC 中的值(301)被送入 MAR 中。b. 地址为 301 的指令的内容(值为十六进制数 5941)被送入 MBR,并且 PC 增 1。c. MBR 中的值被送入指令寄存器 IR 中。4. a. 指令寄存器 IR 中的地址部分(941)被送入 MAR 中。b. 地址 941 中的值被送入 MBR 中。c. AC 中以前的内容和地址为 941 的存储单元中的内容相加,结果保存到 AC 中。5. a. PC 中的值(302)被送入 MAR 中。b. 地址为 302 的指令的内容(值为十六进制数 2941)被送入 MBR,并且 PC 增 1。c. MBR 中的值被送入指令寄存器 IR 中。

4、6. a. 指令寄存器 IR 中的地址部分(941)被送入 MAR 中。b. AC 中的值被送入 MBR 中。c. MBR 中的值被存储到地址为 941 的存储单元之中。 1.4、假设有一个微处理器产生一个 16 位的地址(例如,假设程序计数器和地址寄存器都是 16 位)并且 具有一个 16 位的数据总线。 a.如果连接到一个 16 位存储器上,处理器能够直接访问的最大存储器地址空间为多少? b.如果连接到一个 8 位存储器上,处理器能够直接访问的最大存储器地址空间为多少? c.处理访问一个独立的 I/O 空间需要哪些结构特征? d.如果输入指令和输出指令可以表示 8 位 I/O 端口号,这个

5、微处理器可以支持多少 8 位 I/O 端口? 答案:对于(a)和(b)两种情况,微处理器可以直接访问的最大存储器地址空间为216 = 64K bytes;唯一的区 别是8位存储器每次访问传输1个字节,而16位存储器每次访问可以传输一个字节或者一个16位的 字。对于(c)情况,特殊的输入和输出指令是必要的,这些指令的执行体会产生特殊的“I/O信号” (有别于“存储器信号”,这些信号由存储器类型指令的执行体产生);在最小状态下,一个附 加的输出针脚将用来传输新的信号。对于(d)情况,它支持28 = 256个输入和28 = 256个输出字节端2口和相同数目的16位I/O端口;在任一情况, 一个输入和

6、一个输出端口之间的区别是通过被执行的 输入输出指令所产生的不同信号来定义的。 1.5、考虑一个 32 位微处理器,它有一个 16 位外部数据总线,并由一个 8MHz 的输入时钟驱动。假设这 个微处理器有一个总线周期,其最大持续时间等于 4 个输入时钟周期。请问该微处理器可以支持的最大 数据传送速度为多少?外部数据总线增加到 21 位,或者外部时钟频率加倍,哪种措施可以更好地提高处 理器性能?请叙述你的设想并解释原因。 答案:时钟周期1/(8MHZ)125ns 总线周期4125ns500ns 每 500ns 传输 2 比特;因此传输速度4MB/s 加倍频率可能意味着采用了新的芯片制造技术(假设每

7、个指令都有相同的时钟周期数) ;加倍外部数 据总线,在芯片数据总线驱动/锁存、总线控制逻辑的修改等方面手段广泛(或许更新) 。在第一种方案中, 内存芯片的速度要提高一倍(大约) ,而不能降低微处理器的速度;第二种方案中,内存的字长必须加倍, 以便能发送/接受 32 位数量。 1.6、考虑一个计算机系统,它包含一个 I/O 模块,用以控制一台简单的键盘/打印机电传打字设备。CPU 中包含下列寄存器,这些寄存器直接连接到系统总线上: INPR:输入寄存器,8 位 OUTR:输出寄存器,8 位 FGI:输入标记,1 位 FGO:输出标记,1 位 IEN:中断允许,1 位 I/O 模块控制从打字机中输

8、入击键,并输出到打印机中去。打字机可以把一个字母数字符号编码成一个 8 位字,也可以把一个 8 位字解码成一个字母数字符号。当 8 位字从打字机进入输入寄存器时,输入标记 被置位;当打印一个字时,输出标记被置位。 a.描述 CPU 如何使用这 4 个寄存器实现与打字机间的输入/输出。 b.描述通过使用 IEN,如何提高执行效率? 答案:a.来源于打字机的输入储存在 INPR 中。只有当 FGI0 时,INPR 才会接收来自打字机的数据。当 数据接收后,被储存在 INPR 里面,同时 FGI 置为 1。CPU 定期检查 FGI。如果 FGI1,CPU 将 把 INPR 里面的内容传送至 AC,并

9、把 FGI 置为 0。当 CPU 需要传送数据到打字机时,它会检查 FGO。如果 FGO0,CPU 处于等待。如果 FGO1,CPU 将把 AC 的内容传送至 OUTER 并把 FGO 置为 0。当数字符号打印后,打字机将把 FGI 置为 1。b.(A)描述的过程非常浪费。速度远高于打字机的 CPU 必须反复不断的检查 FGI 和 FGO。如果 中断被使用,当打字机准备接收或者发送数据时,可以向 CPU 发出一个中断请求。IEN 计数器可 以由 CPU 设置(在程序员的控制下) 。 1.7、实际上在所有包括 DMA 模块的系统中,DMA 访问主存储器的优先级总是高于处理器访问主存储器 的优先级

10、。这是为什么? 答案:如果一个处理器在尝试着读或者写存储器时被挂起, 通常除了一点轻微的时间损耗之外没有任何 危害。但是,DMA可能从或者向设备(例如磁盘或磁带)以数据流的方式接收或者传输数据并且这是不 能被打断的。否则,如果DMA设备被挂起(拒绝继续访问主存),数据可能会丢失。 1.9、一台计算机包括一个 CPU 和一台 I/O 设备 D,通过一条共享总线连接到主存储器 M,数据总线的宽 度为 1 个字。CPU 每秒最多可执行 106条指令,平均每条指令需要 5 个机器周期,其中 3 个周期需要使 用存储器总线。存储器读/写操作使用 1 个机器周期。假设 CPU 正在连续不断地执行后台程序,

11、并且需要 保证 95%的指令执行速度,但没有任何 I/O 指令。假设 1 个处理器周期等于 1 个总线周期,现在要在 M 和 D 之间传送大块数据。 a.若使用程序控制 I/O,I/O 每传送 1 个字需要 CPU 执行两条指令。请估计通过 D 的 I/O 数据传送的最大 可能速度。3b.如果使用 DMA 传送,请估计传送速度。 答案:a.处理器只能分配 5的时间给 I/O.所以最大的 I/O 指令传送速度是 10e60.0550000 条指令/秒。 因此 I/O 的传送速率是 25000 字/秒。b.使用 DMA 控制时,可用的机器周期下的数量是 10e6(0.0550.952)2.1510

12、e6如果我们假设 DMA 模块可以使用所有这些周期,并且忽略任何设置和状态检查时间,那么这个值 就是最大的 I/O 传输速率。 1.10、考虑以下代码:for ( i = 0;i j := i + 1 mod n; while (j i) and (not waitingj) do j := j + 1 mod n; if j = i then lock := false else waiting := false;Until 这个算法用最普通的数据结构:var waiting: array 0.n 1 of booleanLock:boolean 这些数据结构被初始化成假的,当一个进程离开它

13、的临界区,它就搜索 waiting 的循环队列 5.8 考虑下面关于信号量的定义:Void semWait(s)If (s.count0)s.count-;ElsePlace this process in s.queue;13Block;Void semSignal(s) If (there is at liast one process blocked on semaphore) Remove a process P from s.queue;Place process P on ready list;Else s.count+; 比较这个定义和图 5.3 中的定义,注意有这样的一个区别:

14、在前面的定义中,信号量永远不会取负 值。当在程序中分别使用这两种定义时,其效果有什么不同?也就是说,是否可以在不改变程序意义的 前提下,用一个定义代替另一个? 答:这两个定义是等价的,在图 5.3 的定义中,当信号量的值为负值时,它的值代表了有多少个进 程在等待;在此题中的定义中,虽然你没有关于这方面的信息,但是这两个版本的函数是一样的。5.9 可以用二元信号量实现一般信号量。我们使用 semWaitB 操作和 semSignalB 操作以及两个二元信 号量 delay 和 mutex。考虑下面的代码Void semWait(semaphor s)semWaitB(mutex);s-;if (

15、s; if nm = 0 then semSignal(a) else semSignal(m) endif; 5.11 下面的问题曾被用于一个测试中: 侏罗纪公园有一个恐龙博物馆和一个公园,有 m 个旅客和 n 辆车,每辆车只能容纳一名旅客。旅客在博 物馆逛了一会儿,然后派对乘坐旅客车。当一辆车可用时,它载入一名旅客,然后绕公园行驶任意长的 时间。如果 n 辆车都已被旅客乘坐游玩,则想坐车的旅客需要等待;如果一辆车已经就绪,但没有旅客 等待,那么这辆车等待。使用信号量同步 m 个旅客进程和 n 个进程。下面的代码框架是在教室的地板上 发现的。忽略语法错误和丢掉的变量声明,请判定它是否正确。注

16、意,p 和 v 分别对应于 semwait 和 semsignal。Resource Jurassic_Park() Sem car_avail:=0,car_taken:=0,car_fillde:=0.passenger_released:=0 Process passenger(i:=1 to num_passengers)Do true-nap(int(random(1000*wander_time)P(car avail);V(car_taken);P(car_filled)P(passenger_released)Od End passenger15Process car(j:=1 to num_cars)Do true-V(car_avail);P(car_taken);V(car_filled)Nap(int(random(1000*ride_time)V(passenger_released)OdEnd carEnd Jurassic_P

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号