【OS】催眠IO

文章目录

  • I/O设备与I/O控制器の接口.
  • I/O系统の好处.
  • I/O控制方式.
    • 轮询方式.
    • 中断驱动.
    • DMA方式.
    • 通道控制方式.
  • IO软件.
    • 设备独立性.
      • 独立性の优势.
      • 独立性の实现.
    • 设备驱动程序.
    • 用户层IO软件.
      • 系统调用.
      • 库函数.
      • ★假脱机系统.
        • 输入井/输出井.
        • 输入缓冲/输出缓冲.
        • 输入监控进程/输出监控进程.
        • SPOOLing原理.
        • SPOOLing的优势.
  • 缓冲管理.
    • 举例分析.

I/O设备与I/O控制器の接口.

  • 数据信号线:用于传输数据;
  • 控制信号线:设备控制器向设备发送控制信号时的通路;
  • 状态信号线:传送指示当前设备状态的信号;

I/O系统の好处.

  • 【隐藏物理设备的细节】对设备进行抽象,隐藏物理设备的实现细节,向上层提供少量、抽象的读写命令;
  • 【与设备的无关性】用户可以使用抽象的I/O命令,而且可以使用抽象的逻辑名来使用设备;
  • 【提高CPU和I/O设备的利用率】不同的I/O设备之间以及I/O设备和CPU之间能够实现高效的并行操作;
  • 【对I/O设备进行控制】四种控制方式逐步发展,逐步逐步减少I/O设备与CPU之间的耦合;
  • 【确保对于I/O设备的共享】
  • 【错误处理】

I/O控制方式.

轮询方式.

  • 最原始的一种控制方式,CPU和I/O设备之间有过多的无效沟通。CPU执行到一条与I/O相关的指令时,就会向相应的控制器发送命令,而后原地踏步,不断询问I/O控制器数据是否已经准备好。
  • 好了没
  • 没有
  • 好了没
  • 没有
  • 怎么还没好
  • 快了
  • 我等得花都谢了
  • 好了,拿走
  • 可以发现,轮询方式中,I/O设备准备数据的过程,CPU就在空耗时间,绝大部分时间都用于等待I/O设备的循环测试之中。

中断驱动.

  • 一定程度上减少了CPU和I/O设备之间的耦合,CPU向设备控制器发送了命令之后就执行其他指令去,而控制器接收到命令后就开始准备数据。
  • 数据准备好以后,控制器通过中断控制线向CPU发送中断信号,等待CPU来取走数据。
  • CPU在每一个指令周期的末尾,会统一检查中断,发现有来自I/O控制器的中断时,就保存当前程序的上下文环境,调用中断处理程序来处理该中断。

DMA方式.

通道控制方式.

  • 这一控制方式实现了程度极高的CPU与IO并行工作,通道控制是以内存为中心,实现IO设备直接与内存交换数据,基本不需要CPU的干涉,每次可以完成多个不连续块的传输,并且可以做到一个通道控制多台设备。
  • IO通道有一套自己的指令系统,仅需要由CPU发出指令启动即可。

IO软件.

设备独立性.

  • 指的是用户在程序中使用的设备与实际的物理设备是独立的,用户在程序中仅使用设备的逻辑名称。
  • 逻辑名称是用户指定的,可以更改的;对应的物理名称是系统给出的设备号,是无法更改的。

独立性の优势.

  • 【提高设备分配的灵活性】当某个设备被占用或发生故障时,可以分配同类型的空闲设备,而用户都不了解这些细节;系统中增加某种类型的IO设备时,源程序因为使用的是逻辑名称,所以无需修改。
  • 【容易实现IO重定向】不用改变应用程序即可改变数据的IO流向。

独立性の实现.

  • 依靠逻辑设备表,将逻辑名称映射到物理名称:
逻辑名称 物理名称 设备驱动程序地址
—— —— ——

