文章目录
- 一.I/O设备
- 二.I/O控制器/设备控制器
- 三.I/O控制方式
- 1.程序直接控制方式
- 2.中断驱动方式
- 3.DMA方式(直接存储器存取)
- 4.通道控制方式
- 四.I/O子系统的层次结构
- 五.输入/输出应用程序接口&设备驱动程序接口
- (一)输入/输出应用程序接口
- (二)设备驱动程序接口
一.I/O设备
1.按使用特性分类
(1)人机交互类外部设备(速度慢):用于计算机与用户之间交互的设备。如:鼠标、键盘、打印机
(2)存储设备(速度快):用于存储程序和数据的设备。如:磁盘、光盘、磁带
(3)网络通信设备(速度中等):用于与远程设备通信的设备。如:网络接口、调制解调器、路由器
2.按传输速度分类
(1)低速设备:传输速率每秒几字节到几百字节。如:键盘、鼠标
(2)中速设备:传输速率每秒几千字节到几万字节。如:行式打印机、激光打印机
(3)高速设备:传输速率在数百千字节至千兆字节。如:磁带机、磁盘机、光盘机
3.按信息交换的单位分类
(1)块设备。信息的存取以数据块为基本单位,所以存储信息的设备成为块设备,属于有结构设备。如:磁盘。特点:传输速率高、可寻址,即对它可以随机地读/写任一块
(2)字符设备:用于数据输入/输出的设备为字符设备,因为其传输的基本单位是字符,属于无结构类型。如:打印机、交互式终端机。特点:传输速率低、不可寻址,在输入/输出时常采用中断驱动方式
二.I/O控制器/设备控制器
l/O设备的机械部件主要用来执行具体I/O操作。如:鼠标/键盘的按钮、显示器的LED屏、移动硬盘的磁臂、磁盘盘面。
I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。这个电子部件就是I/O控制器,又称设备控制器。CPU可控制I/O控制器,又由I/O控制器来控制设备的机械部件。
- 设备控制器
1.I/O控制器的功能
2.I/O控制器的组成
设备控制器必须包括:设备控制器与CPU的接口、设备控制器与设备的接口、I/O控制逻辑
一个I/O控制器可能对应对个设备,因此数据寄存器、控制寄存器、状态寄存器可能有多个,且这些寄存器都要有相应的地址,才能方便CPU操作
(1)内存映像I/O
寄存器占用内存地址的一部分,称为内存映像I/O
优点:简化了指令。可以采用对内存进行操作的指令来对控制器进行操作
(2)寄存器独立编址
采用I/O专用地址,控制器中的寄存器使用单独的地址
缺点:需要设置专门的指令来实现对控制器的操作,不仅要指明寄存器的地址,还要指明控制器的编号
三.I/O控制方式
1.程序直接控制方式
读操作:
①CPU向控制器发出读指令(CUP向I/O发出,即CPU→I/O)。设备启动,并且状态寄存器设为1(未就绪/忙碌)
②不断循环检查控制器的状态。若状态位一直是1(在CPU读I/O模块状态时,从I/O控制器的状态寄存器读出数据放入CPU寄存器中分析,即I/O→CPU),说明设备还没准备好要输入的数据,于是CPU会不断地轮询。
③输入设备准备好数据后将数据传给控制器,并报告自身状态
④控制器将输入的数据放到数据寄存器中,并将状态改为0(已就绪)
⑤CPU发现设备已就绪,将数据寄存器中的内容读入CPU寄存器中(从I/O模块读取字,即I/O→CPU),再把CPU寄存器中的内容放入内存(往存储器中写入字,即CPU→存储器)
优点:实现简单
缺点:CPU和I/O只能串行工作,导致CPU利用率低
2.中断驱动方式
每次I/O操作开始之前、完成之后需要CPU介入。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待l/O的进程(或其他进程)的运行环境,然后继续执行。
特点:
①CPU会在每个指令周期的末尾检查中断
②中断处理过程中需要保存、恢复进程的运行环境,需要一定时间开销。如果中断发生的频率太高,也会降低系统性能。
优点:本次I/O完成后设备控制器发出中断信号,CPU利用率提高,CPU和I/O设备可并行工作
缺点:数据中每个字在存储器与I/O控制器之间的传输都必须经过CPU,导致消耗较多的CPU时间
3.DMA方式(直接存储器存取)
CPU接收到I/O设备的DMA请求时,给I/O控制器发出一条命令,启动DMA控制器。CPU把控制操作委托给DMA控制器,然后继续其他工作。DMA控制器直接与存储器交互,传送整个数据块,每次传送一个字,此过程不需要CPU干预。传送完成后,DMA控制器给处理器发送中断信号,CPU再参与处理。因此,在开始和结束时才需要CPU的参与。
DMA控制器的组成
(1)命令/状态寄存器CR:存放CPU发来的I/O命令,或设备的状态信息
(2)内存地址寄存器MAR:在输入时,MAR表示数据应放到内存中的什么MAR位置;输出时MAR表示要输出的数据放在内存中的什么位置。
(3)数据寄存器DR:暂存从设备到内存,或从内存到设备的数据
(4)数据计数器DC:存放本次要读/写的字(节)数
优点:数据传输以“块”为单位(一个或多个连续的块),CPU介入频率进一步降低,仅在传送一个或多个数据块的开始和结束时才需要CPU干预,CPU利用率进一步提高,CPU和I/O的并行性得到提升
缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块(每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)。如果要读/写多个离散的快,需要多条指令。
4.通道控制方式
通道:独立于CPU的,控制输入/输出的设备
①CPU向通道发出I/O指令。为通道指明通道程序(即任务清单。指明了要读入/写出多少数据,读/写的数据应放在内存的什么位置等信息)在内存中的位置,并指明要操作的是哪个I/O设备,之后CPU就切换到其他进程执行了
②通道执行内存中的通道程序
③通道执行完规定的任务后,向CPU发出中断信号,之后CPU对中断进行处理
通道指令单一,没有自己的内存,通道所执行的通道程序是放在主机内存中的,即通道与CPU共享内存。
一个通道可以控制多个I/O控制器,一个I/O控制器可以控制多个I/O设备
优点:CPU、通道、I/O设备可并行工作,资源利用率很高
缺点:实现复杂,需要专门的通道硬件支持
- 为什么说直到出现中断和通道技术后,多道程序概念才变得有用?
多道程序并发执行是指有的程序在CPU上执行,而另一些程序正在I/O设备上进行传输,即通过CPU操作与外设传输在时间上的重叠必须有中断和通道技术的支持。原因如下:
(1)通道是一种控制一台或多台外部设备的硬件机构,它一旦被启动就独立于CPU运行,因而做到了输入/输出操作与CPU并行工作。但早期的CPU与通道的联络方法是由CPU向通道发出询问指令来了解通道工作是否完成的。若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到CPU与I/O设备并行工作的。
(2)在硬件上引入了中断技术。所谓中断,就是在输入/输出结束时,或硬件发生某种故障时,由相应的硬件(即中断机构)向CPU发出信号,这时CPU立即停下工作而转向处理中断请求,待处理完中断后再继续原来的工作。
因此,通道技术和中断技术结合起来就可以实现CPU和I/O设备并行工作,即CPU启动通道传输数据便去执行其他程序的计算工作,而通道则进行输入/输出操作;当通道工作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的操作,对出现的中断进行处理,处理完后再继续原来的工作。这样,就真正做到了CPU与I/O设备并行工作。此时,多道程序的概念才变为现实。
总结
下面用一个例子来总结以上4种I/O控制方式。想象一位客户要去裁缝店做一批衣服的情形。
采用程序直接控制时,裁缝没有客户的联系方式,客户必须每隔一段时间去裁缝店看看裁缝把衣服做好了没有,这就浪费了客户不少的时间。
采用中断驱动方式时,裁缝有客户的联系方式,每当他完成一件衣服后,给客户打一个电话,让客户去拿,与程序直接控制能省去客户不少麻烦,但每完成一件衣服就让客户去拿一次,仍然比较浪费客户的时间。
采用DMA方式时,客户花钱雇一位单线秘书,并向秘书交代好把衣服放在哪里(存放仓库),裁缝要联系就直接联系秘书,秘书负责把衣服取回来并放在合适的位置,每处理完100件衣服,秘书就要给客户报告一次(大大节省了客户的时间)。
采用通道方式时,秘书拥有更高的自主权,与DMA方式相比,他可以决定把衣服存放在哪里,而不需要客户操心。而且,何时向客户报告,是处理完100件衣服就报告,还是处理完10000件衣服才报告,秘书是可以决定的。客户有可能在多个裁缝那里订了货,一位DMA类的秘书只能负责与一位裁缝沟通,但通道类秘书却可以与多名裁缝进行沟通。
-
DMA方式与中断控制方式的主要区别是什么?
(1)中断控制方式每个数据传送完成后中断CPU,而DMA控制方式则在所要求的传送的一批数据全部传送结束时中断CPU
(2)中断控制方式的数据传送在中断处理时由CPU控制完成,而DMA控制方式则在DMA控制器的控制下完成。不过,在DMA控制方式中,数据传送的方向、存放数据的内存始址及传送数据的长度等仍然由CPU控制
(3)DMA方式以存储器为核心,中断控制方式以CPU为核心。因此DMA方式能与CPU并行工作
(4)DMA方式传输批量的数据,中断控制方式的传输则以字节为单位 -
DMA方式与通道方式的主要区别是什么?
在DMA控制方式中,在DMA控制器的控制下设备和主存之间可以成批地进行数据交换而不用CPU干预,这样既减轻了CPU的负担,又大大提高了I/O数据传送的速度。通道控制方式与DMA控制方式类似,也是一种以内存为中心实现设备与内存直接交换数据的控制方式。不过在通道控制方式中,CPU只需发出启动指令,指出通道相应的操作和I/O设备,该指令就可以启动通道并使通道从内存中调出相应的通道程序执行。与DMA控制方式相比,通道控制方式所需的CPU干预更少,并且一个通道可以控制多台设备,进一步减轻了CPU的负担。另外,对通道来说,可以使用一些指令灵活改变通道程序,这一点DMA控制方式无法做到。
四.I/O子系统的层次结构
1.用户层软件
2.设备独立性软件/设备无关性软件
与设备的硬件特性无关的功能几乎都在这一层实现。
功能:
①向上层提供统一的调用接口(如read/write系统调用)
②设备的保护:原理类似与文件保护。设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样
③差错处理:设备独立性软件需要对一些设备的错误进行处理
④设备的分配与回收
⑤数据缓冲区管理:可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异
⑥建立逻辑设备名到物理设备名的映射关系:根据设备类型选择调用相应的驱动程序。不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作。
用户或用户层软件发出I/O操作相关系统调用的系统调用时,需要指明此次要操作的I/O设备的逻辑设备名。
设备独立性软件需要通过逻辑设备表LUT来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序
操作系统系统可以采用两种方式管理逻辑设备表:
方式一:整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统
方式二:为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中
- 为什么要引入设备独立性?如何实现设备独立性?
设备独立性可以提高操作系统的可适应性和可扩展性。实现设备独立性需要操作系统设置一张逻辑设备表(LUT)用来将用户程序中所使用的逻辑设备名称转换成物理设备名,该表的每一个表目包含逻辑设备名,物理设备名和设备驱动程序的入口地址 - 什么是设备独立性?引入设备独立性有什么好处?
设备独立性是指用户在编程序时使用的设备与实际设备无关。一个程序应独立于分配给它的某类设备的具体设备,即在用户程序中只指明I/O使用的设备类型即可
优点:①方便用户编程②使程序运行不受具体机器环境的限制③便于程序移植
3.设备驱动程序
与硬件相关 。主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等
4.中断处理程序
与硬件相关 。当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。中断处理程序的处理流程如下:
5.硬件
执行I/O操作,有机械部件、电子部件组成。不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道。因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。
总结
五.输入/输出应用程序接口&设备驱动程序接口
(一)输入/输出应用程序接口
1.字符设备接口
get/put系统调用:向字符设备读/写一个字符
2.块设备接口
seek系统调用:修改读写指针位置,指定读写指针放到磁盘的哪个地址
read/write系统调用:向块设备的读写指针位置读/写多个字符
3.网络设备接口/网络套接字(socket)接口
socket系统调用:创建一个网络套接字,需指明网络协议(TCP/UDP)
bind:将套接字绑定到某个本地端口
connect:将套接字连接到远程地址
read/write:从套接字读/写数据
①P3使用socket系统调用创建网络套接字,socket系统调用给用户进程返回一个描述符(指向套接字的指针),使用bind绑定到本地的6666端口。
②P1使用connect系统调用把fd连接到主机2ip地址的6666端口,使得两个套接字直接建立连接。
主机通信:P1给P3发送数据包
①P1在用户区准备好数据,使用write系统调用指明往fd指向的套接字(主机1)中写入数据。
②设备独立性软件接收到write系统调用,把用户进程准备好的数据复制到套接字缓冲区
③设备独立性软件调用网络控制器的驱动程序处理数据,网络控制器的驱动程序负责把数据输出到网络设备上
④网络控制器将数据报发送到网络上
⑤主机2的网络控制器接收到数据包后向主机发出中断信号,主机2的中断处理信号调用网络控制器驱动程序,让驱动程序将数据搬入socket缓冲区中
⑥P3使用read系统调用指明从fd指向的套接字中读出数据包。
⑦设备独立性软件从缓冲区中将数据复制到用户空间中
4.阻塞I/O与非阻塞I/O
(1)阻塞I/O:应用程序发出I/O系统调用,进程需转为阻塞态等待。如字符设备接口:从键盘读一个字符get
非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。如块设备接口:往磁盘写数据 write
(二)设备驱动程序接口
若各公司开发的设备驱动程序接囗不统一,则操作系统很难调用设备驱动程序
操作系统规定好设备驱动程序的接口标准,各厂商必须按要求开发设备驱动程序