《现代操作系统第四版》第五章答案Word格式文档下载.docx
《《现代操作系统第四版》第五章答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《现代操作系统第四版》第五章答案Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
从磁
盘控制器到内存传送1000个字需要多少时间?
假设向磁盘控制器发送命令需要
获取总线以传输一个字,并且应答传输也需要获取总线以传输一个字。
(a)1000×
[(t1+t2)+(t1+t2)+(t1+t2)];
第一个(t1+t2)是获取总线并将命令发
送到磁盘控制器,第二个(t1+t2)是用于传输字,第三个(t1+t2)是为了确认。
总之,
共3000×
(t1+t2)纳秒。
(b)(t1+t2)+t1+1000是获取总线并将命令发送到磁(t1+t2)×
t2+(t1+t2),第一个
盘控制器,第二个t1是为磁盘控制器获取总线,第三个1000×
t2是突发传送,
第第四个(t1+t2)是获取总线并做确认。
总3t1+1002t2×
。
5.假设一台计算机能够在10ns内读或者写一个内存字,并且假设当中断发生时,
所有32位寄存器连同程序计数器和PSW被压人堆栈。
该计算机每秒能够处理
的中断的最大数目是多少?
一次中断需要入栈34个字。
而从中断返回需要把34个字从栈中取出。
总
耗时为680ns。
因此,每秒最多处理147万次中断,假设每次中断什么也不做。
6.CPU体系结构设计师知道操作系统编写者痛恨不精确的中断。
取悦于OS人
群的一种方法是当得到一个中断信号通知时,让CPU停止发射指令,但是允许
当前正在执行的指令完成,然后强制中断。
这一方案是否有缺点?
请解释你的答
案。
当前的处理器一般采用多级流水线操作,无法准确地确定CPU当前正在执
行的指令是哪一条,所以停止让CPU发送指令后,需要等待把流水线中的指令
全部执行完成才能响应中断,对于指令不按序执行的处理器而言,会造成中断响
应的不精确。
7.在图5-9b中,中断直到下一个字符输出到打印机之后才得到应答。
中断在中
断服务程序开始时立刻得到应答是否同样可行?
如果是,请给出像本书中那样在
中断服务程序结束时应答中断的一个理由。
如果不是,为什么?
在开始中断服务例程时就确认是可以的。
而在最后才做的原因是因为中断服
务例程的代码都非常短。
通过先输出另一个字符和然后确认该中断,如果立即发
生另一个中断,打印机将在此中断期间工作,将使得打印稍快。
该方法的缺点是
当其他中断禁用时,死机时间稍长。
8.一台计算机具有如图1-6a所示的三阶段流水线。
在每一个时钟周期,一条新
的指令从PC所指向的地址处的内存中取出并放人流水线,同时PC值增加。
每
条指令恰好占据一个内存字。
已经在流水线中的指令每个时钟周期前进一个阶段。
当中断发生时,当前PC压入堆栈,并且将PC设置为中断处理程序的地址。
然后,流水线右移一个阶段并且中断处理程序的第一条指令被取入流水线。
该机
器具有精确的中断吗?
(题目有问题,应该是图1-7a)具有精确的中断。
入栈的PC指向第一条未
读取的指令。
之前的所有指令都已执行,而指向的指令及其后续指令均尚未执行,
这就是精确中断的条件。
精确中断在单管线的机器上不难实现,但是当指令不按
序执行时会有麻烦,此时就不再具有精确的中断。
9.一个典型的文本打印页面包含50行,每行80个字符。
设想某一台打印机每分
钟可以打印6个页面,并且将字符写到打印机输出寄存器的时间很短以至于可以
忽略。
如果打印每一个字符要请求一次中断,而进行中断服务要花费总计5μs
的时间,那么使用中断驱动的I/O来运行该打印机有没有意义?
该打印机打印每分钟打印50×
80×
=624000个字符,也就是400字符/s,
每个字符使用50ns的CPU时间用于中断,因此,每秒总共的中断时间是20ms。
使用中断驱动I/O余下的980ms可供其它使用。
换句话说,中断耗时只占CPU
时间的2%,这几乎不会影响运行的程序。
10.请解释OS如何帮助安装新的驱动程序而无须重新编译OS。
UNIX通过以下的方法实现。
有一个由设备编号索引的表,每个表项是一个
C结构,其中包含指向打开、关闭、读取和写入功能的指针,以及来自设备的其他一些东西。
要安装新设备,必须在此表中新建一个条目,并将指针填充到新加载的设备驱动程序中。
11.以下各项工作是在四个I/O软件层的哪一层完成的?
a)为一个磁盘读操作计算磁道、扇区、磁头。
b)向设备寄存器写命令。
c)检査用户是否允许使用设备。
d)将二进制整数转换成ASCII码以便打印。
(a)设备驱动程序。
(b)设备驱动程序。
(c)设备无关的软件。
(d)用户级软件。
12.一个局域网以如下方式使用:
用户发出一个系统调用,请求将数据包写到网上,然后操作系统将数据复制到一个内核缓冲区中,再将数据复制到网络控制器接口板上。
当所有数据都安全地存放在控制器中时,再将它们通过网络以10Mb/s
的速率发送。
在每一位被发送后,接收的网络控制器以每微秒一位的速率保存它
们。
当最后一位到达时,目标CPU被中断,内核将新到达的数据包复制到内核
缓冲区中进行检査。
一旦判明该数据包是发送给哪个用户的,内核就将数据复制
到该用户空间。
如果我们假设每一个中断及其相关的处理过程花费1ms时间,
数据包为1024字节(忽略包头),并且复制一个字节花费1ns时间,那么将数
据从一个进程转储到另一个进程的最大速率是多少?
假设发送进程被阻塞直到接
收端结束工作并且返回一个应答。
为简单起见,假设获得返回应答的时间非常短,
可以忽略不计。
在这个过程中,包必须复制四次,需要4.1毫秒。
有两个中断,占2毫秒。
最后,传输时间为0.83毫秒,1024字节的数据包共需要6.93毫秒。
最大数据
传输速率为147763字节/秒,或约10兆位/秒的网络标称容量的。
(如果我12%
们考虑协议开销,结果会变得更糟)
13.为什么打印机的输出文件在打印前通常都假脱机输出在磁盘上?
如果每次输出都立即分配打印机,某进程可以通过打印机1个字符来冻结打
印机,然后休眠一个星期。
14.3级RAID只使用一个奇偶驱动器就能够纠正一位错误。
那么2级RAID的意
义是什么?
毕竟2级RAID也只能纠正一位错误而且需要更多的驱动器。
RADlevel2不仅可以从故障驱动器来恢复错误位,还可以从未被检测的的
瞬时差错中恢复。
如果某驱动器发送一个坏数据位,RAIDlevel2可以纠正,而
RAIDlevel3不能。
15.如果两个或更多的驱动器在很短的时间内崩溃,那么RAID就可能失效。
假设在给定的一小时内一个驱动器崩溃的概率是p,那么在给定的一小时内具有k
个驱动器的RAID失效的概率是多少?
0次故障的概率P0为(1-p)k。
1次故障的概率P1为kp(1-p)k-1。
而整个RAID
发生故障的概率为1-P0-P1,也就是1-(1-p)k-kp(1-p)k-1。
16.从读性能、写性能、空间开销以及可靠性方面对0级RAID到5级RAID进
行比较。
读取性能:
RAID级别0,2,3,4和5允许一个读请求并行读取服务。
然
而,RAID级别1进一步允许两个读取请求同时进行。
写入性能:
所有RAID级
别提供类似的写入性能。
空间开销:
第0级没有空间开销,而第1级100%的开
销。
第2级带32位数据字和六位奇偶校验驱动器,空间开销约。
对于18.75%
32位数据字,3级的空间开销约为3.13%。
最后,假设4和5级别具有33个驱
动器,则他们的空间开销是3.13%。
可靠性:
0级没有可靠性支持。
所有其他
3,4和5级别,在一RAID级别可以在一个磁盘崩溃时保证数据。
此外,对于
个字内的一个单一的随机位错误可以被检测到,而第2级,在一个字内的一个单
一的随机位错误可以被检测和纠正。
17.为什么光存储设备天生比磁存储设备具有更高的数据密度?
注意:
本题需要某些髙中物理以及磁场是如何产生的知识。
在两个磁极之间会产生磁场。
不仅难于使磁场源变小,而且磁场传播迅速,
这将导致此行媒体的表面接近磁源或者传感器的机械问题。
而半导体激光可以在
非常小的地方产生激光,而且激光可以从较远的地方感知这些极小的点。
18.光盘和磁盘的优点和缺点各是什么?
光盘的主要优点是它们比磁盘具有更高的记录密度。
磁盘的主要优点是比光
盘快一个数量级。
19.如果一个磁盘控制器没有内部缓冲,一旦从磁盘上接收到字节就将它们写到内存中,那么交错编号还有用吗?
请讨论。
有可能。
如果大多数文件被存储在逻辑上连续的扇区内,那么就可能使得程
序有时间以交叉扇区的形式处理刚刚接收的数据,这样当下一请求发出时,磁盘
正好在正确的地方。
20.如果一个磁盘是双交错编号的,那么该磁盘是否还需要柱面斜进以避免在进行磁道到磁道的寻道时错过数据?
请讨论你的答案。
也许要,也许不要。
如果跨道时磁头移动少于2个扇区,就不需要柱面倾斜。
如果大于2个扇区,则需要柱面倾斜。
21.考虑一个包含16个磁头和400个柱面的磁盘。
该磁盘分成4个100柱面的区域,不同的区域分别包含160个、200个、240个和280个扇区。
假设每个
扇区包含512字节,相邻柱面间的平均寻道时间为1ms,并且磁盘转速为
7200rpm。
计算a)磁盘容量、b)最优磁道斜进以及c)最大数据传输率。
(a)一个区的容量是磁道×
柱面×
扇区/柱面×
字节/扇区。
1区:
16×
100×
160512×
=131072000字节容量
2区:
200×
512=163840000字节容量
3区:
240×
512=196608000字节容量
4区:
280×
512=229376000字节容量
总和=131072000+163840000+196608000+229376000=720896000
(b)7200rpm的旋转速度意味着120圈/秒。
在1毫秒平均寻道里,0.12的圈覆盖。
在第1区硬盘磁头在1毫秒将经过0.12×
160扇区,因此,最优轨迹区域
1的偏斜是19.2扇区。
在2区,磁盘头在1毫秒将经过0.12×
200扇区,因此,
最优轨迹偏移24扇区。
在3区,磁头在1毫秒将经过0.12×
240扇区,因此,
区域3的最佳磁道偏斜是28.8扇区。
在4区,磁头在1毫秒经过0.12×
280扇
区,因此,最优轨迹偏移是33.6扇区。
(c)在最外层区域(4区)内的磁头正在读取/写入时获得最大数据传输速率。
在那个区域,在一秒钟内,280扇区被阅读120次。
因此,数据率为280×
120×
512
=17203200字节/秒。
22.一个磁盘制造商拥有两种5.25英寸的磁盘,每种磁盘都具有10000个柱面。
新磁盘的线性记录密度是老磁盘的两倍。
在较新的驱动器上哪些特性更好,哪些无变化?
驱动器容量和传输速率是原来的2倍。
寻道时间和平均旋转延时是相同的。
23.一个计算机制造商决定重新设计Pentium硬盘的分区表以提供四个以上的分区。
这一变化有什么后果?
一个相当明显的后果是没有哪个操作系统可以生效,因为这些操作系统都会
在原来的分区表位置査找分区。
改变分区表格式将使所有操作系统都失败。
改变
分区表的唯一方法是同时改变所有操作系统以使用新的格式。
24.磁盘请求以柱面10、22、20、2、40、6和38的次序进入磁盘驱动器。
寻道时每个柱面移动需要6ms,以下各算法所需的寻道时间是多少?
先来先服务。
a)
最近柱面优先。
b)
电梯算法(初始向上移动)c)
在各情形下,假设磁臂起始于柱面20
(a)FCFS:
10+12+2+18+38+34+32=146(先到先得)=876ms柱面
(b)SSF:
0+2+12+4+4+36+2=60(每次最小移臂)柱面=360ms
0+2+16+2+30+4+4=58(c)电梯算法:
(一个方向)柱面=348ms
25.调度磁盘请求的电梯算法的一个微小更改是总是沿相同的方向扫描。
在什么方面这一更改的算法优于电梯算法?
在最坏的情况下,电梯算法需要两个完整的磁盘扫描才能完成一个读/写请
求服务,而改进算法最多只需要一个完整的磁盘扫描。
26.在讨论使用非易失性RAM的稳定的存储器时,掩饰了如下要点。
如果稳定
写完成但是在操作系统能够将无效的块编号写入非易失性RAM之前发生了崩溃,那么会有什么结果?
这一竞争条件会毁灭稳定的存储器的抽象概念吗?
会出现竞争,但是不要紧。
稳定写入本身已经完成,事实上,非易失性RAM
没有被更新只是意味着恢复程序将知道哪些块被写入过。
它会读到两个相同的副
本,但并不会改变它们,这是正确的操作。
非易失性RAM在更新前系统崩溃仅
仅意味着恢复程序不得不进行两次磁盘读操作。
27.在关于稳定的存储器的讨论中,证明如果在写过程中发生了CPU崩溃,磁盘
可以恢复到一个一致的状态(写操作或者已完成,或者完全没有发生)。
如果在
恢复的过程中CPU再次崩溃,这一特性是否还保持?
是的,即使在恢复程序运行的过程中CPU再次崩溃,磁盘依然能恢复一致
状态。
考虑图5-31,(a)或(e)中没有恢复。
假设CPU在(b)恢复期间崩溃,
如果CPU在驱动器2的块被完全复制到驱动器1之前崩溃,情况仍然和以前一
2复制样。
随后的恢复过程将检测驱动器1中的ECC错误,然后再次从驱动器
块到驱动器1。
如果CPU在驱动器2的块被复制到驱动器1后崩溃,情况和(e)
是一样的情况。
假设CPU在(c)恢复期间崩溃。
如果CPU崩溃之前,从驱动
器1块已完全复制到驱动器2,情况和(d)是一样的。
随后的恢复过程将检测驱动器2中的ECC错误,并将该块从驱动器1复制到驱动器2。
如果CPU从
驱动器1的块被复制到驱动器2后崩溃,情况和(e)是一样的。
最后,假设
CPU在(d)恢复期间崩溃。
如果CPU在驱动器1之前的块被完全复制到驱动
器2后崩溃,情况仍然和以前一样。
随后的恢复过程将检测驱动器2中的ECC
错误,然后再次从驱动器1复制块到驱动器2。
如果CPU从驱动器1的块被复
制到驱动器2后崩溃,情况和(e)是一样的。
28.某计算机上的时钟中断处理程序每一时钟滴答需要2ms(包括进程切换的开
销),时钟以60Hz的频率运行,那么CPU用于时钟处理的时间比例是多少?
时钟频率60HZ,故时钟周期T=1000ms/60=50/3ms;
CPU用于时间处
理的比例为:
2/(50/3)×
100%。
=12%
29.—台计算机以方波模式使用一个可编程时钟。
如果使用500MHz的晶体,为了达到如下时钟分辨率,存储寄存器的值应该是多少?
a)1ms(每毫秒一个时钟滴答)。
b)100us。
(a)使用一个500MHz的晶体,计数器可以每2纳秒的递减。
所以,每毫
秒一次,寄存器应该是1000000/2=500000。
(b)每100秒获得一个时钟刻度,持有寄存器值应为50000。
30.—个系统通过将所有未决的时钟请求链接在一起而模拟多个时钟,如图5-34
所示。
假设当前时刻是5000,并且存在针对时刻5008、5012、5015、5029和
5000、5005和5013时时钟头、当前5037的未决的时钟请求。
请指出在时刻
时刻以及下一信号的值。
请指出在时刻时时钟头、当前时刻以及下一信号5023
的值。
:
5000时间
。
→→→;
头=884→3;
下一个信号当前时间=500014→8
5005时间
→→4→→;
头=33=5005当前时间;
下一个信号314→8。
5013时间
→8。
2;
头=2;
下一个信号=5013当前时间14→
时间5023
当前时间=5023;
下一个信号=6;
头→6→4→5
31.许多UNIX版本使用一个32位无符号整数作为从时间原点计算的秒数来跟踪时间。
这些系统什么时候会溢出(年与月)?
你盼望这样的事情实际发生吗?
一年的平均秒数为365.25×
24×
3600=31,557,600。
计数器大约在2^32秒
=136.1年,也就是大约在2106年2月。
如果到之后回绕。
2^32/31,557,600
那时所有计算机至少是64位的,因此该情形将不会发生。
32.—个位图模式的终端包含1280×
960个像素。
为了滚动一个窗口,CPU(或者控制器)必须向上移动所有的文本行,这是通过将文本行的所有位从视频RAM
的一部分复制到另一部分实现的。
如果一个特殊的窗口高60行宽80个字符(总
共4800个字符),每个字符框宽8个像素高16像素,那么以每个字节50ns的
复制速率滚动整个窗口需要多长时间?
如果所有的行都是80个字符长,那么终
5μs,每秒能够显示多少端的等价波特率是多少?
将一个字符显示在屏幕上需要
行?
滚动窗口需要复制59行×
80字符=4720字符。
复制1个字符(16个字节)
需800ns,因此整个窗口需要3.776ms。
向屏幕写80个字符需400ns,因此滚动和显示新的行需4.176ms。
大约239.5行/sec。
33.接收到一个DEL(SIGINT)字符之后,显示驱动程序将丟弃当