设备驱动程序.

  • 接收由上层软件发来的抽象命令,将其转换为具体要求,并插入请求队列,如打印机驱动程序需要将打印数据从存储编码(内码)转换成输出编码(字库);
  • 完成I/O操作的初始化工作:检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式;
  • 发出I/O命令,启动I/O设备;
  • 及时响应由控制器或通道发来的中断请求;
  • 根据用户的I/O请求,自动地构成通道程序。

用户层IO软件.

系统调用.

  • 应用程序通过系统调用间接调用OS中的IO过程,对IO设备进行操作。

库函数.

  • 用户程序通过调用对应的库函数使用系统调用;
  • C语言中的提供的I/O方面的库函数也是I/O系统的组成部分,主要包括对文件和设备进行读/写的库函数、控制/检查设备状态的库函数等。

★假脱机系统.

  • 假脱机系统英文全称为Simultaneous Peripheral Operation On-Line,简称SPOOLing系统
  • 【虚拟技术】指的是在一类物理设备上模拟另一类物理设备的技术,例如借助辅存区域模拟独占设备,将其转化为共享设备。
  • 【虚拟分配】当进程需要与独占设备交换信息时,就采用虚拟技术,将此独占设备对应的那个虚拟设备(辅存区域)分配给它。
  • SPOOLing系统就是虚拟技术与虚拟分配的实现。

输入井/输出井.

  • 磁盘上开辟的两块存储区域,输入井模拟脱机输入时的磁盘,输出井模拟脱机输入时的磁盘。

输入缓冲/输出缓冲.

  • 内存中开辟的两块存储区域,输入缓冲用于暂存输入数据,稍后再送到输入井中;输出缓冲用于暂存输出数据,稍后再传送到输出设备。

输入监控进程/输出监控进程.

  • 输入监控进程将用户要求的数据从输入设备通过输入缓冲区再传送到输入井。当用户需要数据时,直接从输入井读取数据即可。
  • 用户进程将输出数据通过输出缓冲传送到输出井,等到输出设备空闲时,直接从输出井中获取需要输出的数据。

SPOOLing原理.

  • 【执行前】预先将程序和数据输入到输入井中保存;
  • 【执行时】 进程需要使用数据时,直接从输入井中获取;
  • 【执行时】进程需要输出数据时,直接将数据写入输出井;
  • 【执行后】待输出设备空闲,它直接从输出井中获取需要输出的数据。

SPOOLing的优势.

  • 提高了IO速度;
  • 实现了虚拟设备功能,将独占设备改造成了共享设备。

缓冲管理.

  • 缓冲管理是为了缓和CPU和IO设备之间速度不匹配的矛盾;
  • 提高CPU和IO设备之间的并行程度;
  • 减少CPU对IO的干预,表现为CPU的终端频率降低以及CPU响应时间的延长。

举例分析.

【OS】催眠IO_第1张图片

  • 当仅有一块缓冲区时,数据以 9.6 k b / s 9.6kb/s 9.6kb/s的速率填入,每一次缓冲区被填满,CPU就需要中断一次来处理缓冲区(送入内存中),所以CPU的中断频率为 9600 9600 9600(意为每秒需要中断9600次来处理缓冲区),CPU的响应时间理解为CPU处理当前满缓冲区,到下一次缓冲区被填满的时间,也就是CPU需要在 1 / 9600 s 1/9600s 1/9600s的时间内处理完当前的满缓冲区,否则下一位新的数据已经到来。
  • 当寄存器为8位时,CPU的中断频率降低到 1 / 8 1/8 1/8,它可以等到8位全部被填充时再进行处理,也就是 9600 / 8 = 1200 9600/8=1200 9600/8=1200,但CPU的响应时间并没有变化,它还是需要在下一位新的数据到来之前就处理完当前缓冲区,所以依旧是 1 / 9600 s 1/9600s 1/9600s.
  • 如果采用双缓冲的8位寄存器,CPU中断频率显然还是 1200 1200 1200,而此时CPU的响应时间也被放宽。当CPU处理8位缓冲A时,其响应时间可以允许另一个8位缓冲B被填满,也就意味着其响应时间为 8 / 9600 s 8/9600s 8/9600s.

你可能感兴趣的:(OS)