操作系统第六章:设备管理

6.1 设备管理概述

I/O系统管理的主要对象:I/O设备和相应的设备控制器

设备管理的主要功能

  1. 设备分配:由操作系统统一调度和控制

  2. 设备映射:操作系统均支持应用软件对设备的无关性,那么就存在这逻辑设备和物理设备,于是逻辑设备到物理设备的映射功能,简称设备映射功能

  3. 设备驱动:接收上层软件发来的抽象服务请求,对物理设备进行控制,以实现真正的I/O操作。

  4. I/O缓冲区管理

通用设备管理分层模型
在这里插入图片描述
5. 硬件无关层主要实现:I/O缓冲区管理以及设备映射功能
6. 备硬件相关层为其提供了一个相对简洁的I/O功能接口;该接口屏蔽了设备硬件复杂的操作细节。

支持中断的设备管理模型

在这里插入图片描述

驱动方式

  1. 多数设备都是“中断驱动”方式
  2. 块设备使用DMA方式

I/O软件功能

  1. 用户层软件:实现与用户的交互
  2. 设备独立性软件:实现与设备驱动器的统一接口
  3. 设备驱动程序:与硬件直接相关,负责具体实现系统发出的操作命令
  4. 中断处理程序:用于保护中断进程的上下文
    在这里插入图片描述在这里插入图片描述

6.2 I/O设备和设备控制器

按信息交换的单位分类

  1. 块设备;数据块为单位(速率高,可寻址,I/O采用DMA)
  2. 字符设备:基本单位是字符(速率低,不可寻址,采用中断驱动)

设备与控制器之间的接口
在这里插入图片描述

设备控制器

  1. 基本功能 :
    1. 接收和识别命令
    2. 数据交换
    3. 标识和报告设备的状态
    4. 地址识别
    5. 数据缓冲
    6. 差错控制
  2. 结构:
    在这里插入图片描述

6.3 中断机构和中断处理程序

  • 外中断:cpu对I/O设备发来的信号的一种响应

  • 内中断:由cpu内部事件所引起的出错

  • 中断向量表:中断号+中断处理程序地址

  • 中断优先级:
    在这里插入图片描述

  • 中断处理层的主要任务:

    1. 执行完当前指令后,测试是否有未响应的中断信号
    2. 对处理中断信号源进行测试,读取设备状态和修改进程状态
    3. 进行进程上下文切换
    4. 总流程:当一个进程进行I/O操作时,该进程将被阻塞,直到I/O完成后,设备控制器便向CPU发送一系列中断请求,CPU响应后便转向中断处理程序,处理完后解除阻塞状态
  • 中断处理程序的步骤

    1. 测定是否有未响应的中断信号
    2. 保护被中断进程的CPU环境
    3. 转入相应的设备处理程序
    4. 中断处理
    5. 恢复被中断进程的现场
      在这里插入图片描述

6.4 设备驱动程序

  • 组成:
    1. 驱动输入/输出程序
    2. 中断处理程序
  • 功能:
    1. 接受I/O进程的命令和参数
    2. 检查I/O进程的合法性
    3. 发出I/O命令
    4. 及时响应中断请求

  • 处理过程:
    1. 将抽象要求转换为具体要求
    2. 检查I/O请求的合法性
    3. 读出和检查设备的状态
    4. 设备传送必要的参数
    5. 启动I/O

  • 对I/O设备的控制方式:
    1. 程序I/O方式(CPU极大浪费)
    2. 中断驱动I/O方式:中断I/O比程序I/O方式高效,但以字/字节为传输单位。每完成一个字/字节的传输,设备均要向CPU请求一次中断
    3. 直接存储器访问DMA方式:
      1. 数据传输的基本单位是数据块
      2. 数据是从设备直接送入内存的,或者相反
      3. 仅在传送一个或多个数据块的开始和结束时,才需CPU干预
    4. I/O通道控制方式(DMA的发展):一条通道指令可以传送一组数据,一个通道程序可以传送多组数据。多组数据全部传送完毕后(即一个通道程序执行完毕),才向处理机发出一次中断。
      在这里插入图片描述

6.5 设备独立性软件

  • 设备独立性:应用程序独立于具体使用的物理设备
  • 设备独立性软件的两个主要功能:
    1. 执行所有设备的共有操作
    2. 向用户层软件提供统一接口
  • 设备分配:设备控制表DCT
    在这里插入图片描述
  • 设备分配算法:
  1. 先来先服务
  2. 优先级
  • 独占型设备的分配:申请、使用、释放

  • 共享型设备的分配:不需要申请但在I/O期间只能由一个进程使用设备

  • 逻辑设备到物理设备的映射:逻辑设备表——LUT

    1. 逻辑设备名
    2. 物理设备名
    3. 设备驱动程序入口地址

6.6 SPOOLing技术

  • 脱机是什么:离线情况下访问Cache(磁盘缓存)中的数据
  • SPOOLing是什么:在主机的直接控制下,实现脱机输入、输出功能。此时的外围操作与CPU对数据的处理同时进行。具体来说,在输入与输出之间增加了“输入井”和“输出井”的排队来消除用户的“联机”等待时间(“输入井”和“输出井”则是在高速辅存(外存)中开辟的两个固定的转储区。
    )
  • 作用:
    1. 将一台物理I/O设备虚拟为多台逻辑I/O设备,同样允许多个用户共享一台物理I/O设备。
    2. 将独占设备改造为共享设备。

在这里插入图片描述


6.7 缓冲区管理

总的来说是为了解决各种速度不匹配的问题

  • 单缓冲:在这里插入图片描述

  • 双缓冲:先将数据装入第一缓冲区,装满后便转入第二缓冲区在这里插入图片描述在这里插入图片描述

  • 循环缓冲:多个缓冲,每个缓冲区大小相同,连成一个环

  • 缓冲池

    1. 空缓冲队列
    2. 输入队列
    3. 输出队列

6.8 磁盘存储器管理

在这里插入图片描述
磁盘的基本存储单元(扇区)的寻址方式为三维地址:柱面号、盘面号、扇区号。

  • 磁道号:同一盘面上的所有刺刀是绕旋转轴的一组同心圆,由外向内依次由0开始编号
  • 柱面号:各盘面上序号相同的磁道号构成一个柱面
  • 盘面号:一个盘片由两个盘面,最上和最下的盘面不可用,所以由2(n-1)个盘面可用
  • 扇区

磁盘类型:

  1. 固定头磁盘:每条磁道上都有一读/写磁头,可并行读写
  2. 移动头磁盘:每一个盘面仅配有一个磁头,所以只能串行读写

影响磁盘I/O性能的指标:

  1. 寻道时间:收到指令到移动到目标磁道位置所需要的时间
  2. 旋转延迟:旋转到所需的扇区的时间
  3. 数据传输时间

磁盘调度算法:

  1. 先来先服务
  2. 最短寻道时间优先(虽然有较好的性能但是也会发生饥饿现象)
  3. 扫描算法:更优先考虑的是磁头当前的移动方向(SCAN 算法既能获得较好的寻道性能,又能防止“饥饿”现象)
  4. 循环扫描算法:最大磁道过了以后是从最小磁道循环开始扫描

提高磁盘I/O速度的方法:

  1. 改进目录
  2. 选取好的文件存储机构
  3. 高效算法
  4. 其他方法:
    1. 提前读:读当前盘块的时候同时读下一盘块
    2. 延迟写
    3. 优化物理盘分布
    4. 虚拟盘:用内存空间去仿真磁盘
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值