操作系统——精髓与设计原理 第十一章复习题&习题(更新中)

复习

11.1列出并简单定义执行I/O的三种技术。

程序控制I/O:处理器代表一个进程给I/O模块发送一个I/O命令;该进程进入忙等待,直到操作完成才能继续执行。
中断驱动I/O:处理器代表进程向I/O模块发出一个I/O命令。有两种可能性:若来自进程的I/O指令是非阻塞的,则处理器继续执行发出I/O命令的进程的后续指令。若I/O指令是阻塞的,则处理器执行的下一条指令来自操作系统,它将当前的进程设置为阻塞态并调度其他进程。
直接存储器访问(DMA):一个DMA模块控制内存和I/O模块之间的数据交换。为了传送一块数据,处理器给DMA模块发请求,且只有在整个数据块传送结束后,它才被中断。

11.2 逻辑I/O和设备I/O有何区别?

逻辑I/O:逻辑I/O模块把设备当作一个逻辑资源来处理,它并不关心实际控制设备的细节。逻辑I/O模块代表用户进程管理的普通I/O功能,允许用户进程根据设备标识符及诸如打开、关闭、读写之类的简单指令与设备打交道。
设备I/O:请求的操作和数据(缓冲的数据、记录等)被转换成适当的I/O指令序列、通道命令和控制器指令。可以使用缓冲技术来提高利用率。

11.3 面向块的设备和面向刘的设备有何区别?各举一些例子

面向块的设备将信息保存在块中,块的大小通常是固定的,传送过程中一次传送一块。通常可以通过块号访问数据。磁盘和USB智能卡都是面向块的设备。(大多是辅存设备)
面向流的设备以字节流的方式输入/输出数据,它没有块结构。终端、打印机、通信端口、鼠标和其他指示设备以及其他大多数非辅存设备,都是属于面向流设备。

11.4为什么希望用双缓冲而非单缓冲来提高I/O的性能?

对于面向块的传送,我们可以粗略地估计执行时间为max[C,T]。因此,若C<= T,则有可能使面向块的设备全速运行;另一方面,若C>T,则双缓冲能确保该进程不需要等待I/O。

11.5在磁盘读或写时有哪些延迟因素?

寻道时间、旋转延迟、存取时间、传输时间

11.6简单定义图11.7中描述的磁盘调整策略

先进先出(FIFO):按顺序处理队列中的项目。
最短服务时间优先(SSTF):选择使磁头臂从当前位置开始移动最少的磁盘I/O请求。
SCAN(电梯算法):要求磁头臂仅沿一个方向移动,并在途中满足所有未完成的请求,直到它到达这个方向上的最后一个磁道。
C-SCAN(循环扫描):把扫描限定在一个方向上。因此,当访问到沿某个方向的最后一个磁道时,磁头臂返回到磁盘相反方向末端的磁道。

11.7简单定义7个RAID级别

RAID 0:条带化、非冗余
RAID 1:镜像、被镜像
RAID 2:并行访问、通过汉明码实现冗余
RAID 3:并行访问、交错位奇偶校验
RAID 4:独立访问、交错块奇偶校验
RAID 5:独立访问、交错块分布奇偶校验
RAID 6:独立访问、交错块双重分布奇偶校验

11.8典型的磁盘扇区大小是多少?

512字节

习题

11.1考虑一个程序访问一个I/O设备,并比较无缓冲的I/O和使用缓冲区的I/O,说明使用缓冲区最多可以减少2倍的运行时间。

如果计算的时间正好等于它的I/O时间(它是最佳环境),操作者和外围设备同时运行。如果单独运行,只要花费他们的一半时间,设C是整个程序的计算时间,T为所要求总的I/O时间,因而寄存器最好的运行时间是 max(C,T),不需要寄存器的运行时间是C+T, 显然((C+T)/2)≤max(C,T)≤(C+T).

11.2如果一个程序要访问n个设备,请概括总结出习题11.1的结论。

最佳比是(n+1)/ n

