操作系统笔记分享(第七章 IO系统)

介绍

我只整理了一些比较关键的、考试可能会考的点,有些具体琐碎的内容我没整理到笔记中。后面会持续更新,希望对大家有所帮助!

7、IO系统

7.1 IO系统的功能、模型和接口

I/O系统管理的主要对象

I/O设备和对应的设备控制器

I/O系统的主要任务

完成用户提出的I/O请求
提高I/O速率
改善I/O设备的利用率

I/O系统的基本功能

能够隐藏物理设备的细节
能够保证OS与设备无关
能够提高处理机和I/O设备的利用率
能够对I/O设备进行控制
能够确保对设备的正确共享
能够处理错误

模型层次结构

在这里插入图片描述

接口

块设备接口

1)该设备的基本特征是传输速率较高,通常为每秒几十MB到几百MB

2)可寻址,即能指定数据的输入源地址以及输出的目标地址

流设备接口

1)字符设备的基本特征是传输速率较低,通常为每秒几B至数千B

2)另一特征是不可寻址,即不能指定数据的输入源地址以及输出的目标地址

网络接口

使计算机能通过网络进行互通信

7.2 IO设备和设备控制器

IO设备4种分类方式

1、按使用特性分类

存储设备、IO设备

2、按传输速率分配

低速设备:键盘、鼠标、语音输入输出 …

中速设备:行式打印机、激光打印机 …

高速设备:磁带机、磁盘机、光盘机 …

3、按信息交换单位分类

块设备、字符设备

4、按设备共享特性分类

独占设备、共享设备

接口

设备 ⟶ 接口 设备控制器 ⟶ 其他 C P U 设备 \stackrel{接口}{\longrightarrow} 设备控制器\stackrel{其他}{\longrightarrow}CPU 设备接口设备控制器其他CPU

在接口中有三类信号对应三条信号线

数据信号线、状态信号线、控制信号线

设备控制器

概念

设备控制器是CPU与I/O设备之间的接口,接收从CPU发来的命令,并去控制I/O设备工作

主要功能

控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换

基本功能

接收识别命令,数据交换,表示和报告设备的状态,地址识别,数据缓冲区,差错控制

组成

设备控制器与CPU处理机的接口

设备控制器与IO设备的接口

IO逻辑

内存映像

没有内存映像的话,访问内存和设备需要两种不同的指令

统一编址k,根据编址k的取值区分是内存地址(1-n)还是寄存器地址(>n)

IO通道

使一些原来由CPU处理的I/O任务转由通道来承担,减小CPU压力

说人话:IO通道就是特殊的处理机(CPU是中央处理机),用来帮CPU分担相关IO操作的,而且IO通道还是一个IO控制器

优缺点:CPU和IO设备可以并行,但实现复杂,需要硬件支持

通道类型

字节多路、数组选择、数组多路、非分配型子通道

单通路IO系统

一设备对应一通路到CPU,树形结构无重用,效率低

多通路IO系统

一设备对应多通路到CPU,有重用,效率高

7.3 中断和中断处理程序

中断

中断和陷入

中断是CPU对IO设备发来的中断信号的一种响应

陷入是CPU内部事件引起的中断

中断向量表

记录中断号,中断程序的入口地址

中断分类

嵌套中断

屏蔽中断(禁止中断,当前中断执行完再说)

7.4 设备驱动程序

主要任务是接收上层软件发来的抽象I/O要求,把它们转换为具体要求后发送给设备控制器, 进而使其启动设备去执行任务
反之,它也会将设备控制器发来的信号传送给上层软件

比如键盘驱动程序,将按键IO请求转为具体要求发给设备控制器,然后可能经过IO通道发送中断给CPU,也可能直接通过主机总线

设备驱动程序的功能

① 接收由与设备无关的软件发来的命令和参数;

② 检查用户I/O请求的合法性;

③ 发出I/O命令。

④ 此外,也及时响应由设备控制器发来的中断请求。

设备驱动程序的特点

① 实现在与设备无关的软件和设备控制器之间通信和转换的程序;

② 与设备控制器以及I/O设备的硬件特性紧密相关;

③ 与I/O设备所采用的I/O控制方式紧密相关

设备处理方式

不同操作系统采取的设备处理方式不同,通常可分成3类:

① 为每类设备设置一个进程,专门用于执行这类设备的I/O操作;

② 在整个系统中设置一个I/O进程,专门用于执行系统中各类设备的I/O操作;

