操作系统/笔记/第八章/IO设备与存储

八、IO与存储

设备管理概述

在这里插入图片描述

  • 设备管理的方法主要有3种
    (1)操作系统直接操纵设备的运行,例如直接程序控制、中断方式控制
    (2)操作系统间接操纵设备的运行,例如DMA和通道方式
    (3)操作系统通过使用设备驱动程序,将设备管理工作通过任务(进程)的形式来体现。OS只需制定标准,将具体操纵设备的程序交给不同的制造商去开发

  • IO系统组成

    • 用户库函数接口
    • IO内核子系统
      • IO调度(磁盘寻道)、缓冲(文件系统磁盘访问)、错误处理、保护
    • 设备驱动程序(中断服务程序)
      • 隐藏设备差异,为操作系统和设备提供商提供标准的接口
    • IO硬件
      • 字符设备、块设备;读写;同步异步
        在这里插入图片描述

IO控制器

IO控制器的组成

在这里插入图片描述

  • I/O系统向设备发命令方式
    • 一个IO控制器可能对应多个设备
    • 读写设备控制器的寄存器
      • 寄存器可能有多个(每套寄存器对应一个具体的设备)
    • 设备寄存器的编址
      • 独立编址: 需要独立的指令。比如X86:in,out;能与DX,AX,AL寄存器结合使用。如out 0x21, AL
      • 内存映像编址: 是内存物理地址空间的一部分,使用mov命令,如mov [0x8000f000], AL
        在这里插入图片描述
I/O控制方式
  1. 程序直接控制(查询)方式

    • 查询(轮询)——原地踏步等待
      在这里插入图片描述
    • 工作步骤小结:
      (1)当某进程需要输入/输出数据时,由CPU向设备控制器发出一条I/O指令启动设备工作(对于输出操作,则CPU还要向数据寄存器中存放输出数据);
      (2)在设备输入/输出数据期间,CPU不断地循环进行查询设备状态寄存器的值(检查I/O工作是否完成)。
      (3)若完成,对输入操作来说CPU则从数据寄存器中取出数据,然后进行下一次的输入/输出数据或结束。
    • 优点:简单
    • 缺点:CPU与IO只能串行工作,CPU一直轮询忙等,CPU利用率低
  2. 中断控制方式

    • 中断(大部分I/O的处理方式)——设备就绪了告诉CPU一声
      在这里插入图片描述
      在这里插入图片描述
    • CPU每个时钟周期末尾检查中断,每次数据传输读写一个字
    • 优点:CPU与IO设备可并行工作,CPU利用率高
    • 缺点:如果出现频繁中断会消耗大量时间
  3. 直接内存存取(DMA)方式

    • DMA(Direct Memory Access直接存储器存取)——简单任务自己做,完成了告诉CPU一声
      在这里插入图片描述
      在这里插入图片描述
  • DMA方式数据输入过程

    • (1)当一个进程要求设备输入数据时,CPU对DMA进行初始化工作:
      • 存放数据的内存起始地址 - DMA控制器的内存地址寄存器MAR;
      • 要输入数据的字节数- DMA控制器的传送字节数寄存器DC;
      • 控制字(中断允许、DMA启动位=1) -DMA控制器的控制状态寄存器CR;
      • 启动位被置1,则启动DMA控制器开始进行数据传输。
    • (2)该进程放弃CPU,进入阻塞等待状态,等待第一批数据输入完成。进程调度程序调度其他进程运行。
    • (3)由DMA控制器控制整个数据的传输。
      • 当输入设备将一个数据送入DMA控制器的数据缓冲寄存器DR后,DMA控制器立即取代CPU,接管数据地址总线的控制权(CPU工作周期挪用),将数据送至相应的内存单元;
      • DMA控制器中的传输字节数寄存器计数减1;
      • 恢复CPU对数据地址总线的控制权;
      • 第(3)步过程循环直到数据传输完毕。
    • (4)当一批数据输入完成,DMA控制器向CPU发出中断信号,请求中断运行进程并转向执行中断处理程序。
    • (5)中断程序首先保存被中断进程的现场,唤醒等待输入数据的那个进程,使其变成就绪状态,恢复现场,返回被中断的进程继续执行。
    • (6)当进程调度程序调度到要求输入数据的那个进程时,该进程就到指定的内存地址
      中读取数据进行处理。
  • 仅在传送数据块的开始和结束时CPU才介入,每次数据传送一个或多个块(连续的块)

  • 优点:CPU利用率进一步提升

  • 缺点:CPU发出一条IO指令只能读写一个/多个连续的数据块,当需要读写多个离散数据块时CPU利用率会下降

  1. 通道控制方式(智能设备)
    • 通道channel——可以交办复杂任务,完成后汇报
    • 通道具有简单的CPU功能,可编程,可管理多个设备同时工作。从而真正实现了CPU与外部设备的并行工作。
    • 通道控制方式的工作过程:
      (1)当一个进程要求输入输出数据时,CPU根据请求形成有关通道程序,然后执行输入输出指令启动通道工作;
      (2)申请输入输出数据的进程放弃CPU进入阻塞等待状态,等待数据输入输出工作的完成,于是进程调度程序调度其他进程运行;
      (3)通道开始执行CPU放在主存中的通道程序,独立负责外设与主存的数据交换;
      (4)当数据交换完成后,通道向CPU发出中断信号,中断正在运行的进程,转向中断处理程序;
      (5)中断处理程序首先保护被中断进程的现场,唤醒申请输入输出的那个进程,使其变为就绪状态,关闭通道,然后恢复现场,返回被中断的进程继续运行;
      (6)当进程调度程序调度到申请输入输出数据的那个进程时,该进程就到指定的内存地址中进行数据处理。

