操作系统 第七章 输入输出系统(上)

本章思维导图

7.1 I/O系统的功能、模型与接口

7.1.1 I/O系统的基本功能

(1)能够隐藏I/O设备的细节。

(2)能够保证设备无关性。

(3)能够提高处理及和I/O设备的利用率。

(4)能够对I/O设备进行控制。

(5)能够确保对设备的正确共享。

(6)能够处理错误。

第一、第二方面的功能是为了方便用户使用I/O设备;第三、第四方面的功能是为了提高处理机和I/O设备的利用率;第五、第六方面的功能是为了给用户在共享设备时提供方便

7.1.2 I/O系统的层次结构与模型

I/O系统由I/O软件和I/O设备(硬件)等组成。目前已普遍采用具有层次结构的I/O系统。每层都是利用下层提供的服务来完成I/O功能中的某些子功能的。

1 I/O系统的层次结构

(1)用户层软件。与用户交互,给用户操作设备提供了库函数。

(2)与设备无关的I/O软件。实现用户与设备驱动器的统一接口,设备命令,设备保护,分配释放,缓冲区管理。

(3)设备驱动程序。与硬件直接想关,实现CPU向设备发出的操作命令,驱动IO设备工作。

(4)中断处理程序。保存现场信息,转ISR,恢复现场,返回。

2 I/O系统的模型

7.1.3 I/O系统的接口

I/O系统与上层之间的接口,根据设备类型的不同,可分为三个接口:块设备接口、流设备接口和网络通信接口

1 块设备接口

块设备接口是块设备管理程序与上层之间的接口。该接口反映了大部分磁盘存储器、光盘存储器、闪存等的本质特征,用于控制该类设备的I/O。

(1)块设备。是指数据的存取和传输都是以数据块为单位的设备。典型的块设备是磁盘。该设备的基本特征是传输速率较高,每秒几十MB或几百MB。可寻址可随机访问DMA方式传输

(2)隐藏了磁盘的二维结构。磁道->扇区->逻辑块号。

(3)将抽象命令映射为低层操作。将上层抽象命令映射为底层操作,逻辑块号为具体磁盘地址。

2 流设备接口

流设备接口是流设备管理程序与上层之间的接口。又称为字符设备接口,反映了大部分字符设备的本质特征,用于控制字符设备的I/O。

(1)字符设备。是指数据的存取和传输都是以字符(字节)为单位的设备,如打印机、键盘等。字符设备的基本特征是传输速率较低,每秒几B或数千B。不可寻址;中断驱动I/O方式

(2)get操作和put操作。由于字符不可寻址,因此采用顺序存取方式并使用缓冲区。

(3)in-control指令。字符设备种类多,差异大,流接口提供in-control设置设备参数。

3 网络通信接口

现在的OS都提供面向网络的功能。OS提供网络软件和网络通信接口,计算机通过网络与其他计算机进行通信与数据访问。

7.2 I/O设备和设备控制器

7.2.1 I/O设备

1 I/O设备的类型

(1)按使用特性分类。第一类是存储设备,也称为外存、辅存,是用于存储信息的主要设备。第二类是I/O设备,它又可分为输入设备、输出设备和交互式设备。输入设备用于接受外部信息,如键盘、鼠标、扫描仪、视频摄像机等。输出设备用于将计算机处理后的信息送向处理机外部的设备,如打印机、绘图仪等。交互式设备主要有显示器等。

(2)按传输速率分类。第一类是低速设备,其传输设备仅为每秒几字节至数百字节,典型的低速设备有键盘、鼠标等。第二类是中速设备,其传输设备为每秒数千字节至数十万字节,典型的中速设备有行式打印机、激光打印机等。第三类是高速设备,其传输设备为每秒数十万字节至千兆字节,典型的高速设备有磁带机、磁盘机、光盘机等。

2 设备与设备控制器之间的接口

设备并不直接与CPU通信,而是与设备控制器通信。

接口中的三类信号:数据信号;状态信号;控制信号。

7.2.2 设备控制器

设备控制器的主要功能是,控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。它是CPU与I/O设备之间的接口,接受从CPU发来的命令。设备控制器可分为两类:一类是用于控制字符设备的控制器,另一类是用于控制块设备的控制器。

1 设备控制器的基本功能

基本功能接受和识别命令;数据交换;标志和报告设备的状态;地址识别;数据缓冲区;差错控制

