408 操作系统 知识点记忆(5)输入/输出管理

408 操作系统 知识点记忆(5)输入/输出管理

前言

本文基于王道考研《操作系统考研复习指导》与汤小丹《计算机操作系统》(第4版)教材内容,结合 408 考研大纲,系统梳理输入/输出管理的核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。

本章讲操作系统如何统一管理五花八门的外设,主线是 I/O 控制方式的演进(轮询→中断→DMA)与 I/O 软件的分层结构;磁盘调度算法与固态硬盘特性是计算题的高频区。

核心知识记忆点+理解性说明

第五章 输入/输出管理

1. 输入/输出(I/O)管理基础

A. 设备:设备的基本概念,设备的分类,I/O接口

信息交换单位分类:块设备、字符设备

设备传输速率分类:低速设备(鼠标、键盘)、中速设备(激光打印机)、高速设备(磁盘、光盘)设备使用特性分类:人机交互设备、存储设备、网络通信设备

设备共享属性分类:独占设备(低速设备一般为独占设备)、共享设备(磁盘)、虚拟设备(Spooling技术)

I/O系统的功能

  1. 能够隐藏I/O设备的细节
    对这些千差万别的I/O设备进行控制,通常会为它们配置相应的设备控制器。这是一种硬件设备,其中包含若干个用于存放控制命令和参数的寄存器。
  2. 能够保证设备无关性
    一方面,用户不仅可以使用抽象的I/O命令,还可以使用抽象的逻辑设备名来使用设备,例如,当用户要输出打印时,他只须提供(读或)写的命令(用于提出对I/O设备的要求)和抽象的逻辑设备名,如/dev/printer,而不必指明具体是哪一台打印机;另一方面,也可以有效地提高OS的可移植性和易适应性。
  3. 能够提高处理机和I/O设备的利用率
    I/O系统的第三方面功能是尽可能地让处理机和I/O设备并行操作,以提高它们的利用率。
  4. 能够对I/O设备进行控制
    对I/O设备进行控制是设备驱动程序的功能之一。目前对I/O设备有4种控制方式:1 轮询的可编程I/O方式;2 中断的可编程I/O方式;3 直接存储器访问(direct memory access,DMA)方式;4 I/O通道方式。
    I/O通道方式的引入,使得对I/O操作的组织和数据的传输,都能独立进行而无需CPU的干预。
  5. 能够确保对设备的正确共享
    1 独占设备,进程应互斥地访问此类设备,即系统一旦把此类设备分配给某进程后,便由该进程独占,直至用完释放。典型的独占设备有打印机、磁带机等。系统在对独占设备进行分配时,还应考虑分配的安全性。
    2 共享设备,是指在一段时间内允许多个进程同时访问的设备。典型的共享设备是磁盘,当有多个进程对磁盘执行读/写操作时,操作可以交叉进行而不会影响到读/写的正确性。
  6. 能够处理错误
    从处理的角度看,可以将错误分为临时性错误和持久性错误。对于临时性错误,可通过重试操作来纠正它;只有在发生了持久性错误时,才需要向上层报告。例如,在磁盘传输数据过程中发生错误,系统并不认为磁盘已发生了故障,而是可以重新传输,一直重传多次后仍然有错,才会认为磁盘发生了故障。由于多数错误是与设备紧密相关的,因此对于错误的处理,应该尽可能地在接近硬件的层面上进行,即低层软件能够解决的错误就不向上层报告,因此高层也就不能感知。只有低层软件解决不了的错误才向上层报告,请求上层软件解决。

I/O设备一般是由执行I/O操作的机械部分和执行I/O控制的电子部件组成的。通常会将这两部分分开,执行I/O操作的机械部分就是一般的I/O设备,而执行I/O控制的电子部件,则称为设备控制器或适配器(adapter)。微机和小型计算机中的控制器,常做成印刷电路卡的形式,因而它也常被称为控制卡、接口卡或网卡,可将它插入计算机的扩展槽中。在有的大、中型计算机系统中,还配置了I/O通道或I/O处理机。

  1. 设备控制器与CPU的接口。用于实现CPU与设备控制器之间的通信。该接口有三类信号线:数据线、地址线和控制线。数据线传送的是读/写数据、控制信息和状态信息;地址线传送的是要访问I/O接口中的寄存器编号;控制线传送的是读/写等控制信号。2)设备控制器与设备的接口。一个设备控制器可以连接一个或多个设备,因此控制器中有一个或多个设备接口。每个接口都可传输数据、控制和状态三种类型的信号。
  2. I/O逻辑。用于实现对设备的控制。它通过一组控制线与CPU交互,对从CPU收到的I/O命令进行译码。CPU启动设备时,将启动命令发送给控制器,同时通过地址线将地址发送给控制器,由控制器的I/O逻辑对地址进行译码,并对所选设备进行控制。设备控制器的主要功能有:1 接收和识别命令,如磁盘控制器能接收CPU发来的读、写、查找等命令;2. 数据交换,包括CPU和控制器之间的数据传输,以及控制器和设备之间的数据传输;3. 标识和报告设备的状态,以供CPU处理;4. 地址识别;5. 数据缓冲;6. 差错控制。

I/O端口 设备控制器中可被CPU直接访问的寄存器

数据寄存器:用于缓存从设备送来的输入数据,或从CPU送来的输出数据。状态寄存器:保存设备的执行结果或状态信息,以供CPU读取。

控制寄存哭:由CPU写入,以使启动命令或更改设备模式。

编址方式 独立编址 操作系统采用特殊I/O指令才能访问 统一编址/内存映射I/O

设备控制器的主要功能是,控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。它是CPU与I/O设备之间的接口,接收从CPU发来的命令,去控制I/O设备工作,使CPU能够从繁杂的设备控制事务中解脱出来。设备控制器是一个可编址的设备,当仅控制一个设备时,它只有一个唯一的设备地址;若设备控制器连接多个设备,则其应含有多个设备地址,每个设备地址对应一个设备。可把设备控制器分成两类:一类是用于控制字符设备的控制器,另一类是用于控制块设备的控制器。