在这里插入图片描述

  • 优点:CPU利用率更高,每次数据传送一组数据块
  • 缺点:实现复杂
IO控制器总结

在这里插入图片描述

缓冲技术

缓冲技术
  • 缓冲的目的:解决CPU和外设速度不匹配的矛盾,提高CPU与外设之间的并行性,减少对CPU的中断频率
    在这里插入图片描述

  • 缓冲技术的实现方法:硬件缓冲、软件缓冲

    • (1)硬件缓冲:利用专门的硬件寄存器作为缓冲区,一般由外设自带的专用寄存器构成。例如:Printer、CD-ROM等
    • (2)软件缓冲:借助操作系统的管理,在内存中专门开辟若干单元作为缓冲区
  • 软件缓冲的四种实现方法:

    • 单缓冲:在内存中开辟一个固定大小的区域作为缓冲区

      • 外设和CPU交换数据时,先将被交换的数据写入缓冲区,然后再由需要数据的CPU或外设从缓冲区中取出。
      • 该方式中,外设与CPU对缓冲区的操作是串行的。
    • 双缓冲:在内存中设置2个大小相同的缓冲区。

      • 外设和CPU可以交替使用这2个缓冲区,从而在一定程度上实现并行交换数据。
    • 环形缓冲:在内存中设置大小相等的多个缓冲区,并将它们链接称为一个环形链表。

      • Head一直指向缓冲区链表的第一个缓冲区;
      • Full一直指向缓冲区链表中的第一个存满数据的缓冲区;
      • Empty一直指向缓冲区链表中的第一个空白的缓冲区。
      • 初始化时:Head=Full=Empty,整个缓冲区链表为空;
      • 使用过程中:当Full=Empty <==> 整个缓冲区链表为空。在这里插入图片描述
    • 缓冲池: 缓冲池是由多个大小相同的缓冲区组成

      • 池中的缓冲区是系统公共资源,所有进程均可以共享
      • 池由系统管理程序统一管理,负责分配、回收工作
      • 池中每个缓冲区既可以用于输入数据,也可以用于输出数据
        在这里插入图片描述
    • 缓冲池的工作流程:
      (1)当输入设备需要进行数据输入时,则从空缓冲队列的队首取下一个空缓冲区,将它作为收容输入工作缓冲区,当它被输入装满数据后,则被链接到输入缓冲队列的队尾;
      (2)当某进程需要从缓冲池输入数据时,则从输入缓冲队列的队首取一个缓冲区作为提取输入工作缓冲区,该进程从中提取数据,取完后,则将该缓冲区链接到空缓冲区队列的队尾;
      (3)当某进程需要输出数据到缓冲池时,则从空缓冲队列的队首取下一个空缓冲区,将它作为收容输出工作缓冲区,该进程向该缓冲区中存放数据,当它被装满数据后,则被链接到输出缓冲队列的队尾;
      (4)当输出设备需要进行数据输出时,则从输出缓冲队列的队首取一个缓冲区作为提取输出工作缓冲区,并从中提取数据输出,取完后,则将该缓冲区链接到空缓冲区队列的队尾。

假脱机技术——SPOOLING
  • Simultaneous Peripheral Operation On Line外部设备同时联机操作,又称假脱机(脱离主机的IO操作)操作
  • SPOOL是操作系统中采用的一项将独占设备改造(虚拟)成共享设备的技术。
  • 实现方法:截获向某独享设备输出的数据,暂时保存到内存缓冲区或磁盘文件中,并进行排队,之后逐个输出到外设上
  • 实现这一技术的软、硬件系统称为SPOOL系统,或假脱机系统,或SPOOLING系统
    在这里插入图片描述

磁盘IO

  • 磁盘I/O: 缓存队列 → 控制器 →寻道 →旋转 → 传输

  • 磁盘访问延迟 = 队列时间 + 控制器时间 + 寻道时间 + 旋转时间(半周) + 传输时间

    • 关键所在: 最小化寻道时间和旋转延迟
  • 磁盘调度算法

    • 先来先服务磁盘调度 First Come First Severed (FCFS )

    • 最短寻道时间优先磁盘调度 Shortest-Seek-Time First (SSTF)
      在这里插入图片描述

    • 扫描/电梯算法磁盘调度 SCAN
      在这里插入图片描述

    • 循环扫描/电梯算法磁盘调度 C-SCAN
      在这里插入图片描述

    • C-LOOK磁盘调度
      在这里插入图片描述

    • 总结
      在这里插入图片描述

  • 磁盘编址

    • 对磁盘的扇区进行编号:扇区 = 头 + 数据区 + 尾
    • 地址是:盘面(H) + 磁道(C) + 扇区(S)
    • CHS (Cylinder/Head/Sector)模式(硬盘盘片的每一条磁道都具有相同的扇区数)
      • 柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道, 最大为 1024(用 10 个二进制位存储)
      • 磁头数(Heads) 表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 256 (用 8 个二进制位存储)
      • 扇区数(Sectors per track) 表示每一条磁道上有几个扇区, 最大为63 (用 6 个二进制位存储)
        在这里插入图片描述
    • 线性寻址(等密度结构硬盘,外圈磁道的扇区比内圈磁道多)
      • 以扇区为单位进行寻址
      • 与使用CHS寻址的兼容,在硬盘控制器内部安装了一个地址翻译器
  • 磁盘交换区

    • 存储页面置换时从内存换出的页面
    • 页面 <—> 扇区映射
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值