③ 不设置专门的设备处理进程,而只为各类设备设置相应的设备驱动程序(使用较多)。

IO设备的控制方式

1、轮询

CPU来问,一直忙就一直轮流问

2、中断

CPU给你指令,让你去读写,你跟CPU说OK(中断方式),让他将你这个IO进程堵塞,去进行其他计算等操作

等你读写完了,你要回来告诉CPU,给他个中断让他回来继续处理你原来IO进程的代码

可以并行,但每个读写只有一个字节,还是太慢

3、直接存储器访问(DMA)方式

设备和内存直接双向连接,不需要中间CPU来干预(除非多个数据块刚开始发送或结束时才干预)

4、IO通道控制方式

是DMA的扩展,设备和内存直接双向连接的基础上,干预由IO通道来完成而不是CPU!

当CPU要完成一组相关操作时,只需向I/O通道发送一条I/O指令,通道接到指令后,通 过执行通道指令完成CPU制定的I/O任务

7.5 与设备无关的IO软件

当应用进程运行时,如果所请求的物理设备 (独占设备类型)已分配给其他进程,而此时尽管还有几台其他的相同设备空闲可用, 但系统只能根据设备的物理名来进行分配

比如有几台打印机,明明有几台空闲的,但系统非要等那个忙碌的,名字对的打印机…

那就别命名,抽象!直接逻辑设备名,可用于IO重定向

逻辑和物理设备映射就搞张表(逻辑设备表LUT),基操了属于是…

分配设备需要用到如:FCFS 等算法

7.6 用户层的IO软件

大部分I/O软件都放在OS内部,仍有一小部分在用户层

用户程序需要利用库函数这类API实现对内核态的访问,进行系统调用

外围机

脱机情况下,CPU从磁带上加载数据进行计算

假脱机

外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时外围操作称为假脱机技术(SPOOLing)

1、使用输入进程、输出进程来模拟外围机

  • 输入进程:低速IO设备数据存到高速磁盘上

  • 输出进程:高速磁盘上的数据传到低速输出设备

2、输入井、输出井用来模拟脱机时的磁盘

3、输入缓冲区、输出缓冲区用来调和CPU和磁盘速度不匹配的矛盾

假脱机打印机

打印机是独占设备,但利用假脱机技术可以让打印任务都加到输出井队列里,然后有打印设备就进行打印操作,实现设备的虚拟化

假脱机SPOOLing系统的组成和功能

  • 组成包括:I/O井、I/O缓冲区、I/O进程、井管理进程
  • 功能:提高I/O速率、 对独占设备实现共享,实现了虚拟设备功能

7.7 缓冲区管理

引入缓冲区的主要原因

缓和CPU和I/O设备间速度不匹配的矛盾,提高CPU和I/O设备的并行性

7.8 磁盘性能概述和磁盘调度

磁盘访问时间的计算

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

  • 1、寻道时间 Ts 一般题目会给

  • 2、旋转延迟时间 就是找到道之后,在这一圈等待正确位置所需的时间,平均下来是半圈,所以时间 = 旋转半圈所需时间

  • 3、传输时间 Tt
    = 传输总数据 / 传输速率 = b(字节数) / v
    = 传输总数据 / (转速*一条磁道上的字节数)
    = b / rN

比如一秒2转,一转就读取一条磁道上的字节数,那么一秒就读取 2*一条磁道上的字节数,即rN

存储容量 = (磁盘总面个数-2)* 道数 * 一个道的容量:周长*位密度

要使磁盘访问时间最短,需要让寻道时间(圆内外方向)尽可能最短,需要通过磁盘调度算法来进行调度

为什么是寻道时间?因为你在一条道上磁头不动,一直靠着盘的自转读取数据啊,这部分读取时间改变不了的(转速摆在那里)

那要切换道来读取其他进程数据,那不就得寻道?得在圆心-圆边缘方向移动找到最适合的道啊!

磁盘调度算法的应用

先来先服务FCFS、最短寻道优先SSTF、扫描/电梯调度算法SCAN、循环扫描算法CSCAN

  • 先来先服务:字面意思

  • 最短寻道:看看下次哪个离现在距离最短,就往那边移动

  • 扫描/电梯调度算法:防止某个进程明明先来,但是一直没距离最优而导致饥饿

    这种算法需要先向一边移动,然后到起点后反转方向回来扫描

  • 循环扫描:在电梯的基础上不反转方向,反正都是一个圆,继续转就完了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值