操作系统(IO管理)

操作系统(IO管理)

一,IO概念

IO就是输入/输出(input / output)

IO设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机的硬件部件

日常生活中,最典型的IO设备就是如下几种:

  • 键盘,字符输入设备(input)
  • 显示器,输出设备(output)
  • 移动硬盘,既可以输入又可以输出的设备

在这里插入图片描述

IO设备分类

  • 按使用特性分类

    • 人机交互类设备(数据传输速度慢)
    • 存储设备(数据传输速度快)
    • 网络通信设备(数据传输速度介于上述两者之间)

    在这里插入图片描述

  • 按照传输速率分类

    • 低速设备(每秒几个到几百字节)
    • 中速设备(每秒几千到上万个字节)
    • 高速设备(每秒数千到千兆字节)
  • 按信息交换的单位分类

    • 块设备(传输快,可寻址)
    • 字符设备(传输慢,不可寻址,常采用中断驱动方式)

二,IO控制

2.1IO控制器

CPU无法直接控制IO设备的机械部件,因此IO设备还要有一个电子部件作为CPU和IO设备机械部件之间的中介,用于实现CPU对设备的控制,该电子部件就是IO控制器,又称为设备控制器,CPU控制IO控制器,IO控制器来控制IO的机械设备

IO控制器的功能

  • 接受和识别CPU发出的指令
    • IO控制器中有相应的控制寄存器来存放cpu传来的相应的命令和参数
  • 向cpu报告设备状态
    • IO控制器中有相应的状态寄存器来记录当前IO设备的状态
  • 数据交换
    • IO控制器中有相应的数据寄存器
      • 输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备
      • 输入时,数据寄存器用于暂存设备发来的数据,之后cpu从数据寄存器中取走数据
  • 地址识别
    • 为了区分设备控制器中的各个寄存器,也要给各个寄存器设置一个特定的地址,IO控制器通过CPU提供的地址来判断cpu要读/写哪个寄存器

IO控制器的组成

在这里插入图片描述

上文中有说过要给寄存器编地址来区分设备控制器中的各个寄存器

编址方式:

  • 内存映像IO(控制器中的寄存器和内存统一编制)

    在这里插入图片描述

  • 寄存器独立编址(控制器中寄存器独立编制)

在这里插入图片描述

2.2IO控制方式

2.2.1程序直接控制方式

完成一次读操作流程

  • CPU向控制器发出读指令,设备启动,并且报告自身状态
  • CPU轮询检查状态控制器中的寄存器,当状态寄存器中设备状态变为已经就绪时,就准备从设备中读入数据
  • 设备在准备好数据后传给数据寄存器
  • CPU从数据寄存器中读入数据到cpu寄存器
  • CPU把CPU寄存器中的数据放入内存
  • 判断是否还要继续读入数据,还需要读入则cpu继续发出读指令

在这里插入图片描述

cpu干预频率

CPU干预的频率很频繁,IO操作开始之前,完成之后都需要CPU介入,并且在等待IO完成的过程中CPU需要不断的轮询检查设备状态

数据传送单位

数据的传送单位是一个字

数据的流向

  • 读操作(数据输入):IO设备 -》 CPU -》内存
  • 写操作(数据输出):内存 -》CPU -》IO设备

每个字的读写都需要cpu的帮助

主要缺点和主要优点

  • 优点:实现简单
  • 缺点:cpu利用率低,cpu和IO设备只能串行工作

2.2.2中断驱动方式

完成一次读操作流程

引入中断机制,由于IO设备速度很慢,因此在CPU发出读写命令后,可将等待IO的进程阻塞,先切换到别的进程执行(CPU去做别的事情)当IO完成后,IO控制器给CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的上下文环境,切换去执行中断处理程序处理该中断,处理中断过程中,CPU从IO控制器读一个字到cpu的寄存器,然后在放入内存,接着,CPU恢复等待IO的进程的上下文,然后继续执行

其实就是相当于,CPU在发出了读命令给IO控制器后就阻塞当前等待IO的进程,让IO设备器自己完成IO,等到设备将数据放到IO控制器的数据寄存器后,IO控制器向CPU发出中断,让cpu来取数据放入内存

在这里插入图片描述

cpu干预频率