2 设备控制器的组成

组成设备控制器与CPU之间的接口;设备控制器与I/O设备之间的接口;I/O逻辑。

7.2.3 内存映像I/O

每个端口都有地址,CPU通过端口地址控制设备控制器工作

端口地址有两种编址方式

设备独立编址方式(利用特定I/O指令方式)

内存统一编址(内存映像方式)

1 采用特定I/O指令形式

用于独立编址,端口地址与内存地址不可重叠,读端口和读内存用不同的指令,通过IO指令控制设备端口读写。如微机:IN/OUT/MOV

2 采用内存映像I/O指令形式

用于统一编址中,端口地址与内存地址统一编制,作为内存地址空间的一部分,读端口和读内存用相同指令,简化IO编程。

7.2.4 I/O通道

1 I/O通道设备的引入

设备控制器减少了CPU对I/O设备的干预,大型机增设I/O通道,I/O通道是一种特殊处理机:只执行IO指令,与CPU共享内存,把CPU从繁重I/O任务解脱。

①数据传输由通道完成

②IO操作组织,管理及结束工作尽量独立由通道完成

③CPU专注数据计算

通道是一种特殊的处理机,但又与处理机不同:通道没有自己的内存;通道指令类型单一

2 通道类型

(1)字节多路通道。以字节交叉方式工作,连接多个低速设备,按时间片轮转方式为多个设备服务。

(2)数组选择通道。可连接多个高速设备,一次只服务一个设备,通道利用率低

(3)数组多路通道。将数组选择通道传输速率高和字节多路通道能使各子通道(设备)分时并行操作相结合,按数组方式传输,速率高,通道利用率高

3 通道传输“瓶颈”问题

由于通道价格昂贵,机器中所设置的通道数量势必较少,这往往又会使它成为I/O的“瓶颈”,进而造成整个系统吞吐量下降。

解决“瓶颈”问题最有效的方法:增设通路而不增加通道,一个设备连接多个控制器,一个控制器连接多个设备。

7.2.5 I/O设备的控制方式

1 使用轮询的可编程I/O方式

最早出现的I/O处理方式。轮询查询I/O控制器中的状态R,busy=0/1。

特点

①CPU绝大部分时间查询设备状态,CPU忙等;

②CPU主动,设备被动。

2 使用中断的可编程I/O方式

CPU向设备控制器发出I/O命令,然后继续返回执行原理命令;设备控制器按命令要求去控制指定I/O设备。CPU与I/O设备并行操作;完成后设备控制器由CPU发出中断,CPU中断处理读/写数据。

特点

①设备主动;

②CPU与I/O设备并行工作,CPU只需要极短时间处理中断;

③提高资源利用率和吞吐量;

④实时性好。

3 直接存储访问(DMA)方式

中断驱动I/O仍以字节为单位进行I/O,每传送1字节发送一次中断;中断处理前后开销大,若用于块设备效率低,中断过于频繁;为进一步减少IO对CPU的干预,引入直接存储器访问方式,也称DMA。

特点

①传输单位是数据块,CPU和I/O设备每次至少传输一个数据块;

②数据从设备直接送入内存,或者相反,不经过CPU;

③仅在传送开始和结束才需CPU干预,整块数据传送是在DMA控制器的控制下完成的;

④DMA比中断方式CPU和I/O设备并行度高。

·DMA的组成

DMA控制器由三部分组成:主机与DMA控制器的接口,DMA控制器与块设备的接口;I/O控制逻辑

命令/状态寄存器 CR,内存地址寄存器MAR,数据寄存器DR,数据计数器DC

·DMA的工作过程

磁盘为例:

CPU向设备控制器发出命令,并设置DR,MAR,DC,CR;启动DMA控制器进行数据传送;在DMA控制器控制下数据传至内存,CPU可做其他工作;完成后DMA控制器发中断请求。

4 I/O通道方式

(1)I/O通道方式的引入。进一步减少CPU对I/O设备的干预,以多个块为单位进行数据传送,一次传送多组数据到多个不同的内存区域。

(2)通道程序。通道程序通过执行通道程序并与设备控制器共同实现I/O设备的控制,通道程序是一系列通道指令(通道命令)所构成,通道指令通常与I/O操作有关,指令包含:

