1.I/O系统的基本功能:
1.I/O设备
(1)分类:
(2)设备与控制器之间的接口:
2.设备控制器
(1)设备控制器的基本功能:1. 接收和识别命令。2. 数据交换。 3. 标识和报告设备状态。 4. 地址识别 5. 数据缓冲区。 6. 差错控制。
(2)设备控制器的组成:1.设备控制器与处理机的接口。2.设备控制器与设备的接口。3.I/O逻辑。
3.内存映像I/O
此方式下,在编址上不再区分内存单元地址和设备控制器中的寄存器地址,都采用K。当K值处于0~n-1范围时,认为是内存地址。当K大于n时,认为是在某个控制器的寄存器地址。
4.I/O通道
通道类型:1. 字节多路通道。 2. 数组选择通道。 3. 数组多路通道。
“瓶颈”问题: 因为通道价格昂贵,致使系统中所设置的通道数量势必较少,往往成为了I/O的瓶颈,进而造成整个系统吞吐量下降。
解决方法: 增加设备到主机间的通路而不增加通道。多通路方式不仅可以解决“瓶颈”问题,而且提高了系统可靠性,因为个别通道或控制器的故障不会使设备和存储器之间没有通路。
1.中断简介
中断:值CPU对I/O设备发来的中断信号的一种响应。CPU暂停正在执行的程序,保留CPU环境后,自主地执行该I/O设备的中断处理程序。执行完成后,再回到断点,继续执行原来的程序。
陷入(又称内中断):CPU内部事件引起的中断,例如运算的上溢或者下溢,程序出错等。与中断一样,若系统发现了有陷入事件,CPU暂停正在执行的程序,保留CPU环境后,转去执行该陷入事件的中断处理程序。
中断和陷入的主要区别是信号的来源:中断来自CPU外,陷入来自CPU内。
中断向量表:通常会为每种设备配以相应的中断处理程序,并把该程序的入口地址放在中断向量表的一个表项中,并为每一个设备的中断请求规定一个中断号,它直接对应于中断向量表中的一个表项。
中断优先级:中断信号源的优先级。
多中断源的处理方式:屏蔽中断与嵌套中断。屏蔽中断机制下,当CPU正在处理一个中断时,屏蔽掉所有的中断,对任何新到的中断都不执行,让他们等待。嵌套中断机制下,中断遵循高优先级优先执行的抢占机制,即低优先级中断正在执行,高优先级中断请求来了,此时高优先级中断请求会抢占低优先级中断的处理机。
2.中断处理程序
处理过程有以下几个过程:
1.设备驱动程序概述
(1)设备驱动程序的功能
(2)设备驱动程序的特点
设备驱动程序属于低级的系统例程,它与一般的应用程序及系统程序之间有下述明显差异:
(3)设备处理方式
2.设备驱动程序的处理过程
3.对I/O设备的控制方式
使用轮询的可编程I/O方式
忙——等待方式
CPU向控制器发指令,启动I/O设备输入数据时,同时把状态寄存器中的状态标志busy置1;
然后不断地循环测试busy。
如果busy=1,说明I/O设备忙,CPU再进行下一轮检测;
如果busy=0,说明I/O操作结束,CPU执行下一条指令。
使用中断的可编程I/O方式
启动:由CPU根据进程的I/O请求,向设备控制器发出一条I/O命令;此后CPU继续执行其它进程,即CPU与外设并行工作。
完成:I/O设备完成操作后,由控制器通过控制线向CPU发送一中断信号,由CPU检查I/O操作是否正确,若无错,便向控制器发送取走数据的信号。
优点:系统效率高: 并行工作、用极少的时间处理中断
缺点:设备与CPU之间的数据交换仍以字(节)为单位。
直接存储器访问(DMA)方式
DMA(Direct Memory Access)控制方式的引入
为了适应一次传送大量数据的应用要求,以及尽量减少CPU对高速外设的干预;所以引入了DMA方式。DMA方式的特点如下:
DMA控制器由三部分组成:主机与DMA控制器的接口,DMA控制器和设备的接口,I/O控制逻辑。
DMA工作过程(以磁盘数据读入为例)
1.与设备无关的I/O软件的基本概念
2.与设备无关的软件
3.设备分配
系统为实现对独占设备的分配,必须在系统中配置相应的数据结构。
在用于设备分配的数据结构中,记录了对设备或控制器进行控制所需的信息。在进行设备分配时需要如下的数据结构。
(1)设备控制表DCT
系统为每一个设备都配置了一张设备控制表,用于记录设备的情况,如下图
(2)控制器控制表(COCT)
系统为每一个控制器都设置了用于记录控制器情况的控制器控制表,如图(a)所示。
(3)通道控制表(CHCT)
每个通道都有一张通道控制表,如图(b)所示。
(4)系统设备表(SDT)
这是系统范围的数据结构,记录了系统中全部设备的情况,每个设备占一个表目,其中包括有设备类型、设备标识符、设备控制表及设备驱动程序的入口等项
设备分配时应考虑的因素
1. 独享设备:将一个设备分配给某进程后,便由该进程独占,直到该进程完成或释放该设备。2.共享设备:对于共享设备,可同时分配给多个进程使用,此时必须注意对于这些进程访问该设备的先后次序进行合理调度。3虚拟设备:虚拟设备属于可共享设备,可以将它同时分配给多个进程使用。
独占设备的分配程序
4.逻辑设备名到物理设备名映射的实现
为实现与设备的无关性,当应用程序请求使用I/O设备时,应当用逻辑设备名。但系统只识别物理设备名,因此在系统中需要配置一张逻辑设备表,用于将逻辑设备名映射为物理设备名。
(1)逻辑设备表LUT
在逻辑设备表的每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址。如下图。当进程用逻辑表请求分配I/O设备时,系统根据当时的具体情况,为它分配一个相应的物理设备。同时,在逻辑设备表中建立一个标目,填上应用程序中使用的逻辑设备名和系统分配的物理设备名,以及该设备驱动程序入口地址。当以后进程在利用该逻辑设备名请求I/O操作时,系统通过查找LUT,便可以找到该逻辑设备所对应的物理设备和该设备的驱动程序。
逻辑设备表的设置问题
在系统中可采取两种方式设置逻辑设备表:
第一种方式,是在整个系统中只设置一张LUT。
第二种方式,是为每个用户设置一张LUT。
1.系统调用与库函数
系统调用
一方面,为使诸进程能有条不紊地使用I/O设备,且能保护设备的安全性,不允许运行在用户态的应用进程去直接调用运行在核心态(系统态)的OS过程。但另一方面,应用进程在运行时,又必须取得OS所提供的服务,否则,应用程序几乎无法运行。为了解决此矛盾,OS在用户层中引入了一个中介过程——系统调用,应用程序可以通过它间接调用OS中的I/O过程,对I/O设备进行操作。
库函数
在C语言以及UNIX系统中,系统调用(如read)与各系统调用所使用的库函数(如read)之间几乎是一一对应的。而微软定义了一套过程,称为Win32 API的应用程序接口(Application Program Interface),程序员利用它们取得OS服务,该接口与实际的系统调用并不一一对应。用户程序通过调用对应的库函数使用系统调用,这些库函数与调用程序连接在一起,被嵌入在运行时装入内存的二进制程序中。
2.假脱机(Spooling)系统
什么是SPOOLing技术(假脱机技术)
定义:在联机的情况下实现的同时外围操作
特点:是对脱机输入输出系统的模拟。因此, 必须建立在具有多道程序功能的操作系统上,而且需要高速外存的支持。
方式:将数据从输入设备传送到磁盘或反之。
通过它可以将一台独占的物理设备虚拟为多台逻辑设备,从而允许多个用户(进程)共享。
SPOOLing系统的组成
输入井和输出井:在磁盘上开辟的两个大存储空间
输入缓冲区和输出缓冲区:在内存中开辟的两个缓冲区
输入进程Spi和输出进程Spo:是内存中的两个进程
井管理程序:控制作业与磁盘井之间信息的交换
假脱机打印机系统
SPOOLing系统接收到用户进程的打印输出请求后:
由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;
输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。
当打印机空闲时,输出进程将从请求打印队列的队首取出一张请求打印表,再从输出井把数据送到内存缓冲区,启动打印机打印输出。打印完后,输出进程检查请求打印队列……
守护进程,守护进程取代假脱机管理进程。执行以下功能:
为用户申请磁盘缓冲区的空闲盘块、写入打印数据、返回该盘块的首址。
守护进程是允许使用打印机的唯一进程。打印进程要将要求打印的文件放在假脱机文件队列中。并唤醒守护进程。
守护进程的任务是按照队列中每个文件的说明执行逐个打印任务,直至全部完成,然后休眠。
总之,凡是需要将独占设备改造为共享设备时,都要为该设备配置守护进程和假脱机文件队列。