• 主页
  • 相册
  • 随笔
  • 目录
  • 存档
Total 244
Search AboutMe

  • 主页
  • 相册
  • 随笔
  • 目录
  • 存档

操作系统备忘录-输入输出系统

2020-01-07

1. I/O系统功能模型和接口

功能

  • 隐藏物理设备细节
  • 与设备无关性
  • …

层次模型

  • 用户层软件:API

  • 设备独立性软件:命名、保护、缓冲、分配释放等

  • 设备驱动程序:硬件相关

  • 中断处理程序

    例:用户进程从文件读取一个数据块

    • 系统调用---设备独立软件 查找页面----如果没有;调用设备驱动程序向硬件请求;驱动程序从磁盘读数据块----磁盘操作完成;硬件产生中断---唤醒用户进程结束I/O操作

2. I/O 设备控制器

设备控制器

为术语驱动程序给出单一的准确定义比较困难。 就最基本的意义而言,驱动程序是一个软件组件,可让操作系统和设备彼此通信。 例如,假设应用程序需要从设备中读取某些数据。 应用程序会调用由操作系统实现的函数,操作系统会调用由驱动程序实现的函数。

  • 充当CPU与外设的接口,接受CPU的命令去控制设备工作

  • 内部构成

  • 与处理机的接口

    • 与设备的接口
    • I/O逻辑

3. 内存映像

引入

  • CPU如何与设备控制器当中的寄存器进行通信

  • 如何访问设备的数据缓冲区

方式

  • I/O独立编址

    给控制器中的每一个寄存器分配一个唯一的I/O端口(I/O port)编号,称为I/O端口地址,然后用专门的I/O指令对端口进行操作


    优点

    • I/O设备不占用内存地址空间,而且程序设计时,易于区分是对内存操作还是对I/O端口操作
  • 内存映像编址

    把所有控制器当中的每一个寄存器都映射为一个内存地址,专门用于I/O操作(功能上),对这些单元的读写操作即为普通的内存访问操作


    优点

    • 编程方便,无需专门的I/O指令
    • 对普通的内存单元可进行的所有操作指令均可作用于I/O端口,如TEST指令
  • 混合编址

    对于设备控制器中的寄存器,采用独立编址的方法;而对于设备的数据缓冲区,采用内存映像编址的方法

4. 设备驱动程序

功能

  • 接收设备独立软件发来的命令和参数
  • 将命令中的抽象要求转换为具体要求
  • 检查用户I/O请求的合法性
  • …

工作方式

设备控制器控制IO操作,驱动程序阻塞,直到设备中断唤醒

  • 程序I/O方式

    • CPU不断测试状态寄存器中的忙闲状态

      在早期的计算机系统中,由于无中断机构,处理机对I/O设备的控制,采取程序I/O方式(Programmed I/O方式)。在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU 的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使 I/O设备无法向CPU报告它已完成了一个字符的输入操作。

  • 中断驱动方式

    在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。

  • 直接存储器访问DMA I/O控制方式

    • DMA(Direct Memory Access)

      DMA方式,Direct Memory Access,也称为成组数据传送方式,有时也称为直接内存操作。DMA方式在数据传送过程中,没有保存现场、恢复现场之类的工作。
      由于CPU根本不参加传送操作,因此就省去了CPU取指令、取数、送数等操作。内存地址修改、传送字个数的计数等等,也不是由软件实现,而是用硬件线路直接实现的。所以DMA方式能满足高速I/O设备的要求,也有利于CPU效率的发挥。

      • 外设可通过DMA控制器向CPU发出DMA请求
      • CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器
      • 由DMA控制器发送存储器地址,并决定传送数据块的长度
      • 执行DMA传送
      • DMA操作结束,并把总线控制权交还CPU
  • I/O通道控制方式

    I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备三者的并行工作,从而更有效的提高了整个系统的资源利用率。

设备独立性软件

  • 驱动程序为硬件相关,为实现硬件无关而设置

5. 用户层的I/O软件

SPOOLING