设备控制器的基本功能

  1. 接收和识别命令。设备控制器能接收并识别处理机发来的多种命令。在控制器中具有相应的控制寄存器,用于存放接收的命令和参数,并对所接收的命令进行译码。例如,磁盘控制器可以接收CPU发来的read、write、format等15条不同的命令,而且有些命令还带有参数。相应地,在磁盘控制器中有多个寄存器和命令译码器。
  2. 数据交换。设备控制器能实现CPU与设备控制器之间、设备控制器与设备之间的数据交换。前者通过数据总线,由CPU并行地把数据写入设备控制器,或从设备控制器中并行地读出数据。后者通过寄存器,由设备将数据输入设备控制器,或由设备控制器传送数据给设备。为此,在设备控制器中须设置数据寄存器。
  3. 标志和报告设备的状态。设备控制器会记下设备的状态以供CPU了解。例如,仅当该设备处于发送就绪状态时,CPU才能启动设备控制器从设备中读出数据。为此,在设备控制器中应设置一状态寄存器,用其中的某一位来反映设备的某一种状态。当CPU将该寄存器的内容读入后,便可了解该设备的状态。
  4. 地址识别。设备控制器是一个可编址的设备,其必须能够识别自身所控制的每个设备的地址。当控制一个设备时,其只有一个唯一的设备地址;当控制多个设备时,其含有多个设备地址,并使每个设备地址对应一个设备。此外,为使CPU能向(或从)寄存器中写入(或读出)数据,这些寄存器都应具有唯一的地址。设备控制器应能正确识别这些地址,为此,在设备控制器中应配置地址译码器。(5)数据缓冲区。由于I/O设备的数据传输速率较低,而CPU和内存的速率却很高,故在设备控制器中必须设置一缓冲区。在输出时,用此缓冲区暂存由主机高速传来的数据,然后再以I/O设备所具有的传输速率将缓冲区中的数据传送给I/O设备。在输入时,缓冲区则用于暂存从I/O设备传来的数据,待接收到一批数据后,再将缓冲区中的数据高速地传送给主机。
  5. 差错控制。对于由I/O设备传送来的数据,设备控制器还兼管差错检测。若发现传送中出现了错误,则通常会将差错检测码置位,并向CPU报告,于是CPU将本次传送来的数据作废,并重新进行一次传送。这样便可保证数据输入的正确性。

I/O接口类型

数据传送方式:并行接口、串行接口

主机访问I/O设备控制方式:程序查询接口、中断接口、DMA接口按功能选择灵活化:可编程接口、不可编程接口

虽然在CPU与I/O设备之间增加了设备控制器后,能大大减少CPU对I/O设备的干预,但当主机所配置的I/O设备有很多时,CPU的负担仍然会很重。为此,在CPU和设备控制器之间又增设了通道(channel),其主要目的是建立独立的I/O操作,即不仅使数据的传送能独立于CPU,而且使对I/O操作的组织、管理及其结束处理尽量独立,以保证CPU有更多的时间进行数据处理;或者说,其目的是使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的I/O任务中解脱出来。在设置了通道后,CPU只须向通道发送一条I/O指令。通道在接收到该指令后,便会从内存中取出本次要执行的通道程序,然后执行该程序;仅当通道完成了规定的I/O任务后,才向CPU发送中断信号。

实际上,I/O通道是一种特殊的处理机,它具有执行I/O指令的能力,并能通过执行(I/O)通道程序来控制I/O操作。但I/O通道又与一般的处理机不同,主要表现在以下两个方面:一是I/O通道指令类型单一(这是由通道硬件比较简单所致),其所能执行的命令主要局限于与I/O操作有关的指令;二是I/O通道没有自己的内存,所执行的通道程序是放在主机的内存中的,换言之,是I/O通道与CPU共享内存。

✦I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块以读(或写)为单位的干预,减少为对一组数据块以读(或写)及有关的控制和管理为单位的干预。通道指令与一般的机器指令不同,在它的每条指令中都包含了下列信息。

  1. 操作码,规定了指令所执行的操作,如读、写、控制等。
  2. 内存地址,表示字节送入内存(读操作)和从内存取出数据(写操作)时的内存起始地址。
  3. 计数,表示本条指令所要读(或写)的数据的字节数。
  4. 通道程序结束位P,用于表示通道程序是否结束; P = 1 P=1 P=1 表示本条指令是通道程序的最后一条指令。
  5. 记录结束标志 R , R = 0 R,R=0 R,R=0 表示本通道指令与下一条指令所处理的数据同属于一个记录, R = 1 R=1 R=1 表示这是处理某记录的最后一条指令。
B. I/O控制方式:轮询方式,中断方式,DMA方式

I/O控制方式

程序直接控制 采取轮询的I/O方式 程序轮询访问 直到确定该字(节)已在设备控制器的数据寄存器中中断驱动方式 CPU发出读/写命令后,等待I/O进程阻塞

DMA方式(直接存储器存取)仅在传送一个或多个数据块的开始和结束,才需要CPU干预为了实现主机和控制器之间直接交换成块的数据,须在DMA控制器中设置如下4类寄存器:1)命令/状态寄存器(CR)。暂存从CPU发来的I/O命令,或设备的状态信息。

  1. 内存地址寄存器(MAR)。在输入时,它存放将数据从设备传送到内存的起始目标地址;

在输出时,它存放由内存到设备的内存源地址。

  1. 数据寄存器(DR)。暂存从设备到内存,或从内存到设备的数据。

  2. 数据计数器(DC)。存放本次要传送的字(节)数。

每次读/写一个或多个块(每次读写的只能是连续的多个块)且读入内存后在内存中也必须是连续的

DMA控制器由3部分组成:主机与DMA控制器的接口;DMA控制器与块设备的接口;I/O控制逻辑。

为了实现在主机与DMA控制器之间直接交换成块的数据,必须在DMA控制器中设置如下4类寄存器:1命令寄存器(commandregister,CR),用于接收从CPU发来的I/O命令,或有关控制信息,或设备的状态;2. 内存地址寄存器(memory address register,MAR),在输入时,它存放把数据从设备传送到内存的起始目标地址,在输出时,它存放由内存到设备的内存源地址;3. 数据寄存器(dataregister,DR),用于暂存从设备到内存或从内存到设备的数据;4. 数据计数器(data counter,DC),用于存放本次CPU要读或写的字(节)数。

C. I/O软件层次结构:中断处理程序,驱动程序,设备独立性软件,用户层I/O软件

