I/O系统基本概念(X)
本节考纲已删,了解即可。
输入/输出系统
输入/输出是以主机为中心而言的,将信息从外部设备传送到主机称为输入,反之称为输出。输入/输出系统解决的主要问题是对各种形式的信息进行输入和输出的控制。
I/O系统中的几个基本概念如下:
- 外部设备:包括输入/输出设备及通过输入/输出接口才能访问的外存储设备。
- 接口:在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式转换等。
- 输入设备:用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。
- 输出设备:用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。
- 外存设备(外部设备):指除计算机内存及CPU缓存等外的存储器。如,硬磁盘、光盘等。
一般来说,
软件:包括驱动程序、用户程序、管理程序、升级补丁等。通常采用 指令和通道指令实现 与 设备的信息交换。 指令: 系统指令的一部分,是机器指令的一类。格式:操作码(识别 指令)、命令码(做什么操作)、设备码(对哪个设备进行操作) - 通道指令:通道能识别的指令,通道程序提前编制好放在主存中。在含有通道的计算机中,
执行 指令对通道发出命令,由通道执行一系列通道指令,代替 对 设备进行管理。
硬件:包括外部设备、设备控制器和接口、 总线等。 设备通过不能直接与主板总线相连,需要通过设备控制器来控制 设备的具体动作;通过 接口与主机(总线)相连。
I/O控制方式
基本的
- 程序查询方式(直接程序传送方式):由
通过程序不断查询 设备是否已做好准备,从而控制 设备与主机交换信息。 - 程序中断方式:只在
设备准备就绪并向 发出中断请求时才予以响应。 方式:主存和 设备之间有一条直接数据通路,当主存和 设备交换信息时,无须调用中断服务程序。 - 通道方式:在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行
命令时,只需启动相关通道,通道将执行通道程序,从而完成 操作。 指令是 指令系统的一部分,是 用来控制 操作时指令,由 译码后执行。在具有通道结构的机器中, 指令不实现 数据传送,主要完成启、停 设备,查询通道和 设备的状态,及控制通道进行其他一些操作等。 通道指令是通道本身的指令,用来执行 操作,如读、写、磁带走带及磁盘寻道等操作。
其中,方式
外部设备
输入输出设备:鼠标、键盘是常用的输入设备。显示器、打印机是常用的输出设备。
显示设备种类繁多,按显示设备所用的显示器件分类,有阴极射线管(
按所显示的信息内容分类,有字符显示器(字形码由点阵表示,存入由
按扫描方式不同,可分为光栅扫描和随机扫描两种显示器。
显示器属于用点阵(由
屏幕大小:以对角线长度表示。
分辨率:所能表示的像素个数,屏幕上的每个光点就是一个像素,以宽和高的像素数的乘积表示,如
。 灰度级:灰度级是指黑白显示器中所显示的像素点的亮暗差别,在彩色显示器中则表现为颜色的不同,灰度级越多,图像层次越清楚、逼真。
位可以表示 种不同的亮度或颜色。 刷新:光点只能保持极短的时间便会消失,为此必须在光点消失之前再重新扫描显示一遍,这个过程称为刷新。
刷新频率:指单位时间内扫描整个屏幕内容的次数。按照人的视觉生理,刷新频率大于
时才不会感到闪烁。 显示存储器(
):也称刷新存储器,为了不断提高刷新图像的信号,必须把一帧图像信息存储在刷新存储器中。其存储容量由图像分辨率和灰度级决定,分辨率越高,灰度级越多,刷新存储器容量越大。
按工作原理,打印机分为击打式和非击打式两大类;按工作方式,打印机分为点阵打印机、针式打印机、喷墨式打印机、激光打印机等;按打印机工作方式不同可分为串行打印机、行式打印机。按照能否打印汉字分为:点阵打印机、活字式打印机。
外部存储器(辅存)
- 磁表面存储器:把某些磁性材料薄薄地涂在金属铝或塑料表面上作为载磁体来存储信息。磁盘存储器、磁带存储器和磁鼓存储器均属于磁表面存储器。
- 固态硬盘(SSD):微小型高档笔记本电脑采用高性能Flash存储器作为硬盘来记录数据,这种“硬盘”称为固态硬盘(SSD)。固态硬盘除需要Flash存储器外,还需要其他硬件和软件的支持。
- 光盘存储器:光盘存储器是利用光学原理读/写信息的存储装置,它采用聚焦激光束对盘式介质以非接触方式记录信息。完整的光盘存储系统由光盘片、光盘驱动器、光盘控制器等组成。
I/O接口
- 实现主机和外设的通信联络控制。解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息,以保证整个计算机系统能统一、协调地工作。
- 控制和定时:接收从控制总线发来的控制信号、时钟信号。
- 进行地址译码和设备选择。
送来选择外设的地址码后,接口必须对地址进行译码以产生设备选择信息,使主机能和指定外设交换信息。 - 数据缓冲:通过数据缓冲寄存器(
)达到主机和外设工作速度的匹配。 - 错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用。
- 信号(数据)格式的转换。外设与主机两者的电平、数据格式都可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、并/串或串/并转换、模/数或数/模转换等。
- 传送控制命令和状态信息。
要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;外设准备就绪时,则将“准备好”状态信息送回接口中的状态寄存器,并反馈给 。外设向 提出中断请求时, 也应有相应的响应信号反馈给外设。 过程中错误与状态检测。
设备侧的外部接口通过接口电缆与(多个)外设相连,外部接口的数据传输可能是串行方式,因此
通过数据总线,在数据缓冲寄存器(
接口中的地址线用于给出要访问的
接口中的
对数据缓冲寄存器、状态/控制寄存器的访问操作是通过相应的指令来完成的,通常称这类指令为
- 发命令:发送命令字(控制字)到
控制寄存器,向设备发送命令(需要驱动程序的协助)。 - 读状态:从状态寄存器读取状态字,获得设备或
控制器的状态信息。 - 读/写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换。
确定要操作的设备:每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备。
从不同的角度看,
按数据传送方式可分为并行接口(一字节或一个字的所有位同时传送)和串行接口(一位一位地传送),接口要完成数据格式的转换。
这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,
数据总是并行传送的(在当今时代并不完全正确)。按主机访问
设备的控制方式可分为程序查询接口、中断接口和 接口等。 按功能选择的灵活性可分为可编程接口和不可编程接口。
统一编址,又称存储器映射方式,是指把
端口当作存储器的单元进行地址分配,这种方式 不需要设置专门的 指令,用统一的访存指令就可以访问 端口。如果随意在地址的任何地方编址,将给编程造成极大的混乱,需要固定位置。靠不同的地址码区分内存和 设备,访存类的指令都可以访问 端口。( 机器常用) 优点:不需要专门的输入/输出指令,可使
访问 的操作更灵活、更方便,还可使端口有较大的编址空间。读写控制逻辑电路简单。 缺点:端口占用存储器地址,使内存容量(主存地址空间)变小,外设寻址时间长(地址位数多,地址译码速度慢),而且利用存储器编址的
设备进行数据输入/输出操作,执行速度较慢。 独立编址,又称
映射方式, 端口的地址空间与主存地址空间是两个独立的地址空间,因而无法从地址码的形式上区分,需要设置专门的 指令来访问 端口。 优点:使用专用
指令,程序编制清晰,便于理解; 端口地址位数少,地址译码速度快; 端口的地址不占用主存地址空间。 缺点:
指令少,一般只能对端口进行传送操作,程序设计灵活性差;需要 提供存储器读/写、 设备读/写两组控制信号,增加了控制的复杂性。
I/O方式
程序查询方式
信息交换的控制完全由主机执行程序实现,程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)。主机进行
程序查询方式的工作流程如下:
独占查询:
定时查询:在保证数据不丢失的情况下,每隔一段时间
优点:接口设计简单、设备量少。
缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低。
程序中断方式
现代计算机系统中都配有完善的异常和中断处理系统,
异常(内中断):异常是指由
故障:指在引起故障等指令启动后、执行结束前被检测到的异常事件。例如,指令译码时,出现“非法操作码”;取数据时,发生“缺段”或“缺页”;执行整数除法指令时,发现“除数为
”等。对于“缺段”“缺页”等异常处理后,已将所需的段或页面从磁盘调入主存,可回到发生故障的指令继续执行,断点为当前发生故障的指令;对于“非法操作码”“除数为 ”等,因为无法通过异常处理程序恢复故障,因此不能回到原断点执行,必须终止进程的执行。 主存故障引起的中断是机器校验中断,属于内中断。
自陷(陷阱、陷入):它是预先安排的一种“异常”事件,就像预先设定的“陷阱”一样。通常的做法是,事先在程序中用一条特殊指令或通过某种方式设定特殊控制标志来人为设置一个“陷阱”,当执行到被设置了“陷阱”的指令时,
将进入操作系统内核程序执行, 在执行完自陷指令后,自动根据不同“陷阱”类型进行相应的处理,然后返回到自陷指令的下一条指令执行。当自陷指令是转移指令时,并不是返回到下一条指令执行,而是返回到转移目标指令执行。 在
中,用于程序调试的“断点设置”功能就是通过自陷方式实现的。此外,系统调用指令、条件自陷指令等都属于陷阱指令,执行到这些指令时,无条件或有条件地自动调出操作系统内核程序进行执行。 终止:如果在执行指令的过程中发生了使计算机无法继续执行的硬件故障,如电源掉电、线路故障等,那么程序将无法继续执行,只能终止,此时,调出中断服务程序来重启系统。这种异常与故障和自陷不同,不是由特定指令产生的,而是随机发生的。
外部中断(外中断、中断):外中断是指来自
外中断一般指主存和
外的中断,如外设引起的中断等。 用户程序需要输入/输出时,需要调用操作系统提供的接口(请求操作系统服务),此时会引起访管中断,系统由用户态转为核心态。访管指令优先级高于外部中断。
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,
- 实现
与 设备的并行工作。 - 处理硬件故障和软件错误。
- 实现人机交互,用户干预机器需要用到中断系统。
- 实现多道程序、分时操作,多道程序的切换需借助于中断系统。
- 实时处理需要借助中断系统来实现快速响应。
- 实现应用程序和操作系统(管态程序)的切换,称为“软中断”。
- 多处理器系统中各处理器之间的信息交流和任务切换。
程序中断方式:
程序中断方式工作流程
中断请求:
中断源是请求
中断的设备或事件,一台计算机允许有多个中断源。每个中断源向 发出中断请求的时间是随机的。为记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器 ,当其状态为“ ”时,表示中断源有请求。这些触发器可组成中断请求标记寄存器( ),该寄存器可集中在 中,也可分散在各个中断源中。 内中断皆为不可屏蔽中断。通过
信号线发出的外中断是可屏蔽中断,在关中断( )的情况下不会被响应;而通过 信号发出的是不可屏蔽中断,即使在关中断( )的情况下也会被响应。不可屏蔽中断的处理优先级最高,任何时候只要发生不可屏蔽中断,都要中止现行程序的执行,转到不可屏蔽中断处理程序执行。 中断判优:(
设备争用 的判优方式) 中断系统在任一瞬间只能响应一个中断源的请求。由于许多中断源提出中断请求的时间都是随机的,因此当多个中断源同时提出请求时,需通过中断判优逻辑确定响应哪个中断源的请求(中断响应次序)。中断判优既可以用硬件实现,又可用软件实现。硬件实现是通过硬件排队器实现的,它既可以设置在
中,又可以分散在各个中断源中,软件实现是通过查询程序实现的。 一般来说,硬件故障中断属于最高级,其次是软件中断;不可屏蔽中断优于可屏蔽中断;
请求优于 设备传送的中断请求;高速设备优于低速设备;输入设备优于输出设备;实时设备优于普通设备等。 响应中断的条件: 在满足一定的条件下响应中断源发出的中断请求,并经过一些特定的操作,转去执行中断服务程序。 响应中断必须满足以下 个条件: - 中断源有中断请求。外设有中断请求时,中断请求触发器必须处于“
”状态,保持中断请求信号。 允许中断即开中断。在 内部设置的中断屏蔽触发器必须是开放的;外设(接口)中断允许触发器必须为“ ",才能把外设中断请求送至 。 - 一条指令执行完毕,且没有更紧迫的任务。
设备的就绪时间是随机的,而 在统一的时刻,即每条指令执行阶段结束前向接口发出中断查询信号,以获取 的中断请求, 响应中断的时间是在每条指令执行阶段的结束时刻。这里说的中断仅指外中断,内中断不属于此类情况。 - 中断源有中断请求。外设有中断请求时,中断请求触发器必须处于“
中断响应:
响应中断后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,我们将它称为中断隐指令。中断隐指令并不是指令系统中的一条真正的指令,它没有操作码,所以中断隐指令是一种不允许也不可能为用户使用的特殊指令。它所完成的操作如下: - 关中断:
响应中断后,首先要保护程序的断点和现场信息,在保护断点和现场的过程中, 不能响应更高级中断源的中断请求。 - 保存断点:为保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(指令无法直接读取的
和 等的内容)保存起来。 - 引出中断服务程序:实质是取出中断服务程序的入口地址并传送给程序计数器
。
- 关中断:
中断向量:
中断向量由向量地址形成部件,即由硬件产生,并且不同的中断源对应不同的中断服务程序,因此通过该方法,可以较快速地识别中断源。
每个中断都有一个类型号,每个中断类型号都对应一个中断服务程序,每个中断服务程序都有一个入口地址,
必须找到入口地址,即中断向量,把系统中的全部中断向量集中存放到存储器的某个区域内,这个存放中断向量的存储区就称为中断向量表。 响应中断后,中断硬件会自动将中断向量地址传送到 ,由 实现程序的切换,这种方法称为中断向量法,采用中断向量法的中断称为向量中断。 中断向量是中断服务程序的入口地址,中断向量地址是指中断服务程序的入口地址的地址。
中断处理过程:
不同计算机的中断处理过程各具特色,就其多数而论,中断处理流程如下:
关中断。在保护断点和现场期间不能被新的中断所打断,必须关中断。否则,若断点或现场保存不完整,在中断服务程序结束后,就不能正确地恢复并继续执行现行程序。允许中断触发器置
表示关中断,由中断隐指令完成,即由硬件自动完成。 保存断点。断点可以压入堆栈,也可以存入主存的特定单元中。
引出中断服务程序。通常有两种方法寻址中断服务程序的入口地址:硬件向量法和软件查询法。硬件向量法通过硬件产生中断向量地址,再由中断向量地址找到中断服务程序的入口地址。软件查询法用软件编程的办法寻找入口地址。
注意:硬件产生的实际上是中断类型号,而中断类型号指出了中断向量存放的地址,因此能产生中断向量地址。(指向指针的指针)
前三条在
进入中断周期后,由中断隐指令(硬件自动)完成。后面由中断服务程序完成。 保存现场和屏蔽字。进入中断服务程序后首先要保存现场和中断屏蔽字,现场信息是指用户可见的工作寄存器的内容,它存放着程序执行到断点处的现行值。每个中断源都有一个屏蔽触发器,
表示屏蔽该中断源的请求, 表示可以正常申请,所有屏蔽触发器组合在一起便构成一个屏蔽字寄存器(中断屏蔽寄存器 ),屏蔽字寄存器的内容称为屏蔽字。屏蔽字用来指明哪些中断可以中断当前中断,即中断优先级(中断处理次序)。 现场和断点,这两类信息都不能被中断服务程序破坏。现场信息因为用指令可直接访问,所以通常在中断服务程序中通过指令把它们保存到栈中,即由软件实现;而断点信息由
在中断响应开始时自动保存到栈或专门的寄存器中,即由硬件实现。 开中断。允许更高级中断请求得到响应,实现中断嵌套。
执行中断服务程序。这是中断请求的目的。中断服务程序是处理器处理的紧急事件,可理解为一种服务,是通过执行事先编好的某个特定的程序来完成的,一般属于操作系统的模块,以供调用执行。
关中断。保证在恢复现场和屏蔽字时不被中断。
恢复现场和屏蔽字。将现场(将寄存器的内容)和屏蔽字恢复到原来的状态。
开中断、中断返回。中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。中断返回指令在中断恢复后,即
中的所有寄存器都已恢复到了中断前的状态,因此该指令不需要进行无条件转移。
若
如上面所讲的就是多重中断,去掉第
- 在中断服务程序中提前设置开中断指令。
- 优先级别高的中断源有权中断优先级别低的中断源。
一般同种类型的中断源可以屏蔽该中断源发来的中断。
中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变;而中断处理优先级可以由中断屏蔽字来改变,反映的是正在处理的中断是否比新发生的中断的处理优先级低(屏蔽位为“
DMA方式
直接的数据通路并不是在主存和
之间建立一条物理直接通路,而是主存和 设备通过 设备接口、系统总线及总线桥接部件等相连,建立一个信息可以相互通达的通路,这在逻辑上可视为直接相连的。其“直接”是相对于要通过 才能和主存相连这种方式而言的。
- 它使主存与
的固定联系脱钩,主存既可被 访问,又可被外设访问。 - 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
- 主存中要开辟专用缓冲区,及时供给和接收外设的数据。
传送速度快, 和外设并行工作,程序和传送并行工作,提高了系统效率。 在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
在
接受外设发出的
请求,并向 发出总线请求。 响应此总线请求,发出总线响应信号,接管总线控制权,进入 操作周期。 确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度计数。
规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
向
报告 操作的结束。
下图是单总线
- 预处理:由
完成一些必要的准备工作。首先, 执行几条 指令,用以测试 设备状态,向 控制器的有关寄存器置初值、设置传送方向、启动该设备等。然后, 继续执行原来的程序,直到 设备准备好发送的数据(输入情况)或接收的数据(输出情况)时, 设备向 控制器发送 请求,再由 控制器向 发送总线请求(有时将这两个过程统称为 请求),用以传输数据。 - 数据传送:
的数据传输可以以单字节(或字)为基本单位,也可以以数据块为基本单位。对于以数据块为单位的传送(如硬盘), 占用总线后的数据输入和输出操作都是通过循环来实现的。这一循环也是由 控制器实现的,即数据传送阶段完全由 (硬件)控制。 - 后处理:
控制器向 发送中断请求, 执行中断服务程序做 结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错(错误则转入诊断程序)及决定是否继续使用 传送其他数据块等。
当使用三总线
停止
访存:当 设备有 请求时,由 控制器向 发送一个停止信号,使 脱离总线,停止访问主存,直到 传送一块数据结束。数据传送结束后, 控制器通知 可以使用主存,并把总线控制权交还给 。 优点:控制简单
缺点:CPU处于不工作状态或保持状态,未充分发挥CPU对主存的利用率
周期挪用(周期窃取):当
设备有 请求时,挪用一个或几个存取周期(机器周期),会遇到 种情况: 不在访存(如 正在执行乘法指令),因此 的访存请求与 未发生冲突; 正在访存,此时必须待存取周期结束后, 再将总线占有权让出; 和 同时请求访存,出现访存冲突,此时 要暂时放弃总线占有权。 访存优先级高于 访存,因为 不立即访存就可能丢失数据,此时由 设备挪用一个或几个存取周期,传送完一个数据后立即释放总线,是一种单字传送方式。
与 交替访存:这种方式适用于 的工作周期比主存存取周期长的情况。将一个 周期分为 和 两个周期,其中 专供 访存, 专供 访存。 优点:不需要总线使用权的申请、建立和归还过程,总线使用权是通过
和 分时控制的。 缺点:硬件逻辑更为复杂
中断 | ||
---|---|---|
数据传送 | 程序控制 程序的切换→保存和恢复现场 | 硬件控制 |
中断请求 | 传送数据 | 后处理 |
响应 | 指令执行周期结束后响应中断 | 每个机器周期结束均可,总线空闲时即可响应 |
场景 | ||
优先级 | 优先级低于 | 优先级高于中断 |
异常处理 | 能处理异常事件 | 仅传送数据 |