计算机组成原理第五章 输入输出系统

文章目录

一、I/O系统的功能、模型和接口

1.I/O系统的基本功能:

2.I/O系统的层次结构和模型:

3.I/O系统接口:

二、I/O设备和设备控制器

1.I/O设备

2.设备控制器

3.内存映像I/O

4.I/O通道

三、设备驱动程序

1.设备驱动程序概述

2.设备驱动程序的处理过程

3.对I/O设备的控制方式

四、与设备无关的I/O软件

1.与设备无关的I/O软件的基本概念

2.与设备无关的软件

3.设备分配

4.逻辑设备名到物理设备名映射的实现

五、用户层的I/O软件

1.系统调用与库函数

2.假脱机(Spooling)系统

一、I/O系统的功能、模型和接口

1.I/O系统的基本功能:

  1. 隐藏物理设备的细节
  2. 与设备的无关性
  3. 提高处理机和I/O设备的利用率
  4. 对I/O设备进行控制
  5. 确保对设备的正确共享
  6. 错误处理

2.I/O系统的层次结构和模型:

3.I/O系统接口:

块设备接口:块设备管理程序与高层之间的接口。(数据的存取和传输都是以数据块为单位的设备称为块设备。此接口隐藏了磁盘的二维结构,将抽象命令映射为低层操作。)

流设备接口:流设备管理程序与高层之间的接口。(大多数流设备都属于独占设备,必须采用互斥方式实现共享,因此流设备提供了打开和关闭操作。)

网络通信接口:面向网络的接口。

二、I/O设备和设备控制器

1.I/O设备

(1)分类:

按使用特性分:存储设备(外存,辅存)与I/O设备(输入设备,输出设备和交互式设备)。
按传输速率分:低速设备(每秒几字节到数百字节,键盘、鼠标等),中速设备(每秒数千字节到数十万字节,打印机等),高速设备(每秒数十万字节到千兆字节,磁带机、光盘机等)。