通常把"I/O软件"组织成4个层次,图中的箭头表示I/O的控制流。(1)用户层软件,用于提供与用户交互的接口,用户可直接调用该层所提供的与I/O操作有关的库函数对设备进行操作。

  1. 与设备无关的I/O软件,用于实现用户程序与设备驱动程序的统一接口、设备命名、设备保护以及设备的分配与释放等,同时为设备管理和数据传输提供必要的存储空间。

  2. 设备驱动程序,与硬件直接相关,用于执行系统对I/O设备发出的操作指令,换言之,是驱动I/O设备工作的驱动程序。

  3. 中断处理程序,用于保存被中断进程的CPU现场环境,保存完成后转入相应的中断处理程序处理中断,处理完成后再恢复被中断进程的CPU现场环境,最后返回被中断进程。

  1. I/O系统的上/下接口。
    1 I/O系统接口。上接口是I/O系统接口,它是I/O系统与上层系统之间的接口,向上层系统提供对设备进行操作的抽象I/O命令,以方便上层系统对设备进行使用。有不少OS在用户层提供了与I/O操作有关的库函数供用户使用。在上层系统中有文件系统、虚拟存储器系统以及用户进程等。
    2 软件/硬件接口。下接口是软件/硬件接口。它的上面是中断处理程序和用于不同设备的设备驱动程序。它的下面是各种设备的控制器,如CD-ROM控制器、硬盘控制器、键盘控制器、打印机控制器以及网络控制器等,它们都属于硬件。由于设备种类繁多,故该接口相当复杂。
  2. I/O系统的分层。 与前面所述的I/O软件的分层相对应,I/O系统本身也可分为以下3个层次。
    1 中断处理程序。它处于I/O系统的最低层,直接与硬件进行交互。当有I/O设备发来中断请求信号时,在中断硬件做了初步处理后,便转向中断处理程序。它首先保存被中断进程的CPU现场环境,然后转入相应设备的中断处理程序处理中断,在中断处理完成后又恢复被中断进程的CPU现场环境,并返回断点继续运行。
    2 设备驱动程序。它处于I/O系统的次低层,是进程和设备控制器之间的通信程序,其主要功能是:将上层发来的抽象I/O请求转换为针对I/O设备的具体命令和参数,并把它们装入设备控制器中的命令寄存器和参数寄存器中,或者相反。由于设备之间的差异很大,每类设备的驱动程序都不同,故必须由设备制造厂商提供设备驱动程序,而不是由OS设计者来设计。因此,每当在系统中增加一个新设备时,都需要由设备制造厂商提供新的驱动程序。
    3 与设备无关的I/O软件。在现代OS的I/O系统中,I/O软件基本上都实现了与设备无关性,因此它们也称为与设备无关的软件,其基本含义是:I/O软件独立于具体使用的物理设备。由此带来的最大好处是:提高了I/O系统的可适应性和可扩展性,使它们能应用于许多类型的设备,而且在每次增加新设备或替换老设备时,都不需要对I/O软件进行修改,这样就方便了系统的更新和扩展。与设备无关的I/O软件的内容包括设备命名、设备分配、数据缓冲和数据高速缓冲等。

为了实现I/O系统的上层与设备控制器之间的通信,设备驱动程序应具有以下功能:

  1. 接收由与设备无关的软件发来的命令和参数,并将命令中的抽象I/O要求转换为与设备相关的低层操作序列;
  2. 检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置I/O设备的工作方式;
  3. 发出I/O命令,如果I/O设备空闲,则立即启动它,完成指定的I/O操作;如果I/O设备忙碌,则将请求者的请求块挂在I/O设备队列上等待;4. 及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。

设备驱动程序属于低级系统程序,它与一般的应用程序及系统程序之间有下述明显差异:

  1. 设备驱动程序是实现在与设备无关的软件和设备控制器之间通信和转换的程序,具体说,它将抽象的I/O请求转换成具体的I/O操作后传送给设备控制器,又把设备控制器中所记录的设备状态和I/O操作的完成情况及时地反映给请求I/O的进程;
  2. 设备驱动程序与设备控制器以及I/O设备的硬件特性紧密相关,对于不同类型的I/O设备,应配置不同的设备驱动程序,但可以为相同的多个I/O设备设置一个设备驱动程序;
  3. 设备驱动程序与I/O设备所采用的I/O控制方式紧密相关,常用的I/O控制方式是中断驱动I/O方式和DMA方式;
  4. 由于设备驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言书写,目前有很多设备驱动程序的基本部分都已固化在ROM中;5. 设备驱动程序应允许可重入,一个正在运行的设备驱动程序常会在一次调用完成前被再次调用。

在不同的OS中,所采用的设备处理方式并不完全相同。根据在设备处理时是否设置进程以及设置什么样的进程,可将设备处理方式分成3类。

  1. 为每类设备设置一个进程,专门用于执行这类设备的I/O操作。例如,为所有的交互式终端设置一个交互式终端进程;再如,为同一类型的打印机设置一个打印进程。这种方式比较适合于较大的系统。
  2. 在整个系统中设置一个I/O进程,专门用于执行系统中各类设备的I/O操作;也可以设置一个输入进程和一个输出进程,分别处理系统中的输入操作和输出操作。
  3. 不设置专门的设备处理进程,而只为各类设备设置相应的设备驱动程序,供用户或系统进程调用。这种方式目前用得较多。

设备驱动程序的执行过程

  1. 将抽象要求转换为具体要求
    例如,将抽象要求中的盘块号转换为磁盘的盘面号、磁道号及扇区号。而这一转换工作只能由设备驱动程序来完成,因为在OS中只有设备驱动程序是同时了解抽象要求和设备控制器中的寄存器情况的,也只有它才知道命令、数据和参数应分别送往哪个寄存器。2. 校验服务请求
  2. 检查设备的状态
    在每个设备控制器中都配置有一个状态寄存器。设备驱动程序在启动设备之前,要先把状态寄存器中的内容读入CPU的某个寄存器中,通过测试寄存器中的不同位来了解设备的状态。
  3. 传送必要的参数
  4. 启动I/O设备
    在多道程序系统中,设备驱动程序一旦发出I/O命令、启动一个I/O操作后,其便会把控制权返回给I/O系统,把自己阻塞起来,直到中断到来时再被唤醒。具体的I/O操作是在设备控制器的控制下进行的,因此,在设备忙于传送数据时,CPU可以去干其他的事情,实现了CPU与I/O设备的并行操作。

设备驱动程序与外界的接口可分为3部分:设备驱动程序与OS内核的接口、设备驱动程序与系统引导的接口、设备驱动程序与设备的接口。

设备驱动程序的组成

  1. 设备驱动程序的注册与注销。(2)设备的打开与释放。
  2. 设备的读/写操作。
  3. 设备的控制操作。
  4. 设备的中断与轮询。
