北航操作系统课程-第九次作业-设备管理-IO与磁盘

北航操作系统课程-第九次作业-设备管理-IO与磁盘


北京航空航天大学计算机学院-2020春操作系统课程
题目作者为北航计算机学院操作系统课程组,答案为博主原创。水平有限,无法保证作答正确性,如有错误敬请批评指正。部分作答源自百度谷歌等其他资料,如有侵权联系删除


1 I/O控制有哪几种?简述他们区别。

  • 程序控制I/O(PIO,Programmed I/O) ,也称轮询或查询方式I/O,它由CPU代表进程向I/O模块发出指令, 然后进入忙等状态, 直到操作完成之后进程才能够继续执行。
  • 中断驱动方式(Interrupt-driven I/O) ,当I/O操作结束后由设备控制器主动地来通知设备驱动程序说这次结束, 而不是设备驱动程序不断地去轮询看看设备的状态。
  • 直接存储访问方式(DMA, Direct Memory Access) ,直接存储器访问方式, 是由一个专门的控制器来完成数据从内存到设备或者是从设备到内存的传输工作。
  • 通道技术(Channel) ,与DMA的原理几乎是一样的,通道是一个特殊功能的处理器,它有自己的指令和程序专门负责数据输入输出的传输控制。CPU将“传输控制”的功能下放给通道后只负责“数据处理”功能。这样,通道与CPU分时使用内存,实现了CPU内部运算与I/O设备的并行工作。

程序控制IO方式需要CPU在IO操作进行时保持忙等状态,中断驱动与它的区别在于在IO操作过程中释放了CPU,IO完成后触发中断来通知CPU进行处理。DMA相对于中断驱动的进步在于,一方面其可以处理一批数据再通知CPU而中断驱动要在每个数据IO完成后触发中断,另一方面中断驱动触发中断需要上下文切换等操作,而DMA由控制器完成,只有开始和结束才通知CPU。通道技术在DMA的基础之上进一步减少CPU的干预,使用独立于CPU的指令体系,可以进行较复杂的IO控制。


2 何为设备独立性?如何实现设备独立性?

设备独立性是操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户来都可以像使用文件一样,操纵、使用这些设备,而不必知道自它们的具体存在形式。为了提高操作系统的可适应性和可扩展性,在现代操作系统中都毫无例外地实现了设备独立性,也称为设备无关性。即应用程序独立于具体使用的物理设百备。

为了实现设备独立性,现代操作系统引入了逻辑设备和物理设备这两个概念,在应用程序中使用逻辑设备名称来请求使用某类设备,而系统在实际执行时,还必须使用物理设备名称。系统需具有将逻辑设备名称转换为某物理设备名称的功能。


3 在I/O系统中引入缓冲的主要原因是什么?某文件占10个磁盘块,现要把该文件的磁盘块逐个读入主存缓冲区,并送用户区进行分析。一个缓冲区与磁盘块大小相等。把一个磁盘块读入缓冲区的时间为100μs,缓冲区数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间为50μs。分别计算在单缓冲区和双缓冲区结构下,分析完该文件的时间是多少?

引入缓冲技术的原因:提高外设利用率,匹配CPU与外设的不同处理速度,减少对CPU的中断次数,提高CPU和I/O设备之间的并行性。

单缓冲结构下数据IO的过程示意如下,其中T代表读入缓冲区的时间,M代表缓冲区传送到用户区的时间,C代表CPU对数据分析的时间:

在这里插入图片描述

读入时间T大于处理时间C,因此每一个磁盘块数据需要的时间为T+M=150μs,所有数据完成的时间为(T+M)*10+C=1550μs

双缓冲结构下数据IO的过程示意如下,其中T代表读入缓冲区的时间,M代表缓冲区传送到用户区的时间,C代表CPU对数据分析的时间:

在这里插入图片描述

在CPU传输和处理一个缓冲区数据的过程中,IO设备可以向另一个缓冲区读入数据。由于M和C的时间之和恰好等于T,每一个数据块需要的时间只有T=100μs,所有数据完成的时间为T*10+M+C=1100μs


4 假设磁盘请求以柱面10、35、20、70、2、3 和38的次序到达。寻道时磁头每移动一个柱面需要6ms,磁头起停时间忽略不计,计算以下各算法所需的寻道时间是多少:

a) 假设磁头初始位置为0, 先来先服务

b) 假设磁头初始位置为0, 最短寻道时间优先

c) 查看扫描(Look)算法,假设磁头初始位置为15,方向向上(向大柱面号)

  1. 先来先服务,磁头移动的次序为:

    0 → 10 → 35 → 20 → 70 → 2 → 3 → 38 0 \rightarrow 10 \rightarrow 35 \rightarrow 20 \rightarrow 70 \rightarrow 2 \rightarrow 3 \rightarrow 38 0103520702338

    寻道总时间:(10+25+15+50+68+1+35) * 6 = 1224ms

  2. 最短寻道时间优先,磁头移动的次序为:

    0 → 2 → 3 → 10 → 20 → 35 → 38 → 70 0 \rightarrow 2 \rightarrow 3 \rightarrow 10 \rightarrow 20 \rightarrow 35 \rightarrow 38 \rightarrow 70 0231020353870

    寻道总时间:(2+1+7+10+15+3+32) * 6 = 420ms

  3. 查看扫描Look算法,磁头移动的次序为:

    15 → 20 → 35 → 38 → 70 → 10 → 3 → 2 15 \rightarrow 20 \rightarrow 35 \rightarrow 38 \rightarrow 70 \rightarrow 10 \rightarrow 3 \rightarrow 2 15203538701032

    寻道总时间:(5+15+3+32+60+7+1) * 6 = 738ms

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
北航操作系统课程设计的Lab0旨在帮助学生熟悉实际的操作系统开发环境和相关工具的使用。在这个实验中,我们首先需要安装Linux操作系统并进行相关配置,以便进行后续的实验操作。 在Lab0中,我们需要安装和配置虚拟机软件,如VirtualBox或VMware,以创建一个类似操作系统的虚拟环境。然后,我们需要从北航操作系统课程设计网站下载并安装提供的操作系统实验环境,如ucore OS等。 安装完成后,我们需要熟悉Linux系统的基本命令,并了解与操作系统开发相关的编译工具链,如gcc和make。这些工具在操作系统的编译和运行过程中起着至关重要的作用。我们将学习如何使用gcc编译C语言程序,并使用make工具自动化编译过程。 在实验中,我们还将学习如何通过交叉编译和链接,将编译生成的操作系统镜像加载到虚拟机中并运行。我们将通过VirtualBox或VMware的网络设置,将虚拟机与宿主机连接起来,以便进行操作系统的调试和测试。 通过完成Lab0,我们将能够顺利地进行后续的操作系统实验,掌握操作系统开发的基本技能和工具。我们将能够编写C语言的系统代码,实现操作系统的基本功能和特性。此外,我们还将学习到操作系统的底层原理和相关的调试技巧。 总而言之,北航操作系统课程设计的Lab0是一个重要的起点,它帮助我们搭建实验环境、熟悉操作系统开发工具和命令,并为后续的实验打下坚实的基础。通过此实验,我们将能够更深入地理解操作系统的工作原理,并为我们未来的学习和研究提供良好的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值