计算机操作系统(六)输入输出系统

1 I/O系统的功能、模型与接口

1.1 IO系统的基本功能

① 隐藏物理设备的细节:对设备加以适当的抽象,以隐藏掉物理设备的实现细节,如留一些write和read函数等
② 与设备无关性:在隐藏物理设备的基础上实现的;
③ 提高处理机和IO设备的利用率:尽可能实现处理机和IO设备并行操作
④ 对IO设备进行控制
⑤ 确保设备的正确共享
共享设备
独占设备

⑥ 错误处理

1.2 IO系统的层次结构和模型

  • IO软件的层次结构
    ① 用户IO软件
    ② 设备独立性软件
    ③ 设备驱动程序
    ④ 中断处理程序
  • IO系统中各模块之间的层次结构图
    ① IO系统接口:IO系统与上层系统之间的接口
    ② 软件/硬件(RW/HW)接口:上面是中断处理程序和用于不同设备的设备驱动程序;在其下面的是各种设备的控制器
  • IO系统的分层
    ① 终端处理程序
    ② 设备驱动程序
    ③ 设备独立软件

1.3 IO系统接口

① 块设备接口
② 流设备接口
③ 网络通讯接口

2 IO设备与设备控制器

2.1 IO设备

2.1.1 IO设备的类型
  • 按使用特性分类
    ① 存储设备
    ② IO设备:输入设备、输出设备以及交互式设备
  • 按传输速率分类
    ① 低速设备:键盘、鼠标等
    ② 中速设备:行式打印机
    ③ 高速设备:磁带机、光盘机
2.1.2 设备与控制器之间的接口

① 数据信号线:用于设备控制器之间传输数据信号
② 控制信号线:规定了设备需要进行何种操作
③ 状态信号线:指示设备当前的状态

2.2 设备控制器

控制一个或者多个IO设备,以实现IO设备和计算机之间的数据交换
是CPU与IO设备之间的接口,接收从CPU传来的指令,去控制IO设备,使处理机从繁杂的事务中解放出来。

2.2.1 设备控制器的基本功能

① 接收和识别命令:接收识别处理机发来的多种命令
② 数据交换:实现CPU与控制器之间的数据交换、控制器与设备之间的数据交换
③ 标识和报告设备状态:记下设备的状态以供CPU了解
④ 地址识别
⑤ 数据缓冲区
⑥ 差错控制

2.2.2 设备控制器的组成

① 设备控制器与处理机的接口:实现CPU与设备控制器之间的通讯
② 设备控制器与处理机的接口:一个设备控制器可以连接多个设备
③ IO逻辑:实现对设备的控制

2.3 内存映像IO

驱动程序将抽象出IO命令转换出一系列具体命令、参数等数据装入设备控制器的相应寄存器,由控制器来执行这些命令,进而对IO进行控制
① 利用特定的IO指令:访问内存和寄存器设备需要两种不同的命令
② 内存映像IO:在编址上不再区分内存单元地址和设备控制器中的寄存器地址,都采用k。当k处于0~n-1范围内被认为是内存地址,大于n被认为是寄存器地址。
内存映像IO统一了对内存和对控制器的访问方法。

2.4 IO通道

在CPU与和设备控制器之间增设了新的IO通道,目的是为了建立独立的IO操作,不仅使数据传送独立于CPU,而且对于IO操作的组织、管理及结束处理尽量独立,以保证CPU有更多的时间去处理数据。
通道所执行的通道程序是放在主机内存中的,换言之是与通过与CPU共享内存;

通道类型
① 字节多路通道
② 数组选择通道
③ 数组多路通道

瓶颈:把一个设备连接到多个控制器上,而一个控制器又连接到多个通道上,保证个别通道或者控制器的故障不会使设备和存储器之间没有通路

3 中断机构与中断处理程序

3.1 中断简介

① 中断和陷入

  • 中断:指CPU对IO设备的发来的中断信号的一种影响:CPU暂停正在执行的程序,保留CPU环境后,自动转去执行该IO设备的中断处理程序,执行完毕再返回断点,继续执行原来的程序。
  • 陷入:程序在进行运算时,发生了上溢或者下溢,或者程序出错等。和中断一样,CPU也会暂停当前正在执行的程序,转去执行该陷入事件的处理程序

两者之间的区别在于:中断来自外部,陷入来自内部
② 中断向量表和中断优先级

  • 中断向量表:为每种设备配以相应的中断处理程序,并把该程序的入口地址放在中断向量表的一个表项中,中断达到后,先确定中断号,然后去中断向量表中查找程序的入口地址,以此转入中断处理程序
  • 中断优先级