D. 输入/输出应用程序接口:字符设备接口,块设备接口,网络设备接口,阻塞/非阻塞I/O
  1. 块设备接口 块设备接口是块设备管理程序与上层之间的接口。该接口反映了大部分磁盘存储器、光盘存储器、闪存等的本质特征,
    用于控制该类设备的I/O。
  2. 块设备。所谓块设备,是指数据的存取和传输都是以数据块为单位的设备。典型的块设备是磁盘。该设备的基本特征是传输速率较高,通常为每秒几十MB到几百MB。另一特征是可寻址,即能指定数据的输入源地址以及输出的目标地址,可随机读/写磁盘中的任一块;磁盘设备的I/O通常采用DMA方式。
  3. 隐藏了磁盘的二维结构。块设备接口将磁盘上的所有扇区从0到n-1依次编号,n是磁盘中的扇区总数。经过这样编号后,就可以把磁盘的二维结构变为线性序列。在二维结构中,每个扇区的地址需要用磁道号和扇区号来表示,换言之,块设备接口隐藏了磁盘地址是二维结构的这一情况。
  4. 将抽象命令映射为低层操作。块设备接口支持上层发来的、面向文件或设备的打开、读、写和关闭等抽象命令。该接口将上述命令映射为设备能识别的较低层的具体操作,例如,上层发来读磁盘命令时,它会先将抽象命令中的逻辑块号转换为磁盘的盘面号、磁道号和扇区号等。
    虚拟存储器系统也需要使用块设备接口,因为在进程运行期间,每当它所访问的页面不在内存中时,便会发生缺页中断,此时就需要利用I/O系统(通过块设备接口)从磁盘存储器中将所缺页面调入内存。
  5. 流设备接口 流设备接口是流设备管理程序与上层之间的接口。该接口又称为字符设备接口,它反映了大部分字符设备的本质特征,
    用于控制字符设备的I/O。
  6. 字符设备。所谓字符设备,是指数据的存取和传输是以字符(字节)为单位的设备,如键盘、打印机等。字符设备的基本特征是传输速率较低,通常为每秒几B至数千B。其另一特征是不可寻址,即不能指定数据的输入源地址以及输出的目标地址。字符设备在I/O时通常采用中断驱动I/O方式。
  7. get操作和put操作。由于字符设备是不可寻址的,因而对它只能采取顺序存取方式。通常会为字符设备建立一个字符缓冲区(队列),设备的I/O字节流顺序地进入字符缓冲区(读入),或从字符缓冲区顺序地送出到设备(输出)。用户程序获取或输出字节的方法是采用get操作和put操作。get操作用于从字符缓冲区取得一个字节(到内存),并将它返回给调用者。而put操作则用于将一个新字节(从内存)输出到字符缓冲区,以待送出到设备。
  8. in-control指令。因字符设备的类型非常多,且差异甚大,所以为了以统一的方式来处理它们,通常会在字符设备接口中提供一种通用的in-control指令。该指令中包含了许多参数,每个参数均表示一个与具体设备相关的特定功能。
    因为大多数字符设备都属于独占设备,所以必须采取互斥方式实现共享。为此,字符设备接口提供了打开操作和关闭操作。在使用此类设备时,必须先用打开操作来打开设备。如果设备已被打开,则表示它正被其他进程使用。
  9. 网络通信接口
    在现代OS中,都提供了面向网络的功能。但首先还需要通过某种方式,把计算机连接到网络上。同时OS也必须提供相应的网络软件和网络通信接口,以使计算机能通过网络同网络上的其他计算机进行通信,或上网浏览信息。

阻塞I/O和非阻塞I/O

阻塞I/O 是指当用户进程调用I/O操作时,进程就被阻塞,并移到阻塞队列,I/O操作完成后,进程才被唤醒,移到就绪队列。当进程恢复执行时,它收到系统调用的返回值,并继续处理数据。大多数操作系统提供的I/O接口都是采用阻塞I/O。

非阻塞I/O是指当用户进程调用I/O操作时,不阻塞该进程,但进程需要不断询问I/O操作是否完成,在I/O执行阶段,进程还可以做其他事情。当问到I/O操作完成后,系统将数据从内核复制到用户空间,进程继续处理数据。

2. 设备独立软件

A. 缓冲区管理

磁盘高速缓存逻辑上属于磁盘,物理上是驻留在内存中的盘块。

磁盘高速缓存在内存中分为两种形式:一种是在内存中开辟一个单独的空间作为缓存区,大小固定;另一种是将未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘I/O时共享。

在设备管理子系统中,引入缓冲区的目的主要如下:

  1. 缓和CPU与I/O设备间速度不匹配的矛盾。
  2. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。3)解决基本数据单元大小(数据粒度)不匹配的问题。4)提高CPU和I/O设备之间的并行性。

缓冲区的实现方法如下:

  1. 采用硬件缓冲器,但由于成本太高,除一些关键部位外,一般不采用硬件缓冲器。2)利用内存作为缓冲区。

单缓冲双缓冲如果在实现两台机器之间的通信时仅为它们设置了单缓冲区,那么它们之间在任一时刻都只能实现单方向的数据传输。为了实现双向数据传输,必须在两台机器中都设置两个缓冲区,一个用作发送缓冲区,另一个用作接收缓冲区。循环缓冲

  1. Nexti指针追赶上Nextg指针。这意味着输入进程输入数据的速度大于计算进程处理数据的速度,已把全部可用的空缓冲区装满,再无缓冲区可用。此时,输入进程应阻塞,直到计算进程把某个缓冲区中的数据全部提取完,使之成为空缓冲区R,并调用Releasebuf过程将它释放后,才可将输入进程唤醒。这种情况被称为"系统受计算限制"。
  2. Nextg指针追赶上Nexti指针。这意味着输入数据的速度小于计算进程处理数据的速度,使装有输入数据的缓冲区都被抽空,再无装有数据的缓冲区供计算进程提取数据。这时,计算进程只能阻塞,直至输入进程又装满某个缓冲区,并调用Releasebuf过程将它释放后,才可将计算进程唤醒。这种情况被称为"系统受I/O限制"。