在信息学中,假脱机(外部设备联机并行操作,SPOOL,Simultaneous Peripheral Operations On-line)是一种数据缓冲,指传输数据的过程中,将数据存放在临时工作区中。其它程序可以在之后的任意时间点对其访问。

  • 缓和CPU的高速性与I/O设备低速性间的矛盾

  • 利用专门的外围控制机, 将低速I/O设备上的数据传送到高速磁盘上;或者相反

  • 当系统中引入了多道程序技术后,利用其中的一道程序模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样,便可在主机的直接控制下,实现脱机输入、 输出功能。

  • 效果

    • 提高了I/O的速度
      • 改CPU对低速外设操作为磁盘操作
    • 将独占设备改造为共享设备
    • 实现了虚拟设备功能
      • 多个进程同时使用一台独占设备,但对每个进程而言,感觉自己独占设备

6. 缓冲管理

引入

  • 缓和CPU与I/O设备间速度不匹配的矛盾
  • 减少对CPU的中断频率, 放宽对CPU中断响应时间的限制
  • 提高CPU和I/O设备之间的并行性

**循环缓冲 **

  • 构成

    • 多个缓冲区:空缓冲区R、有数据的缓冲区G、计算进程正在使用的缓冲区C

    • 多个指针:计算进程下一个可用缓冲区的指针Nextg、输入进程下一个可用空缓冲区的指针Nexti、计算进程正在使用的指针Current

  • 工作方式

    • Getbuf
      • 输入进程👇
      • Nextg指针指向的缓冲区可使用
      • 将其改为现行工作缓冲区,令Current指针指向该缓冲区
      • Nextg下移至下一个G缓冲区
      • 计算进程👇
      • Nexti指针指向的缓冲区供使用使用
      • Nexti下移至下一个R缓冲区
    • Releasebuf
      • 计算进程👇
      • 计算进程取走缓冲区C的数据后,释放C
      • 把C改为R
    • 进程同步——阻塞
      • Nexti指针追赶上Nextg指针
      • Nextg指针追赶上Nexti指针

公共缓冲池

  • 原理

    • 多个进程共享的缓冲区
  • 组成

    • ① 空(闲)缓冲区;
    • ② 装满输入数据的缓冲区;
    • ③ 装满输出数据的缓冲区
  • 工作方式

    • 收容输入
    • 提取输入
    • 收容输出
    • 提取输出

7. 磁盘调度

先来先服务FCFS(First-Come, First Served)

**最短寻道时间优先SSTF(Shortest Seek Time First) **

  • 访问与当前磁头所在磁道距离最近的磁道

扫描(SCAN)算法

  • 进程“饥饿”现象
    • SSTF算法中,只要不断有新进程的请求到达, 且其所要访问的磁道与磁头当前所在磁道的距离较近,其请求必须优先满足,可导致某些老进程出现“饥饿”现象。
  • 除考虑与当前磁道的距离外,优先考虑磁头当前的移动方向,即选择当前移动方向最近的磁道,直到该方向无访问,磁头换方向移动

**循环扫描(CSCAN)算法 **

  • 磁头单向移动;最大磁道号和最小磁道号构成循环

**N-Step-SCAN和FSCAN调度算法 **

  • 磁臂粘着(Armstickiness)
    • 在SSTF、 SCAN及CSCAN几种调度算法中, 都可能出现磁臂停留在某处不动的情况, 例如,有一个或几个进程对某一磁道有较高的访问频率, 即这个(些)进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备。
  • FSCAN算法
    • 是N步SCAN算法的简化
    • 只将磁盘请求队列分成两个子队列
    • 一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理
    • 在扫描期间,将新出现的所有请求磁盘I/O的进程, 放入另一个等待处理的请求队列。这样,所有的新请求都将被推迟到下一次扫描时处理
  • Notes
  • Operating System
  • Notes
操作系统备忘录-文件系统
操作系统备忘录-进程管理
  1. 1. 1. I/O系统功能模型和接口
  2. 2. 2. I/O 设备控制器
    1. 2.1. 3. 内存映像
  3. 3. 4. 设备驱动程序
  4. 4. 5. 用户层的I/O软件
  5. 5. 6. 缓冲管理
  6. 6. 7. 磁盘调度
© 2024 何决云 载入天数...