11.3 a. 使用类似表11.2的方式,分析下列磁道请求序列:27,129,110,186,147,41,10,64,120。假设磁头最初定位在磁道100处,并且沿着磁道号减小的方向移动。

FIFOSSTFSCANC-SCAN
下一个被访问的道数;横跨的磁间的磁道下一个被访问的道数;横跨的磁间的磁道下一个被访问的道数;横跨的磁间的磁道下一个被访问的道数;横跨的磁间的磁道
27;73110;1064;3664;36
129;102120:1041;2341;23
110;19129;927;1427;14
186;76147:1810;1710;17
147;39186;39110;100186;176
41;10664;122120;10147;39
10;3141;23129;9129;18
64,5427;14147;18120;9
120;5610;17186;39110;10
平均寻到长度:61.8平均寻到长度:29.1平均寻到长度:29.6平均寻到长度:38

b.假如磁头沿着磁道号增大的方向移动,请给出同样的分析。

SCANC-SCAN
下一个被访问的道数;横跨的磁间的磁道下一个被访问的道数;横跨的磁间的磁道
110;10110;10
120;10120;10
129;9129;9
147;18147;18
186;39186;39
64;12210;176
41;2327;17
27;1441;14
10;1764;23
平均寻道长度:29.1平均寻道长度:35.1
  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是第十版Java教材第九章复习题的答案: 1. 什么是接口?如何声明一个接口? 接口是一种抽象数据类型,它定义了一组方法,但没有提供方法的实现。它只是指定了方法名、参数列表和返回类型。可以通过实现接口来提供方法的具体实现。 接口声明使用interface关键字,如下所示: ``` public interface MyInterface { public void method1(); public int method2(String str); } ``` 2. 什么是抽象类?如何声明一个抽象类? 抽象类是一个不能被实例化的类,它只能被继承。抽象类可以包含抽象方法和非抽象方法。抽象方法没有具体的实现,而是由子类提供实现。 抽象类声明使用abstract关键字,如下所示: ``` public abstract class MyAbstractClass { public abstract void method1(); public void method2() { // implementation } } ``` 3. 接口和抽象类有什么区别? 接口只能包含抽象方法和常量,而抽象类可以包含非抽象方法和属性。另外,类只能继承一个类,但可以实现多个接口。 4. 什么是函数式接口?如何声明一个函数式接口? 函数式接口是只包含一个抽象方法的接口。它们通常用于Lambda表达式和方法引用。 函数式接口声明使用@FunctionalInterface注解,如下所示: ``` @FunctionalInterface public interface MyFunctionalInterface { public void method(); } ``` 5. Lambda表达式是什么?如何使用Lambda表达式? Lambda表达式是一种匿名函数,它可以作为参数传递给方法或赋值给变量。它的语法如下: ``` (parameter1, parameter2, ...) -> expression ``` 例如: ``` Arrays.sort(names, (String s1, String s2) -> s1.compareTo(s2)); ``` 这个Lambda表达式定义了一个比较字符串的方法,并传递给Arrays.sort方法。 6. 方法引用是什么?如何使用方法引用? 方法引用是一种简化Lambda表达式的方式,它允许你引用已经存在的方法并将其作为Lambda表达式传递给方法或赋值给变量。它的语法如下: ``` ClassName::methodName ``` 例如: ``` Arrays.sort(names, String::compareTo); ``` 这个方法引用引用了String类的compareTo方法,并传递给Arrays.sort方法。 7. Stream是什么?如何使用Stream? Stream是一种在集合上进行复杂操作的方式。它提供了过滤、映射、排序等操作。Stream的操作可以是间操作或终端操作。间操作返回一个Stream对象,终端操作返回一个非Stream对象(如List、Map等)。 例如: ``` List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); List<String> filteredNames = names.stream() .filter(name -> name.startsWith("A")) .collect(Collectors.toList()); ``` 这个代码使用Stream过滤以"A"开头的字符串,并将结果存储在List

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bufanjun001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值