缓冲区仅是一组内存块的链表,而缓冲池则是包含了一个用于管理自身的数据结构和一组操作函数的管理机制,用于管理多个缓冲区。缓冲池管理着多个缓冲区,每个缓冲区由用于标志和管理的缓冲首部以及用于存放数据的缓冲体两部分组成。缓冲首部一般包括缓冲区号、设备号、设备上的数据块号、同步信号量以及队列链接指针等。为了管理上的方便,一般将缓冲池中具有相同类型的缓冲区链接成一个队列,于是可形成3个队列。

  1. 空白缓冲队列emq:这是由空缓冲区所链成的队列,其队首指针F(emq)和队尾指针L(emq)分别指向该队列的首缓冲区和尾缓冲区。2. 输入队列inq:这是由装满输入数据的缓冲区所链成的队列,其队首指针F(inq)和队尾指针L(inq)分别指向输入队列的队首缓冲区和队尾缓冲区。
  2. 输出队列outq:这是由装满输出数据的缓冲区所链成的队列,其队首指针F(outq)和队尾指针L(outq)分别指向该队列的队首缓冲区和队尾缓冲区。
    除了上述3个队列外,还应具有4种工作缓冲区:用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区、用于收容输出数据的工作缓冲区以及用于提取输出数据的工作缓冲区。
  3. 收容输入。输入进程需要输入数据时,从空缓冲队列的队首摘下一个空缓冲区,作为收容输入工作缓冲区,然后将数据输入其中,装满后再将它挂到输入队列的队尾。
  4. 提取输入。计算进程需要输入数据时,从输入队列的队首取得一个缓冲区,作为提取输入工作缓冲区,从中提取数据,用完该数据后将它挂到空缓冲队列的列尾。
  5. 收容输出。计算进程需要输出数据时,从空缓冲队列的队首取得一个空缓冲区,作为收容输出工作缓冲区,当其中装满数据后,再将它挂到输出队列的队尾。
  6. 提取输出。输出进程需要输出数据时,从输出队列的队首取得一个装满输出数据的缓冲区,作为提取输出工作缓冲区,当数据提取完后,再将它挂到空缓冲队列的队尾。

缓存和缓冲的区别:缓冲可以保存数据项的唯一的现有版本;缓存只提供一个位于其他地方的数据项的更快存储副本。

B. 设备分配与回收

设备控制表(DCT):系统为每个设备配置一张DCT,表中的表项就是设备的各个属性,设备类型:表示设备类型,如打印机、扫描仪、键盘等。

设备标识符:即物理设备名,每个设备在系统中的物理设备名是唯一的。设备状态:表示当前设备的状态(忙/闲)。

指向控制器表的指针:每个设备由一个控制器控制,该指针指向对应的控制器表。重复执行次数或时间:重复执行次数达到规定值仍不成功时,才认为此次I/O失败。设备队列的队首指针:指向正在等待该设备的进程队列(由进程PCB组成)的队首。

控制器控制表(COCT):每个设备控制器都对应一张COCT。操作系统根据 COCT的信息对控制器进行操作和管理。每个控制器由一个通道控制,通过表项"与控制器连接的通道表指针"可以找到相应通道的信息。

通道控制表(CHCT):每个通道都对应一张 CHCT。操作系统根据CHCT 的信息对通道进行操作和管理。一个通道可为多个控制器服务,通过表项"与通道连接的控制器表首址"可以找到该通道管理的所有控制器的信息。

系统设备表(SDT):整个系统只有一张SDT。它记录已连接到系统中的所有物理设备的情况,每个物理设备对应一个表目。

设备分配考虑因素设备的固有属性

  1. 独占设备:将它分配给某个进程后,便由该进程独占,直至进程完成或释放该设备。
  2. 共享设备:可将它同时分配给多个进程,需要合理调度各个进程访问该设备的先后次序。
  3. 虚拟设备:虚拟设备属于可共享设备,可将它同时分配给多个进程使用。
    设备分配算法 FCFS算法 最高优先级优先算法
    设备分配中的安全性 防止进程发生死锁 安全分配方式;不安全分配方式 I/O请求 阻塞态,完成I/O唤醒

下面以独占设备为例,介绍设备分配的过程。

  1. 分配设备。首先根据I/O请求中的物理设备名,查找SDT,从中找出该设备的DCT,再根据DCT中的设备状态字段,可知该设备的状态。若忙,则将进程PCB挂到设备等待队列中;若不忙,则根据一定的策略将设备分配给该进程。
  2. 分配控制器。设备分配后,根据DCT找到COCT,查询控制器的状态。若忙,则将进程PCB挂到控制器等待队列中;若不忙,则将控制器分配给该进程。
  3. 分配通道。控制器分配后,根据COCT找到CHCT,查询通道的状态。若忙,则将进程PCB 挂到通道等待队列中;若不忙,则将通道分配给该进程。
    只有设备、控制器和通道都分配成功时,这次的设备分配才算成功,之后便可启动设备进行数据传送。

逻辑设备表(Logical Unit Table,LUT)的每个表项中包含3项内容:逻辑设备名、物理设备名和设备驱动程序的入口地址。1)整个系统中只设置一张LUT。

  1. 为每个用户设置一张LUT。
C. 假脱机技术(SPOOLing)

SPOOLing技术/假脱机技术 空间换时间 将独占设备改造成共享设备

通过多道程序技术可将一台物理CPU虚拟为多台逻辑CPU,从而允许多个用户共享一台主机,那么通过假脱机技术就可以将一台物理I/O设备虚拟为多台逻辑I/O设备。

假脱机系统建立在通道技术和多道程序技术的基础上,以高速随机外存(通常为磁盘)为后援存储器,其主要由4部分组成。

  1. 输入井和输出井。这是在磁盘上开辟出来的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。输入井/输出井中的数据一般以文件的形式组织管理,我们把这些文件称为井文件。一个文件仅存放某一个进程的输入(或输出)数据,所有进程的数据输入(或输出)文件可链接成为一个输入(或输出)队列。
  2. 输入缓冲区和输出缓冲区。这是在内存中开辟的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾。输入缓冲区用于暂存由输入设备传送来的数据,之后再将其传送到输入井。输出缓冲区用于暂存从输出井传送来的数据,之后再将其传送到输出设备。
  3. 输入进程和输出进程。输入进程,也称为预输入进程,用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井。当CPU须输入数据时,直接从输入井读入内存。输出进程,也称为缓输出进程,用于模拟脱机输出时的外围控制机,把用户要求输入的数据从内存传送(并存放)到输出井,待输出设备空闲时,再将输出井中的数据经输出缓冲区输出至输出设备。
  4. 井管理程序。用于控制作业与磁盘井之间信息的交换。当作业执行过程中向某台设备发出启动输入或输出操作请求时,由OS调用井管理程序,由该程序控制输入井读取信息或将信息输出至输出井。

假脱机打印机系统主要包含以下3部分。

