系列文章传送门:
第一章 计算机系统概述
第二章 进程管理
第三章 进程同步
第四章 内存管理
第五章 文件管理
第六章 输出输出I/O管理
给大家整理了一下计算机操作系统中的中重点概念,以供大家期末复习和考研复习的时候使用。
参考资料是王道的计算机操作系统和西电的计算机操作系统。
I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
按传输速率分类分为低速设备:键盘、鼠标;中速设备:行式打印机、激光打印机;高速设备:磁带机、磁盘机、光盘机等。
按信息交换的单位分类:块设备和字符设备。信息存储以数据块为单位表则是块设备,属于有结构设备,如磁盘。字符设备其传输的单位是字符,属于无结构类型,如交互式终端机打印机等,在输入输出时采用中断驱动方式。
1、接收和识别CPU发出的指令(read/write。I/O控制器中控制寄存器来存放参数和命令);2、向CPU报告设备的状态(记录在状态寄存器中。1表示空闲,0表示忙碌);3、数据交换(数据暂时存储在数据寄存器中用来供CPU暂存和取走);4、地址识别(区分各个寄存器)。
计算机从外部设备读取数据到存储器,每读一个字的数据。对读入的每一个字,CPU都要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。
写的过程:CPU通过控制线发出I/O指令,通过地址线发出要操纵的是哪个设备,通过数据总线将要输出的数据放入到I/O控制器中的数据寄存器中,另外要注意CPU指令中的参数也是通过数据总线放入到控制器的控制寄存器中.CPU也会从控制器中的状态寄存器读出设备此时的状态(例:空闲还是被占用).之后I/O逻辑通过与设备的接口将CPU送过来的数据输出到相应的设备中.数据的流向:
读:I/O设备-》CPU-》内存;写:内存-》CPU》I/O设备
CPU的干预频率:一直轮询。数据传送的单位:一个字
优点:简单;缺点:CPU和I/O只能串行工作,CPU要一直轮询检查,长期处于忙等状态,CPU利用率低。
引入中断机制,因此在CPU发出读或写命令时,可将等待I/O的进程阻塞,先切换别的进程执行,当I/O完成后控制器会向CPU发出一个中断信号,CPU检测到中断信号后会保存当前进程的运行环境,去转而执行中断处理程序处理该中断,处理中断过程中CPU从I/O控制器读一个字的数据传输到CPU寄存器,再写入主存。接着CPU恢复等待I/O的进程的运行环境然后继续执行。
读:I/O设备-》CPU-》内存;写:内存-》CPU》I/O设备
CPU的干预频率:I/O操作开始前和完成后要CPU介入,等待I/O时CPU切换别的进程执行。数据传送的单位:一个字
优点:CPU和I/O可以并行工作,CPU利用率提升;缺点:I/O设备和内存之间的传输都要经过CPU,频繁的中断处理会消耗较多的CPU时间。
主要用于块设备的I/O控制
数据的传送单位时块。数据的流向是从设备直接存放内存或者从内存直接到设备不需要CPU作为中间。仅在传送一个或多个数据块的开始和结束时才需要CPU干涉。在开始时CPU指明此次要进行的操作,如读操作并说明要读入多少数据,存放在内存中什么位置以及数据在外部设备上的地址,如磁盘上的地址。DMA控制器会根据CPU提出的要求完成读写工作,整块数据传输完成后才向CPU发出中断信号。
DMA中设置四类寄存器
优点:数据传输以块为单位,CPU介入频率降低,数据传输效率增加,CPU和I/O设备的并行性提高;缺点:如果要读多个离散的数据块,要多次中断才能完成。
解决DMA方式连续存储的问题。通道是一种硬件,简化版CPU,可以识别的执行一系列通道指令。
CPU干预的频率:极低。通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读写后才发出中断信号请求CPU干预。数据传输的单位:一组数据块。数据的流向在通道的控制下进行读写分别由I/O设备到内存和内存到I/O设备。
优点CPU、通道、I/O设备可并行工作,资源利用率高。缺点实现复杂需要专门的通道硬件支持。
用户层I/O软件:实现与用户交互的接口,用户可以直接调用在用户层提供的与I/O操作相关库函数对设备进行操作。(假脱机技术-SPOOLing技术)
以下四层为I/O软件的层次:以下三层为I/O系统I/O核心子系统。
设备独立性软件:用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护、设备分配与释放等,同时为设备管理和数据传输提供必要的存储空间。设备独立性使应用程序独立于具体使用的物理设备。为实现设备独立性而引入逻辑设备和物理设备这2个概念,在应用程序中使用逻辑设备名来请求使用某类设备,而在系统执行时必须将逻辑设备并映射成物理设备并使用。使用逻辑设备名的好处:1、增加设备分配的灵活性;2、易于实现I/O重定向,所谓I/O重定向是指用于I/O操作的设备可以更换而不改变应用程序。为了实现设备独立性必须在驱动程序上设置1层设备独立性软,设备独立性软件的主要功能可以分为以下2个方面:1、执行所有设备的公有操作;2、向用户层提供统一的接口(read/write调用)。(I/O调度、设备保护、设备分配与回收、缓冲区管理 )
设备驱动程序:与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。
中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序,处理完并恢复被中断进程的现场后,返回到被中断的进程。
硬件设备:IO设备通常包括一个机械部件和电子部件,为了达到设计的模块性和通用性,一般将其分开电子部件称为设备控制器或适配器,通常是电路板,而机械部件则是设备本身。
缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区。
作用:1、缓和CPU与I/O设备之间速度不匹配的矛盾。2、减少CPU的中断频率,放宽对CPU中断响应的时间限制。3、解决数据粒度不匹配的问题。4、提高CPU与I/O设备之间的并行性。
当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。
处理一块数据平均时间Max(C,T)+M
采用双缓冲策略,处理一个数据块的平均耗时为Max (T,C+M)。
循环缓冲区:将多个大小相等的缓冲区链接成一个循环队列。
缓冲池由系统中共用的缓冲区组成。这些缓冲区按使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)。又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(hout) 、用于提取输出数据的工作缓冲区(sout)。
从设备特性来看采用下述3种使用方式的设备分别称为独占设备、共享设备和虚拟设备。独占使用设备:在申请设备时,若设备空闲则将其独占,不允许其他进程申请使用,直至设备被释放才允许其他进行申请使用,如打印机。分时共享设备:独占使用设备时,设备利用率很低,通过分时共享来提高利用率,如磁盘设备的I/O操作,每个进程的I/O请求可以通过分时来交替进行。以SPOOLing技术方式使用外部设备,即假脱机I/O技术,实质上是对I/O操作进行批处理。
设备分配依据的主要数据结构有设备控制表DCT ,控制器控制表COCT,通道控制表CHCT和系统设备表SDT。 设备控制表DCT,一个设备控制表就表征一个设备,而这个控制表中的表项就是设备的各个属性。设备控制器控制设备与内存交换数据而设备控制器又需要请求通道为他服务,因此每个控制器控制表COCT中必有一个表项存放指向相应通道控制表CHCT的指针,一个通道可为多个设备控制器服务,因此CHCT与COCT的关系是一对多的关系。系统设备表SDT,整个系统只有一张SDT,它记录已连接到系统中所有物理设备的情况,每个物理设备占一个表目。
①根据进程请求的物理设备名查找SDT(注:物理设备名是进程请求分配设备时提供的参数)
②根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程。
③根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
④根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。
注∶只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可后动/O设备进行数据传送。
缺点:①用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程。②若换了一个物理设备,则程序无法运行。③若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待。
改进方法:建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名。
为了提高设备分配的灵活性和设备的利用率方便实现IO重定向引入设备独立性,设备独立性是指应用程序独立于具体使用的物理设备。设备独立性软件需要通过“逻辑设备表(LUT,Logical UnitTable)”来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序。操作系统系统可以采用两种方式管理逻辑设备表(LUT) :
第一种方式,整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统。第二种方式,为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中。
为了缓和CPU的高速性能与I/O设备低速性之间的矛盾引入了脱机输入输出技术。该技术利用专门的外围控制器将低速I/O设备上的数据传输到高速磁盘上。
输入井和输出井是指在磁盘上开辟的2个存储区域:输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据;输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。输入缓冲区和输出缓冲区是在内存中开辟的2个缓冲区:输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井中,输出缓冲区是用于暂存从输出井送来的数据,以后再传送到输出设备上。
输入进程模拟脱机输入时的外围控制器将用户要求的数据从输入机通过输入缓冲再送到输入井。输出进程模拟脱机输出时的外围控制机把用户要求输出的数据先从内存送到输出井,待输出设备空闲时再将输出井中的数据经过输出缓冲区送到输出设备。
1、由输出进程在输出井中为之申请一个空闲磁盘块区并将要打印的数据送入其中;2、输出进程在为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中再将该表挂到请求打印队列上。
SPOOLling系统的主要特点有提高了I/O的速度,将独占设备改造为共享设备实现了虚拟设备功能。