①操作码 ②内存地址 ③计数 ④通道结束位P:是否是最后一条指令 ⑤记录结束标志R:R=0:与上条记录相同,R=1:新纪录。

7.3 中断和中断处理程序

7.3.1 中断

1 中断和陷入

(1)中断(interrupt)。指CPU对I/O设备发来的中断信号的一种响应。IO设备向CPU发出的信号,又称外部中断。CPU暂停正在执行的程序,保留CPU环境后,自动地转去执行该IO设备的中断处理程序。

(2)陷入或陷阱(trap)。由CPU内部事件所引起的中断,又称内中断。例如:运算溢出,程序出错,非法指令,地址越界。

2 中断向量表和中断优先级

(1)中断向量表。OS为每个中断都配备一个中断号和中断处理程序(ISR);ISR在内存的首地址称为中断向量;系统所有中断向量放在一起构成表格称为中断向量表IVT。

(2)中断优先级。根据中断紧迫程度为中断安排优先级;优先级越高越紧迫;高优先级可打断低优先级的执行,中断嵌套。

3 处理多中断信号源的方式

(1)屏蔽(禁止)中断。处理中断时屏蔽所有中断。简单,所有中断按顺序处理,不能满足实时性要求高的中断请求。

(2)嵌套中断。如果同时有多个中断发送,先处理优先级高的中断;高优先级中断可抢占低优先级中断CPU。

7.3.2 中断处理程序

进程请求I/O操作将被挂起,I/O设备完成I/O操作后,设备控制器向CPU发出I/O中断请求,CPU响应后转入中断处理程序,中断处理程序执行相应处理,处理完解除相应进程的阻塞状态。

中断处理程序的处理过程可分为以下几个步骤。

(1)测定是否有未响应的中断信号。

(2)保护被中断进程的CPU现场环境。

(3)转入相应设备的中断处理程序。

(4)处理中断。

(5)恢复CPU现场环境后退出中断。

7.3.3 实例:Linux系统中断处理

中断处理程序是普通的C函数,设计可分为3个部分:注册中断;处理中断;注销中断。

7.4 设备驱动程序

设备驱动程序又称为设备处理程序。它是I/O系统的上层与设备控制器之间的通信程序,其主要任务是接收上层软件发来的抽象I/O要求,如read或write命令。

7.4.1 设备驱动程序概述

1 设备驱动程序的功能

① 接受设备无关层软件的命令和参数,将抽象命令转换为与设备相关的低层操作序列。

② 检查I/O合法性,了解设备工作状态,传递与I/O设备有关的操作序列,设置设备工作方式。

③ 发出I/O命令,若设备空闲便启动I/O设备完成操作;若设备忙碌则将请求块挂在设备队列上等待。

④ 及时响应设备控制器的中断请求,根据中断类型调用相应中断处理程序。

2 设备驱动程序的特点

① 实现设备无关层软件与设备控制器的通信和转换程序。

② 与设备控制器及I/O设备紧密相关。

③ 与I/O设备所采用的I/O控制方式紧密相关,若中断驱动和DMA。

④ 因为与设备的紧密相关,许多用汇编语言编写。目前很多驱动程序已经固化在ROM中。

⑤ 驱动程序应允许可重入,一个正在运行的驱动程序常会在一次调用完成前再次被调用。

3 设备处理方式

① 每类设置一个进程,专门执行该类设备I/O操作,如交互式中断进程。打印进程等,适合大型系统。

② 系统中只有一个I/O进程,执行所有各类设备I/O操作。

③ 不设置专门设备处理进程,只为各类设备设置相应设备驱动程序供调用,该方式最为普遍。

7.4.2 设备驱动程序的执行过程

执行过程分为5个过程。

①将抽象要求转换为具体要求:如逻辑块号转化为磁盘地址。

②检查请求服务合法性。

③检查设备状态:是否为就绪状态? 状态R。

④传送必要参数:命令R,工作模式,如232的波特率,校验方式。

⑤启动I/O设备。

7.4.2 设备驱动程序的框架

1 设备驱动程序与外界的接口

(1)设备驱动程序与OS内核的接口。

(2)设备驱动程序与系统引导的接口。

(3)设备驱动程序与设备的接口。

2 设备驱动程序与外界的组成

(1)设备驱动程序的注册与注销。

(2)设备的打开与释放。

(3)设备的读/写操作。

(4)设备的控制操作。

(5)设备的中断与轮询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值