OS - 操作系统文件读写中的常见加速机制



主要参考:

  • 《操作系统概论》(机械工业出版社)

加速处理器与外围设备间的数据传输

  • 主要矛盾:

    处理器指令执行速度远高于外围设备的信息传输速度

    对于一个经常要启动外围设备的进程来说,其等待外围设备传输信息的时间就可能远大于占用处理器的时间,进而影响了进程的执行速度。

  • 解决方案:

    主存储器中开辟缓冲区,用来临时存放输入输出信息,称为缓冲技术

缓冲技术

  • 单缓冲

    操作系统在主存储器的系统区中只设立一个缓冲区

    • 以要读取磁盘中文件进行处理操作为例:

      • 先将磁盘文件的第一块信息读入到缓冲区;
      • 再将缓冲区中的内容传送到用户工作区,供处理器处理;
      • 用户处理信息时,如缓冲区已腾空,可继续将磁盘文件中的下一块信息预读到缓冲区
      • 依次循环,直到文件处理结束。
    • 假定,从磁盘读取一块信息到缓冲区所需时间为T,从缓冲区把信息传送到用户工作区所需时间为t,用户进程对信息进行处理所需时间为p,(考虑t是主存储器内的数据传输)显然有:t < p,t < T,时间对比:

      • 如不采用缓冲技术,则对每一批信息所花费时间为:T + p;
      • 如采用单缓冲技术,则相应花费时间为:max(T, p) + t
  • 双缓冲

    对比单缓冲技术,操作系统利用两个缓冲区交替完成预读取/预输出操作。

    • 仍以要读取磁盘中文件进行处理操作为例:

      • 先将用户需要的信息读入缓冲区1;
      • 再把缓冲区1中的信息传送给用户进程;
      • 同时,将用户需要的后继信息读入缓冲区2;
      • 当用户进程处理完来自缓冲区1的信息后,即可直接将缓冲区2的信息传送给用户进程;
      • 与此同时,又继续将信息读入缓冲区1;
      • 依次循环,直到文件处理结束。
    • 假定,外围设备与缓冲区交换信息的时间为T,缓冲区与用户工作区之间的信息传输时间为t,用户进程处理信息所需时间为p:

      • 实际上,双缓冲技术利用两个缓冲区的交替工作,主要节省了单缓冲技术中用户处理信息而缓冲区中尚未腾空时的等待时间,即让T与t出现重叠
      • 利用双缓冲技术处理每一批信息的时间就可表示为:max(T - t, p) + t
    • 另一种应用:实现输入和输出的并行工作

      例如,要把磁带上的信息在打印机上打印出来:

      • 启动磁带机读出一块信息并存入缓冲区1;
      • 启动打印机打印缓冲区1中的信息;
      • 同时,继续读取磁带机中的下一块信息存入缓冲区2;
      • 打印机完成缓冲区1中的信息打印后,即可与磁带机交换使用缓冲区;
      • 依次循环,直至所有信息被打印。
  • 缓冲池

    • 操作系统在主存中设置一组缓冲区,称为缓冲池

      • 缓冲池中的各缓冲区属于系统公共资源,可供各进程共享,并由操作系统统一分配和管理;

      • 缓冲池的目的在于:减少外围设备的启动次数,提供文件信息的传送速度。

    • 仍以读操作示例来演示缓冲池的具体流程:

      • 系统初始化时,各缓冲区都未被使用,称为空缓冲区,并组成空缓冲区队列(分配时总从队列中取第一个缓冲区,回收时也总把它链入队列队尾);
      • 当用户第一次请求读取磁盘上某文件时,为其分配一个或多个缓冲区,并将文件读取到缓冲区中;
      • 缓冲区将文件信息传送到用户工作区后,仍将继续保留这些信息
      • 当用户再次请求读取该文件时,先检查是否已在缓冲区中,若存在则不必再次启动磁盘,而是直接从缓冲区中读取;
      • 只有当缓冲池中的空闲缓冲区不够分配时,系统才会将已占用的缓冲区收回并重新分配。
    • 当进行写操作时,也有对应的延迟写机制:

      • 系统也是先将信息复制到缓冲区中,而并不启动磁盘进行保存;
      • 这是考虑用户生成的文件可能后续仍将被使用,便可直接从缓冲区中读出并修改;
      • 仅当缓冲区要被回收时,才把尚未保存的信息写入到磁盘上。

加速磁盘与独占型输入输出设备间的数据传输

  • 主要矛盾:

    • 当独占型设备被某个作业占用时,实际只有部分时间在工作;
    • 当系统中某类型的设备仅有一台时,就不能接受两个以上设备需求相同的作业并行执行;
    • 这类独占型设备大多也是低速独占设备,因此会占用作业执行时间中大部分的等待时间。

脱机外围设备操作

脱机外围设备操作

  • 大致操作流程:

    • 除主计算机系统外,还需使用两台外围计算机
    • 一台外围计算机负责把一批作业的信息全部传送到磁盘上;
    • 人工把磁盘移动到主计算机系统;
    • 作业执行结果存入另一磁盘中;
    • 再通过人工把存有结果的磁盘移动到另一个外围计算机上打印输出。
  • 两台外围计算机仅需把信息从一种存储介质传送到另一种存储介质上,没有其他计算任务,因此不在主计算机的控制下进行,也就称为脱机外围设备操作

  • 对于主计算机系统而言,这种机制解决了如下问题:

    • 信息的读写都是与磁盘进行数据传输,而不是低速独占设备,无疑加速了作业的执行速度;
    • 主计算机在处理数据时,并不影响外围计算机的输入输出操作,实际解决了设备独占问题,创造了多道并行工作的条件
  • 但是这种机制,也存在如下问题:

    • 使用多台计算机,成本升高;
    • 增加了操作员的人工操作成本,同时也增加了出错可能;
    • 增加了单次作业的周转周期(实际增加了主计算机系统从磁盘上的数据读写时间)

联机同时外围设备操作

随着现代计算机系统的性能提升,完全可利用中央处理器与通道并行工作的能力,在一台计算机上完成上述三台计算机的任务。

联机同时外围设备操作

  • 具体替代方案:

    • 操作系统中设计两个程序:“预输入程序”和“缓输出程序”分别代替上述两台外围计算机的工作;
    • 在磁盘上辟出“输入井”和“输出井”两个专门区域,分别用来存放作业信息和作业执行结果
    • 这样便可降低成本,同时减少人工操作
  • 由于“预输入程序”和“缓输出程序”是在计算机控制下执行的,因此称为联机同时外围设备操作(Simulatanerous Peripheral Operation On Line,SPOOLING,斯普林操作

  • 多道程序并行工作时,其效果好像每个作业都拥有一台速度与磁盘一样快的输入机/打印机。实际是由磁盘来模拟了输入机和打印机的功能,也就称为虚拟设备


posted @ 2018-09-16 17:07  JustKidding  阅读(838)  评论(0编辑  收藏  举报