(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.中断处理程序
处理过程有以下几个过程:

测定是否有未响应的中断信号。
保护被中断进程的CPU环境。保存的为从中断现场恢复到当前进程运行所需要的信息(处理机状态字PSW,保存在PC中下一条指令的地址,以及所有的CPU寄存器的内容(通用寄存器,段寄存器等)压入中断栈中)。
转入相应的设备处理程序。
中断处理。
恢复CPU的现场并退出中断。

三、设备驱动程序

1.设备驱动程序概述

(1)设备驱动程序的功能

接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求转换为与设备相关的低层操作序列。
检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式。
发出I/O命令,如果设备空闲,便立即启动I/O设备,完成指定的I/O操作;如果设备忙碌,则将请求者的请求块挂在设备队列上等待。
及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。
(2)设备驱动程序的特点
设备驱动程序属于低级的系统例程,它与一般的应用程序及系统程序之间有下述明显差异:

驱动程序是实现在与设备无关的软件和设备控制器之间通信和转换的程序
驱动程序与设备控制器以及I/O设备的硬件特性紧密相关,对于不同类型的设备,应配置不同的驱动程序。但可以为相同的多个终端设置一个终端驱动程序。
驱动程序与I/O设备所采用的I/O控制方式紧密相关,常用的I/O控制方式是中断驱动和DMA方式。
由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言书写。目前有很多驱动程序的基本部分已经固化在ROM中。
驱动程序应允许可重入。一个正在运行的驱动程序常会在一次调用完成前被再次调用。
(3)设备处理方式

为每一类设备设置一个进程,专门用于执行该类设备的I/O操作。
在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作。
不设置专门的设备处理进程,只为各类设备设置相应的设备驱动程序,供用户进程或系统进程调用。

2.设备驱动程序的处理过程

将抽象要求转换为具体要求
检查I/O请求的合法性
读出和检查设备的状态
传送必要的参数(磁盘在读写前,要传递参数至控制器的寄存器中)
启动I/O设备

3.对I/O设备的控制方式

①使用轮询的可编程I/O方式
②使用中断的可编程I/O方式
③直接存储器访问(DMA)方式
④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方式的特点如下:

数据传输的基本单位是数据块。
所传送的数据是从设备直接送入内存,或者相反
仅在传送一个数据块的开始和结束时,才需要CPU干预,整块数据的传送是在控制器的控制下完成的
DMA控制器由三部分组成:主机与DMA控制器的接口,DMA控制器和设备的接口,I/O控制逻辑。

DMA工作过程(以磁盘数据读入为例)

CPU向磁盘控制器发送:读命令到CR中、内存的目标起址到MAR中、数据字节数到DC中、磁盘中的源地址到控制器的控制逻辑上;
启动DMA控制器进行数据传送。此后,CPU可以执行其它任务;
DMA控制器按照命令传送数据:先从磁盘读入一个字节的数据送入DR后,再传送到内存中。
修改并检查DC中的数值:若DC中的值不为0,则继续传送下一个字节;为0,则发出一个中断请求。

I/O通道控制方式
I/O通道控制方式的引入目的:
进一步减少CPU对I/O操作的干预;
以多个块为单位进行数据传送;
一次传送多组数据到多个不同的内存区域。
通道程序
通道是通过执行通道程序并与设备控制器共同实现对I/O设备的控制的。通道程序是由一系列通道指令(或称为通道命令)所构成的。
每条指令都包含以下信息:
操作码——指令执行的操作:读/写
内存地址——字符送入/取出内存的首址
计数——表示本条指令所要读/写数据的字节数
通道程序结束位P P=1表示本条指令是最后一条
记录结束标志位R R=1表示这是处理某记录的最后一条指令

四、与设备无关的I/O软件

1.与设备无关的I/O软件的基本概念

以物理设备名使用设备
引入逻辑设备名
逻辑设备名称到物理设备名称的转换

2.与设备无关的软件

设备驱动程序的统一接口:可以很方便的添加设备的驱动程序。
缓冲管理
差错控制:包括两类错误,暂时性错误,永久性错误。
对独立设备的分配与回收:对独占设备有系统进行统一的分配和回收处理。
独立于设备的逻辑数据块:隐藏不同设备的物理数据块大小的差异,向高层软件提供大小统一的逻辑数据块。

3.设备分配

系统为实现对独占设备的分配,必须在系统中配置相应的数据结构。
在用于设备分配的数据结构中,记录了对设备或控制器进行控制所需的信息。在进行设备分配时需要如下的数据结构。
(1)设备控制表DCT  
系统为每一个设备都配置了一张设备控制表,用于记录设备的情况,如下图

(2)控制器控制表(COCT)
系统为每一个控制器都设置了用于记录控制器情况的控制器控制表,如图(a)所示。
(3)通道控制表(CHCT)
每个通道都有一张通道控制表,如图(b)所示。
(4)系统设备表(SDT)
这是系统范围的数据结构,记录了系统中全部设备的情况,每个设备占一个表目,其中包括有设备类型、设备标识符、设备控制表及设备驱动程序的入口等项

设备分配时应考虑的因素

设备的固有属性,设备独占属性可分为三种。对它们应采取不同的分配策略:
1.独享设备:将一个设备分配给某进程后,便由该进程独占,直到该进程完成或释放该设备。
2.共享设备:对于共享设备,可同时分配给多个进程使用,此时必须注意对于这些进程访问该设备的先后次序进行合理调度。
3.虚拟设备:虚拟设备属于可共享设备,可以将它同时分配给多个进程使用。

设备分配算法:

先来先服务:即按照进程的请求的先后次序来进行分配设备;优先级高者优先:该算法将队列中的优先级较高的放在队首前。
设备分配中的安全性:安全分配方式:进程发出I/O请求后就进入阻塞态。不安全分配方式:进程发出I/O请求仍继续运行。
独占设备的分配程序

基本的设备分配程序:分配设备–>分配控制器–>分配通道
设备分配程序的改进:增加设备的独立性: 逻辑设备名请求I/O。系统应查找所有该类设备的DCT。考虑多通路情况:对多个控制器和通道的分配,必须查找所有的控制器和通道。

4.逻辑设备名到物理设备名映射的实现

为实现与设备的无关性,当应用程序请求使用I/O设备时,应当用逻辑设备名。但系统只识别物理设备名,因此在系统中需要配置一张逻辑设备表,用于将逻辑设备名映射为物理设备名。
(1)逻辑设备表LUT
在逻辑设备表的每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址。如下图。当进程用逻辑表请求分配I/O设备时,系统根据当时的具体情况,为它分配一个相应的物理设备。同时,在逻辑设备表中建立一个标目,填上应用程序中使用的逻辑设备名和系统分配的物理设备名,以及该设备驱动程序入口地址。当以后进程在利用该逻辑设备名请求I/O操作时,系统通过查找LUT,便可以找到该逻辑设备所对应的物理设备和该设备的驱动程序。

逻辑设备表的设置问题
在系统中可采取两种方式设置逻辑设备表:
第一种方式,是在整个系统中只设置一张LUT。 
第二种方式,是为每个用户设置一张LUT。

五、用户层的I/O软件

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系统接收到用户进程的打印输出请求后:
由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;
输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。
当打印机空闲时,输出进程将从请求打印队列的队首取出一张请求打印表,再从输出井把数据送到内存缓冲区,启动打印机打印输出。打印完后,输出进程检查请求打印队列……

守护进程,守护进程取代假脱机管理进程。执行以下功能:
为用户申请磁盘缓冲区的空闲盘块、写入打印数据、返回该盘块的首址。
守护进程是允许使用打印机的唯一进程。打印进程要将要求打印的文件放在假脱机文件队列中。并唤醒守护进程。
守护进程的任务是按照队列中每个文件的说明执行逐个打印任务,直至全部完成,然后休眠。
总之,凡是需要将独占设备改造为共享设备时,都要为该设备配置守护进程和假脱机文件队列。

  • 56
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值