每次IO操作开始之前,完成之后都需要CPU介入

等待IO完成的过程中CPU可以切换到别的进程执行

数据传送单位

数据的传送单位是一个字

数据的流向

  • 读操作(数据输入):IO设备 -》 CPU -》内存
  • 写操作(数据输出):内存 -》CPU -》IO设备

主要缺点和主要优点

  • 优点:与程序直接控制方式相比,在中断驱动方式中,IO控制器会通过中断信号主动报告IO完成,CPU不需要不停的轮询,cpu可以和IO设备并行工作,CPU利用率得到提升
  • 缺点,频繁的中断处理会消耗比较多的CPU时间

2.2.3DMA方式

DMA(直接存储器存取)

  • 数据传送单位时块,不再试一个字,一个字的传送
  • 数据流向:设备直接到内存或内存直接到设备

在这里插入图片描述

  • DR(数据寄存器):暂存从设备到内存,或从内存到设备的数据
  • MAR(内存地址寄存器):在输入时,MAR表示数据应放到内存的什么位置,输出时,MAR表示要输出的数据放在内存的什么位置
  • DC(数据计数器):表示剩余要读/写的字节数
  • CR(命令/状态寄存器):用于存放CPU发出来的IO命令,或设备的状态信息

在这里插入图片描述

  • CPU指明此次要进行的操作,比如读操作,并说明要读入多少数据,数据要存放在内存的什么位置,数据在外部设备上的地址

  • 控制器会根据CPU提出的要求完成数据的读写工作,整块数据的传输完成后,才向CPU发出中断信后

  • dma可以直接和内存交互

cpu干预频率

尽在传送一个或多个数据块的开始和结束时,才需要cpu干预

主要缺点和主要优点

  • 优点:数据传输效率提高,cpu和IO设备的并行性提到提升
  • 缺点:CPU每发出一条IO指令,只能读写一个或多个连续的数据块,如果要读写多个离散存储的数据块,或者要将数据分别写到不同的内存区域,CPU要发出多条IO指令。处理多次中断才能完成

2.2.4通道控制方式

通道,独立于CPU的专门负责输入输出控制的处理机,他控制设备与内存直接进行数据交换,有自己的通道指令,这些指令由CPU启动,并在操作结束时向CPU发送中断信号。

通道控制方式实现了CPU,通道和IO设备三者的并行操作,从而更加有效的提高整个系统的资源利用率,当CPU要完成一组读操作时,只需要向IO通道发出一条IO指令,指出其所要执行的通道程序的内存地址和要访问的IO设备,通道收到该指令后,通过执行通道程序便可以完成CPU指定的IO任务,可见 通道只是在 I/O 操作的起始和结束时向 CPU 发出 I/O 中断申请,相对于之前的控制方式进一步减少了 CPU 的干预程度。

在这里插入图片描述

在这里插入图片描述

cpu干预频率

通道只是在 I/O 操作的起始和结束时向 CPU 发出 I/O 中断申请,相对于之前的控制方式进一步减少了 CPU 的干预程度。

数据传送单位

三,IO核心子系统

在这里插入图片描述

IO核心子系统主要做的就是IO调度,设备保护,设备分配和回收,缓冲区管理(缓冲和高速缓存)

3.1缓冲区管理

如果是字符型设备,则每输出完一个字符就要想CPU发出一次中断信号

在这里插入图片描述

使用缓冲区之后,IO设备往缓冲区发送字符数据,等到缓冲区满了在发往CPU

在这里插入图片描述

缓冲区的作用:

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

单缓冲

操作系统会在主存中为其分配一个缓冲区,当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出

双缓冲

操作系统会在主存中为其分配两个缓冲区

使用单/双缓冲在通信时的区别

两台机器之间通信时,可以配置缓冲区用于数据的发送和接收

在这里插入图片描述

任意时刻,设置单缓冲的两台机器只能实现数据的单向传输

如果设置两个缓冲区的话就可以实现数据的双向通信

在这里插入图片描述

循环缓冲区

很多大小相等的缓冲区链接成一个循环队列

在这里插入图片描述

缓冲池

在这里插入图片描述

发布了254 篇原创文章 · 获赞 136 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41922289/article/details/103283986