③ 对多中断源的处理方式

  • 屏蔽中断:当系统在处理一个中断时,将屏蔽掉所有的中断
  • 嵌套中断:
    ① 当多个不同优先级的中断请求时,CPU优先响应最高优先级的中断请求
    ② 高优先级的中断请求可以抢占正在运行的低优先级中断的处理机:基于优先级的抢占式进程调度

3.2 中断处理程序

当一个进程请求IO操作时,该进程将被挂起,直到IO设备完成IO操作之后,设备控制器便向CPU发送一个中断请求,CPU响应后便转向中断处理程序执行相应的进程,处理完毕解除相应进程的阻塞状态。
处理过程分为以下几步:
① 测定是否有未响应的中断信号
② 保护被中断进程的CPU环境
③ 转入相应的设备处理程序
④ 中断处理
⑤ 恢复CPU的现场并退出中断:
(1)若本中断采取了屏蔽(禁止)中断的方式,若是,就返回被中断的进程
(2)采用的是嵌套中断,如果没有优先级更高的中断请求,在中断完成后仍会返回被中断的进程,否则处理更高级的中断请求

4 设备驱动程序

4.1 设备驱动程序概述

接受上层软件传来的抽象IO要求,如read等命令,再把它转为具体要求后,发送给设备控制器,启动设备去执行:是IO系统高层与设备控制器之间的通讯程序

  • 设备驱动程序的功能
    ① 接收由与设备无关的软件发来的命令与参数,并将命令转化为与设备相关的底层操作序列。
    ② 检查用户IO请求的合法性
    ③ 发出IO指令:如果设备空闲,便立即启动IO设备,完成指定的IO操作;如果设备忙碌,则请求者的请求块挂在设备队列上等待

  • 设备驱动程序的特点
    ① 实现在与设备无关的软件和设备控制器之间通讯和转换的程序
    ② 驱动程序与设备的硬件特性紧密相关
    ③ 驱动程序与IO设备采取的控制方式紧密相关
    ④ 一部分驱动程序由汇编指令组成
    ⑤ 驱动程序可允许重入

  • 设备处理方式
    ① 为每一类设备设备一个进程
    ② 在整个系统中设置一个IO进程
    ③ 不设置专门的设备处理进程,只为各类设备设置相应的设备驱动程序,供用户或者系统进程调用。

4.2 设备驱动程序的处理过程

主要任务:启动指定的设备,完成上层指定的IO工作
① 将抽象要求转为具体要求
② 对服务请求进行校验
③ 检查设备的状态
④ 传送必要的参数
⑤ 启动IO设备

4.3 对IO设备的控制方式

① 使用轮询的可编程IO方式
② 使用中断的可编程IO方式
③ 直接存储器访问方式
④ IO通道控制程序

5 与设备无关的IO软件

为了提高OS的可适应性与可扩展性,增加与设备无关的IO软件,以实现设备独立性;
为了实现设备的独立性,必须在设备驱动程序之上设置一层软件,即与设备无关的IO软件。

5.1 与设备无关的软件的基本概念

  • 以物理设备名使用设备
  • 引入了逻辑设备名
  • 逻辑设备名称到物理设备名称的转换

5.2 与设备无关的软件

  • 设备驱动程序的统一接口
  • 缓冲管理
  • 差错控制
  • 对独立设备的分配与回收
  • 独立于设备的逻辑数据块

5.3 设备分配

① 设备分配中的数据结构
② 设备分配时应考虑的因素
③ 独占设备的分配程序

5.4 逻辑设备名到物理设备名映射的实现

为了实现与设备无关性,当应用程序请求使用IIO设备时,应当用逻辑设备名,但是系统只识别物理设备名,因此在系统中需要配置一张逻辑设备表,用于将逻辑设备名映射为物理设备名。

  • 设备逻辑表
  • 逻辑设备表的设置问题

6 用户层的IO软件

6.1 系统调用与库函数

  • 系统调用:应用程序通过它间接调用OS中的IO过程,这是为了保证设备运行的安全性,不允许用户在用户态的应用进程直接去调用运行在核心态的OS过程。
  • 库函数

6.2 假脱机系统

多通道程序可以将一台物理CPU虚拟为多台逻辑CPU,从而允许多个用户共享一台主机;
假脱机程序可以将一台物理设备IO虚拟为多台逻辑IO设备,这样允许多个用户共享一台物理IO设备。

7 缓冲区管理

7.1 缓冲区的引入

  • 缓和CPU与IO设备间速度不匹配的矛盾
  • 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
  • 缓解数据粒度不匹配的问题
  • 提高CPU与IO设备之间的并行性

7.2 单缓冲区和双缓冲区

7.3 环形缓冲区

7.4 缓冲池

缓冲区是专门为特定的生产者和消费者设置的,属于专用缓冲区。当系统较大时,这样的缓冲区应该变大,内存消耗变大,因此设置缓冲池来解决此问题。
缓冲池管理多个缓冲区

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

人生不过一闭一睁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值