1 磁盘缓冲区,是在磁盘上开辟的一个存储空间,用于暂存用户程序的输出数据,在该缓冲区中可以设置几个盘块队列,如空盘块队列、满盘块队列等。

2 打印缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾,设置在内存中,用于暂存从磁盘缓冲区发送来的数据,以后会再传送给打印设备进行打印。

3 假脱机管理进程和假脱机打印进程。由假脱机管理进程为每个要求打印的用户数据建立一个假脱机文件,并把它放入假脱机文件队列中,由假脱机打印进程依次对队列中的文件进行打印。

每当用户进程发出打印输出请求时,假脱机打印机系统并不会立即把打印机分配给该用户进程,而是会由假脱机管理进程完成两项工作:1 在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存;

2 为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到假脱机文件队列上。

取消该方案中的假脱机管理进程,为打印机建立一个守护进程,由它实现一部分原来由假脱机管理进程实现的功能,如为用户在磁盘缓冲区中申请一个空闲盘块,并将要打印的数据送入其中,将该盘块的起始地址返回给请求进程。另一部分功能由请求进程自己实现,每个要求打印的进程,首先生成一份要求打印的文件,其中包含对打印的要求和指向装有打印输出数据盘块的指针等信息,然后将用户请求打印文件放入假脱机文件队列(目录)中。

守护进程是允许使用该独占设备的唯一进程,所有其他进程都不能直接使用该设备,而只能将对该设备的使用要求写入一份文件中,并将该文件放在假脱机目录中。

D. 设备驱动程序接口

设备驱动程序是I/O系统的上层与设备控制器之间的通信程序,其主要任务是接收上层应用发来的抽象I/O请求,如read或write命令,将它们转换为具体要求后发送给设备控制器,进而使其启动设备去执行任务;反之,它也将设备控制器发来的信号传送给上层应用。

I/O操作例子

3. 外存管理

A. 磁盘:磁盘结构,格式化,分区,磁盘调度算法

磁盘地址 柱面号 盘面号 扇区号

磁盘初始化 分扇区(头部、数据区域、尾部组成)头部和尾部包含磁盘控制器的使用信息 低级格式化(物理格式化)CRC字段对扇区检验

分区 磁盘分区(C盘、D盘)

物理分区 逻辑格式化(高级格式化)将多个相邻扇区组合在一块 簇 Linux中为块

引导块 初始化程序(自举程序)

MBR 引导代码 分区表(引导分区) 标志

坏块 简单磁盘 FAT表会标出

复杂磁盘 控制器维护磁盘内部的坏块列表

磁盘存取时间 寻道时间TS+旋转延迟时间Tr+传输时间Tt

磁盘调度算法

先来先服务FCFS 最短寻道时间优先SSTF 扫描SCAN 电梯调度 Look调度 循环扫描 C-SCAN C-Look调度减少延迟时间方法 交替编号 同一盘面 错位命名 不同盘面

提高磁盘I/O速度的方法

  1. 采用磁盘高速缓存。
  2. 调整磁盘请求顺序。
  3. 提前读。在读磁盘当前块时,将下一磁盘块也读入内存缓冲区。
  4. 延迟写。仅在缓冲区首部设置延迟写标志,然后释放此缓冲区并将其链入空闲缓冲区链表的尾部,当其他进程申请到此缓冲区时,才真正将缓冲区信息写入磁盘块。
  5. 优化物理块的分布。除了上面介绍的扇区编号优化,当文件采用链接方式和索引方式组织时,应尽量将同一个文件的盘块安排在一个磁道或相邻的磁道上,以减少寻道时间。另外,将若干盘块组成簇,按簇对文件进行分配,也可减少磁头的平均移动距离。6)虚拟盘。是指用内存空间去仿真磁盘,又叫RAM盘。常用于存放临时文件。
  6. 采用磁盘阵列RAID。因为可以采用并行交叉存取,所以能大幅提高磁盘I/O速度。

磁盘高速缓存,是指在内存中为磁盘盘块所设置的一个缓冲区,在该缓冲区中保存了某些盘块的副本。当出现一个磁盘访问请求时,由内核先去查看所请求的盘块内容是否已在磁盘高速缓存中,如果在,则可从磁盘高速缓存中直接获取,这样就省去了启动磁盘的操作,而且可使本次访问速度提高几个数量级;如果不在,则需要启动磁盘以将所需要的盘块内容读入,并把读入的盘块内容送到磁盘高速缓存中,以便于以后又需要访问该盘块的内容时直接从磁盘高速缓存中获取。

如果I/O请求所需要的数据能从磁盘高速缓存中获取,则此时需要将磁盘高速缓存中的数据传送给请求进程。所谓的数据交付(datadelivery),是指将磁盘高速缓存中的数据传送给请求进程。系统可以采取两种方式将数据交付给请求进程:

  1. 数据交付,即直接将磁盘高速缓存中的数据传送到请求进程的内存工作区中;
  2. 指针交付,即只将指向磁盘高速缓存中某区域的指针交付给请求进程。
    后一种方式由于所传送的数据量少,因而节省了数据从磁盘高速缓存传递到进程的内存工作区的时间。

在有的系统中便将磁盘高速缓存中的所有盘块数据拉成了一条LRU链。

对于那些会严重影响数据一致性的盘块数据和很久都可能不再使用的盘块数据,将它们都放在LRU链的头部,使它们能被优先写回磁盘,以减少发生数据不一致情况的概率,同时可以尽早地腾出磁盘高速缓存的空间。对于那些可能在不久之后便要再使用的盘块数据,将它们挂在LRU链的尾部,以便在以后需要时,只要该盘块中的数据尚未被写回磁盘,便可直接从LRU链中找到它们。

根据LRU置换算法,那些经常要被访问的盘块数据可能会一直保留在磁盘高速缓存中,长期不会被写回磁盘。这是因为LRU链中的任一元素在被访问之后,都会被挂到链的尾部而不被写回磁盘,只有一直未被访问的元素才有可能移到链的头部而被写回磁盘。为了解决这一问题,在UNIX系统中专门增设了一个修改(update)程序在后台运行。该程序会周期性地调用一个SYNC,其主要功能是强制性地将所有在磁盘高速缓存中已修改的盘块数据写回磁盘。一般会把两次调用SYNC的时间间隔定为30s,这样,系统故障所造成的工作损失就不会超过30s的工作量。

  1. RAID 0级。该级仅提供并行交叉存取功能。RAID 0级的主要优点是能够实现高效传输,并能实现高速I/O请求;主要缺点是无冗余校验功能,致使磁盘系统的可靠性并不是很高。只要阵列中有一个磁盘损坏,便会造成不可弥补的数据丢失。因此,该级较少使用。(2)RAID 1级。该级具有磁盘镜像功能,例如,当磁盘阵列中具有8个盘时,可将其中的4个作为数据盘,另外4个作为镜像盘,在每次访问磁盘时,可利用并行读/写特性将数据分块同时写入数据盘和镜像盘。RAID 1级的主要优点是可靠性好,且从故障中恢复很简单;主要缺点是磁盘容量的利用率只有50%。RAID 1级的优点是以牺牲磁盘容量为代价而获得的。
  2. RAID 2级。该级也称为内存方式的差错纠正组织。内存系统长期以来实现了基于奇偶位的错误检测,内存中的每个字节都是一个关联的奇偶位,以记录字节中为1的个数是偶数还是奇数。如果字节的某一个位发生了损坏(或是1变成0,或是0变成1),则字节的奇偶校验位就会改变,这会使其与所存储的奇偶校验位不再匹配。类似地,如果存储的奇偶校验位损坏,则它就会与计算的奇偶校验位不再匹配。因此,单个位的差错可被内存系统检测出来。
  3. RAID 3级。该级所对应的RAID是具有并行传输功能的磁盘阵列。它只利用一个奇偶校验盘来实现数据的校验功能。例如,当阵列中只有7个盘时,可将6个盘作为数据盘,剩余的1个盘作为校验盘。磁盘的利用率为 6 / 7 6/7 6/7(约85.7%)
  4. RAID 4级。该级与块交错奇偶校验结构均采用块级分条,这与RAID 0级一样;此外,该级会在一个单独的磁盘上保存其他N个磁盘的块的奇偶校验块。如果有一个磁盘出现故障,则可以通过奇偶校验块和其他磁盘的相应块恢复故障磁盘的块。
  5. RAID 5级。该级所对应的RAID是具有独立传送功能的磁盘阵列。每个驱动器都有各自独立的数据通路,独立地进行读/写,且无专门的校验盘。用来进行纠错的校验信息是以螺旋(spiral)方式散布在所有数据盘上的。
  6. RAID 6级和RAID 7级。这两级是强化后的RAID。在RAID 6级的磁盘阵列中,设置了一个专用的、可快速访问的异步校验盘,该盘具有独立的数据通路,具有比RAID 3级与RAID5级更好的性能,但其性能改进得很有限且代价较大。RAID 7级是对RAID 6级的改进,在该级的磁盘阵列中,所有磁盘都具有较高的传输速率和优异的性能。

提高磁盘可靠性的技术

磁盘容错技术可分成三个级别:第一级容错技术是指低级磁盘容错技术;第二级容错技术是指中级磁盘容错技术;第三级容错技术是指基于集群系统的容错技术,该技术也被人们称为系统容错(system fault tolerant,SFT)技术。

第一级容错技术(SFT-I)是最基本的一种磁盘容错技术,主要用于防止因磁盘表面缺陷所造成的数据丢失。它包含双份目录、双份FAT、热修复重定向以及写后读校验等措施。

  1. 双份目录和双份 FAT
    在磁盘上存放的文件目录和FAT,是管理文件时所用的重要数据结构。为了防止这些表格被破坏,可以在不同的磁盘上或磁盘的不同区域中分别建立(双份)文件目录和FAT,其中一份为主文件目录及主FAT,另一份为备份文件目录及备份FAT。一旦由于磁盘表面缺陷而造成主文件目录或主FAT损坏,系统便会自动启用备份文件目录或备份FAT,从而可以保证磁盘上的数据仍可访问。
  2. 热修复重定向和写后读校验
    由于磁盘价格昂贵,当磁盘表面有少量缺陷时,可在采取某种补救措施后继续使用。一般主要可以采取以下两种补救措施。1. 热修复重定向:系统将磁盘容量的很小一部分(如2%~3%)作为热修复重定向区,用于存放发现磁盘有缺陷时的待写数据,并对写入该区的所有数据进行登记,以便今后对这些数据进行快速访问。
  3. 写后读校验:为保证写入磁盘的所有数据都能写到完好的盘块中,应该在每次向磁盘中写入一个数据块后立即将它读出来,并送至另一缓冲区中,再将该缓冲区的内容与内存缓冲区中写后仍保留的数据进行比较,若两者一致,则认为此次写入成功;否则重写。若重写后两者仍不一致,则认为该盘块有缺陷,此时便将应写入该盘块的数据写入热修复重定向区。

第二级容错技术(SFT-I)主要用于防止系统因磁盘驱动器和磁盘控制器故障而无法正常工作这一情况的发生。此级容错技术具体可分为磁盘镜像和磁盘双工。

  1. 磁盘镜像
    当采用磁盘镜像方式时,在每次向主磁盘写入数据后,都需要将数据再写到备份磁盘上,以使两个磁盘上具有完全相同的位像图。2. 磁盘双工
    如果控制上述两台磁盘驱动器的磁盘控制器发生故障,或主机到磁盘控制器之间的通道发生故障,则磁盘镜像功能就起不到保护数据的作用了。因此,在第二级容错技术中又增加了磁盘双工(disk duplexing)功能,即将两台磁盘驱动器分别接到两个磁盘控制器上,同样使这两个磁盘控制器镜像成对。

在进入20世纪90年代后,为了进一步增强服务器的可用性,采用了多台对称多处理机服务器来实现集群系统服务器的功能。所谓集群,是指由一组互连的自主计算机组成统一的计算机系统,给人们的感觉是,它们是一台机器。利用集群系统不仅可提高系统的并行处理能力,还可提高系统的可用性。它们是当前使用最广泛的一类具有容错功能的集群系统,主要工作模式有3种:双机热备份模式、双机互为备份模式、公用磁盘模式。

B. 固态硬盘:读/写性能特效,磨损均衡

固态硬盘SSD 基于闪存技术的存储器 属于电可擦除ROM EEPROM

组成:闪存翻译层 负责翻译逻辑块号 找到对应页Page

存储介质:多个闪存芯片(Flashchip)

每个芯片包含多个块(block)

每个块包含多个页(page)

读写性能:页为单位读写 磁盘扇区

特性:块 擦除 写一次 读无数次

支持随机访问 闪存翻译层 地址转换 逻辑------>物理 读快写慢

由一个或多个闪存翻译层组成

替代传统磁盘中机械驱动器 将来自CPU的逻辑块读/写请求翻译成对底层物理设备读/写控制信号~磁盘控制器数据以页为单位读/写 以块为单位擦除

磨损均衡 动态磨损均衡 静态磨损均衡 若闪存块承担以读为主的存储任务

总结(本章速记)

本章知识骨架:

    1. 输入/输出(I/O)管理基础
    • A. 设备:设备的基本概念,设备的分类,I/O接口
    • B. I/O控制方式:轮询方式,中断方式,DMA方式
    • C. I/O软件层次结构:中断处理程序,驱动程序,设备独立性软件,用户层I/O软件
    • D. 输入/输出应用程序接口:字符设备接口,块设备接口,网络设备接口,阻塞/非阻塞I/O
    1. 设备独立软件
    • A. 缓冲区管理
    • B. 设备分配与回收
    • C. 假脱机技术(SPOOLing)
    • D. 设备驱动程序接口
    1. 外存管理
    • A. 磁盘:磁盘结构,格式化,分区,磁盘调度算法
    • B. 固态硬盘:读/写性能特效,磨损均衡

关键速记清单:

  • 信息交换单位分类:块设备、字符设备
  • I/O系统的功能
  • 能够隐藏I/O设备的细节
  • 能够保证设备无关性
  • 能够提高处理机和I/O设备的利用率
  • 能够对I/O设备进行控制
  • 能够确保对设备的正确共享
  • 能够处理错误
  • I/O端口 设备控制器中可被CPU直接访问的寄存器
  • 控制寄存哭:由CPU写入,以使启动命令或更改设备模式。
  • 设备控制器的基本功能
  • I/O接口类型
  • 数据传送方式:并行接口、串行接口
  • 通道指令与一般的机器指令不同,在它的每条指令中都包含了下列信息。
  • 1 操作码,规定了指令所执行的操作,如读、写、控制等。
  • 3计数,表示本条指令所要读(或写)的数据的字节数。
  • I/O控制方式
  • 在输出时,它存放由内存到设备的内存源地址。
  • 数据寄存器(DR)。暂存从设备到内存,或从内存到设备的数据。
  • 数据计数器(DC)。存放本次要传送的字(节)数。
  • I/O系统的上/下接口。
  • 设备驱动程序的执行过程
  • 将抽象要求转换为具体要求
  • 检查设备的状态
  • 传送必要的参数
  • 启动I/O设备
  • 设备驱动程序的组成
  • 设备驱动程序的注册与注销。(2)设备的打开与释放。
  • 设备的读/写操作。
  • 设备的控制操作。
  • 设备的中断与轮询。
  • 用于控制该类设备的I/O。
  • 用于控制字符设备的I/O。
  • 网络通信接口
  • 阻塞I/O和非阻塞I/O
  • 磁盘高速缓存逻辑上属于磁盘,物理上是驻留在内存中的盘块。
  • 在设备管理子系统中,引入缓冲区的目的主要如下:
  • 缓和CPU与I/O设备间速度不匹配的矛盾。
  • 缓冲区的实现方法如下:
  • 循环缓冲
  • 设备分配考虑因素
  • 设备的固有属性
  • 虚拟设备:虚拟设备属于可共享设备,可将它同时分配给多个进程使用。
  • 设备分配算法 FCFS算法 最高优先级优先算法
  • 下面以独占设备为例,介绍设备分配的过程。
  • 为每个用户设置一张LUT。
  • 假脱机打印机系统主要包含以下3部分。
  • I/O操作例子
  • 磁盘地址 柱面号 盘面号 扇区号
  • 分区 磁盘分区(C盘、D盘)
  • 引导块 初始化程序(自举程序)
  • MBR 引导代码 分区表(引导分区) 标志
  • 坏块 简单磁盘 FAT表会标出
  • 复杂磁盘 控制器维护磁盘内部的坏块列表
  • 磁盘存取时间 寻道时间TS+旋转延迟时间Tr+传输时间Tt
  • 磁盘调度算法
  • 提高磁盘I/O速度的方法
  • 采用磁盘高速缓存。
  • 调整磁盘请求顺序。
  • 提前读。在读磁盘当前块时,将下一磁盘块也读入内存缓冲区。

结语

I/O 管理的核心矛盾,是 CPU 与外设之间巨大的速度鸿沟,以及设备之间千差万别的物理特性。控制方式的演进------轮询让 CPU 空转等待,中断让 CPU 得以脱身,DMA 连数据搬运都交给控制器------正是不断把 CPU 从等待中解放出来的过程;而 I/O 软件的分层(中断处理程序 → 设备驱动程序 → 设备独立性软件 → 用户层 I/O 软件),则是用"分层屏蔽差异"这一经典手段,把设备的多样性隐藏在统一接口之后。缓冲管理、SPOOLing、设备分配与磁盘调度,都是在这套框架下对具体问题的具体解法。学完这一章再回望会发现:操作系统本质上就是一台资源管理器------前面四章分别管理 CPU、内存与磁盘上的信息,而这一章管理的是那台真正与外界打交道的硬件。至此,整门操作系统课程的拼图也就完整了。

参考资料

  1. 王道考研《操作系统考研复习指导》
  2. 汤小丹.计算机操作系统(第4版).西安:西安电子科技大学出版社
  3. Abraham Silberschatz.操作系统概念(Operating System Concepts).北京:机械工业出版社
相关推荐
IT毕设实战小研4 小时前
基于大数据的DAX40成分股金融新闻情感趋势可视化分析
android·大数据·python·考研·金融·课程设计
Heorine2 天前
408 计算机组成原理 知识点记忆(1)计算机系统概述
考研
Heorine2 天前
408 计算机组成原理 知识点记忆(4)指令系统
考研
Heorine2 天前
408 计算机组成原理 知识点记忆(5)中央处理器
考研
2601_949950633 天前
考研英语资料太散?用小程序把真题、词汇和错题放到一起
人工智能·学习·考研·小程序·刷题·小程序推荐
搜词研究员5 天前
# 德立教育和达德教育哪个好?学历提升选哪家?
考研·职场和发展·学习方法·高考
博界IT精灵5 天前
浮点数的表示--IEEE 754浮点数标准
考研
唐维康5 天前
昆明理工891计算机考研真题:2022—2026五年完整收录整理
考研
aichitang20245 天前
快乐泛函每一天:希尔伯特空间中的最佳逼近与正交投影定理
人工智能·考研·算法·ai·面试·泛函分析