os0520121128系统_第1页
os0520121128系统_第2页
os0520121128系统_第3页
os0520121128系统_第4页
os0520121128系统_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MODERN OPERATING SYSTEMSThird EditionANDREW S. TANENBAUMChapter 5Input/Output回顾&思考o OS的任务?本章主要内容o I/O硬件原理n I/O设备n 设备控制器n 内存映射I/On DMA 直接存储器存取n 中断o I/O软件原理o I/O软件层次常见外部设备的分类常见外部设备的分类 人机交互设备人机交互设备( (字符设备字符设备, ,通常发送接收通常发送接收以字符方式以字符方式) )存储类型设备存储类型设备( (块设备块设备, ,读写以数据块方读写以数据块方式)式)网络通讯的设备网络通讯的设备I/OI/O设备的差别

2、设备的差别设备的功能、控制的复杂性、数据传输单设备的功能、控制的复杂性、数据传输单位各异位各异设备驱动接口、使用接口不同设备驱动接口、使用接口不同Figure 5-1. 一些典型的设备的数据传输率.思考思考:教材P.241/427-2I/O Devices本章主要内容o I/O硬件原理n I/O设备n 设备控制器n 内存映射I/On DMA 直接存储器存取n 中断o I/O软件原理o I/O软件层次设备控制器o I/O设备n 机械部件n 电子部件:Device controller/adapter设备控制器设备控制器请注意:请注意:操作系统与控制操作系统与控制器打交道,由控制器控制器打交道,由

3、控制器控制设备本身设备本身PCIPCI总线控总线控制器制器处理机处理机内存内存显卡显卡外外设设光光盘盘磁磁盘盘IDEIDE总线控总线控制器制器外 设 控 制外 设 控 制器器控控制制器器控控制制器器连接连接CPUCPU、内存、设备控制器和、内存、设备控制器和I/OI/O设备模型设备模型 Peripheral Component Interconnect(外设部件互连标准)IDE,智能磁盘设备,专门为磁盘类磁盘类外部设备而设计的总线参考:http:/ I/O设备n 机械部件n 电子部件:设备控制器/适配器 磁盘控制器磁盘控制器任务任务:把从驱动器出来把从驱动器出来的的串行的位流串行的位流转转换为

4、换为字节块字节块【放放入内部缓冲区入内部缓冲区】,并进行必要的错并进行必要的错误校正工作误校正工作早期早期CPUCPU是直接控制外部设备的,在引入是直接控制外部设备的,在引入I/OI/O电子部件电子部件之后,之后,I/OI/O指令功能加强,才将指令功能加强,才将CPUCPU逐渐从与外设的交互细节中解放出来。逐渐从与外设的交互细节中解放出来。内部缓冲区内部缓冲区内存内存控制器的任务控制器的任务是在外设与内存之间完成比特流与是在外设与内存之间完成比特流与字节字节块之间的转换块之间的转换;或外设与或外设与CPUCPU之间完成比特流(或外部之间完成比特流(或外部信号)与字节流之间的转换。信号)与字节流

5、之间的转换。磁盘磁盘 控制器控制器主存主存比特流比特流字节块字节块转换、校验转换、校验字符显示字符显示控制器控制器主存经主存经CPUCPU显示信号(如字符)显示信号(如字符)字节流字节流转换转换 每个控制器都有一些用来与每个控制器都有一些用来与CPUCPU通讯的通讯的I/OI/O寄存寄存器器。操作系统通过向这些寄存器写命令字来实。操作系统通过向这些寄存器写命令字来实现现I/OI/O功能。功能。键盘键盘060 - 063060 - 063硬盘硬盘320 320 32F 32F打印机打印机378 378 37F 37F软盘软盘3F0 3F0 3F7 3F7彩色显示器彩色显示器3D0 3D0 3DF

6、 3DFIBM PCIBM PC的控制器寄存器编址的控制器寄存器编址本章主要内容o I/O硬件原理n I/O设备n 设备控制器n 内存映射I/On DMA 直接存储器存取n 中断o I/O软件原理o I/O软件层次Memory-Mapped I/O 内存映射I/Oo CPU如何与设备的控制寄存器和数据缓冲区进行通信?n法1:o 每个控制寄存器被分配一个I/O端口号【8位或16位的整数】-I/O端口空间(I/O port space)o I/O端口空间只有操作系统能访问如使用一条特殊的I/O指令:IN REG,PORTCPU读取控制寄存器PORT的内容并将结果存入CPU寄存器REG中Figure

7、 5-2. (a) 独立的I/O和内存空间. 内存映射I/Oo CPU如何与设备的控制寄存器和数据缓冲区进行通信?n法1:内存地址空间和I/O地址空间是不同的o IN R0 4 : 读取I/O端口号4的内容存入R0 o MOV R0 4: 读取内存字4的内容并将其存入R0预告:关于考试o 50%(选择、判断、简答、分析、设计)o 时间:第18周统一安排 90分钟Figure 5-2. (b) 内存映射 I/O内存映射I/Oo CPU如何与设备的控制寄存器和数据缓冲区进行通信?n 法2:内存映射I/Oo 将所有控制寄存器映射到内存空间中o 每个控制寄存器被分配唯唯一的独占的一个内存地址一的独占的

8、一个内存地址o 通常位于地址空间的顶端Figure 5-2. (c) 混合模式内存映射I/Oo CPU如何与设备的控制寄存器和数据缓冲区进行通信?n 法3:混合方案o 具有内存映射I/O的数据缓冲区o 控制寄存器具有单独的I/O端口【如Pentium】内存映射I/Oo CPU如何与设备的控制寄存器和数据缓冲区进行通信?nCPU读入一个字的寻址步骤:o 将需要的地址放到总线的地址线上o 在总线的控制线上置起一个READ信号o 需用第二条信号线表明需要的地址空间需用第二条信号线表明需要的地址空间【I/O或内存空间或内存空间】n若为若为I/O空间,则空间,则I/O设备响应请求设备响应请求n若为内存空

9、间,则内存响应请求若为内存空间,则内存响应请求o 如果只有内存空间如果只有内存空间【法法2】:每个内存模块和每个:每个内存模块和每个I/O设备设备都会将地址线和它所服务的地址范围进行比较,如果地址落都会将地址线和它所服务的地址范围进行比较,如果地址落在这一范围内则响应请求在这一范围内则响应请求内存映射I/O的优缺点o 优点:n 寻址无需用汇编代码,无需额外的控制I/O的开销n 不需要特殊的保护机制来阻止用户进程执行I/O操作o OS只需避免将包含控制寄存器的那部分地址空间放入到任何用户的虚拟地址空间中;可以使不同的设备驱动程序放置在不同的地址空间中:减小内核,也防止相互干扰n 可以引用内存的每

10、条指令也可以引用控制寄存器内存映射I/O的优缺点o 缺点:n 应对内存字高速缓存:对一个设备控制寄存器进行高速缓存可能是灾难性的-LOOP: TEST PORT_4 /检测端口4是否为0 BEQ READY /如果为0,转向READY BRANCH LOOP/否则继续测试READY:第一次引用第一次引用PORT_4将导致它被高速缓存将导致它被高速缓存如何避免?如何避免?内存映射I/O的优缺点o 缺点:n 只存在一个地址空间,所有的内存模块和所有的只存在一个地址空间,所有的内存模块和所有的I/O设备都必须检查所有的内存引用,以便了解由设备都必须检查所有的内存引用,以便了解由谁做出响应谁做出响应o

11、 单总线?单总线?o 多种总线?多种总线?o 如何解决?I/O设备无法查看内存地址Figure 5-3. (a) 单总线体系结构. (b) 双总线内存体系结构.内存映射I/O的优缺点思考思考:教材P.241/428-3内存映射I/O的优缺点o 缺点:只存在一个地址空间,所有的内存模块和所只存在一个地址空间,所有的内存模块和所有的有的I/O设备都必须检查所有的内存引用,以便了设备都必须检查所有的内存引用,以便了解由谁做出响应解由谁做出响应o 如何处理使得多种总线时如何处理使得多种总线时I/O设备可以获取内存地址设备可以获取内存地址n 首先将所有内存引用发送到内存首先将所有内存引用发送到内存,再发

12、到专用的高速内存总线-额外的硬件复杂性n 内存总线上放置一个探查设备,放过所有潜在的指向关注的I/O设备的地址-I/O设备速度n 在PCI桥芯片中对地址进行过滤:芯片中包含若干引导时预装载的范围寄存器挑出非真正内存地址非真正内存地址发给PCI总线【图1-12】-引导时需判定内存地址是否为真正的内存地址本章主要内容o I/O硬件原理n I/O设备n 设备控制器n 内存映射I/On Direct Memory Access ,DMA 直接存储器存取o CPU与I/O设备交换数据I/O控制器,如何交换?o DMA:需要有DMA控制器n 中断o I/O软件原理o I/O软件层次DMA控制器与其他部件的

13、关系控制器与其他部件的关系无论DMA控制器在物理上处于什么地方,它都能独立于独立于CPU而访问系而访问系统总线统总线Figure 5-4. DMA传送操作.Direct Memory Access (DMA)直接存储器访问编程编程应答应答DMA请求请求传送到内存传送到内存数据传送数据传送完成时中断完成时中断本章主要内容o I/O硬件原理n I/O设备n 设备控制器n 内存映射I/On DMA 直接存储器存取n 中断【课后重温_】o I/O软件原理o I/O软件层次Figure 5-5. How an interrupt happens. The connections between the

14、devices and the interrupt controller actually use interrupt lines on the bus rather than dedicated wires【在总线信号线上置起信在总线信号线上置起信号而产生中断:不是专用连线号而产生中断:不是专用连线】.Interrupts Revisited 重温中断:硬件层面重温中断:需考虑的问题o 开始中断服务程序前哪些信息需保存?n 哪些需信息保存依赖于CPUo 保存到哪里?n 放入内部寄存器,需要时OS可以读出这些内部寄存器n 大多数CPU在堆栈中保留信息o 谁的堆栈?当前的?-o 内核堆栈?-用户

15、进程堆栈指针非法或引发缺页中断切换到内核态可能要求改变MMU上下文,且可能使高速缓存和TLB大部分或全部失效重温中断:需考虑的问题o 当CPU采用流水线或采用超标量时【图1-7】,能否精确中断?n 中断恰好发生在某条指令执行后,这条指令之前包括这条指令都已经执行,这条指令后的指令都没有执行-精确中断微操作可微操作可能乱序执能乱序执行行保存的程序计数器保存的程序计数器的值是?的值是?o PC (Program Counter) is saved in a known place.PC【保存在一个已知的地方】o All instructions before the one pointed to

16、by the PC have fully executed.【PC所指向的指令之前的所有指令之前的所有指令已经完全执行完全执行】o No instruction beyond the one pointed to by the PC has been executed.o Execution state of the instruction pointed to by the PC is known.【PC指向的指令的执行状态是已知的】精确中断的特性Figure 5-6. (a) 一个精确中断. (b) 一个非精确中断.精确和非精确中断代价代价:CPU内部极其复杂的中断逻辑本章主要内容o I/

17、O硬件原理o I/O软件原理n I/O软件的目标n 数据传送控制方式o I/O软件层次I/O软件的目标o 设备独立性设备独立性 device independencen 能够编写这样的程序:可以访问任意I/O设备而无需事先指定设备o 统一命名 uniform namingn 一个文件或设备的名字不应依赖设备o 错误处理 error handlingn 尽可能在接近硬件的层面得到处理o 同步 synchronous 和异步 asynchrounous(即中断驱动:用户角度为阻塞式操作)o 缓冲 bufferingn 独占设备和共享设备独占设备和共享设备独占设备独占设备好比是你家的抽水马桶,当你坐

18、上去的时候,大家就是想用也得等你完事了站起来才可以用上。 共享设备共享设备呢,就像是我家的水龙头,我在洗手的时候,可以把手移开让我妈来打盆水。然后我又继续洗手。1、独占设备是指每次只能供一个作业执行期间单独使用的设备。如输入机、磁带机、打印机输入机、磁带机、打印机等。I/O软件的目标2、共享设备是指允许几个作业执行期间可同时使用共享设备是指允许几个作业执行期间可同时使用的设备的设备3 3、共享设备的、共享设备的“同时使用同时使用”的含义是指多个作业可的含义是指多个作业可以交替启动共享设备,当一个用业正在使用设备时以交替启动共享设备,当一个用业正在使用设备时其他作业暂不能使用,即每一时刻仍只有一

19、个作业其他作业暂不能使用,即每一时刻仍只有一个作业占用,但当一个作业停止使用设备时其他作业就可占用,但当一个作业停止使用设备时其他作业就可使用;使用;也就是以一次也就是以一次I/OI/O为单位分时使用设备,不为单位分时使用设备,不同进程的同进程的I/OI/O操作请求以排队方式分时地占用设备操作请求以排队方式分时地占用设备进行进行I/OI/O【 分时式共享分时式共享】 可能引起的问题:死锁死锁n独占设备和共享设备独占设备和共享设备本章主要内容o I/O硬件原理o I/O软件原理n I/O软件的目标n 数据传送控制方式o 直接程序控制I/Oo 中断驱动I/Oo 使用DMA的I/Oo I/O软件层次

20、直接程序控制I/Oo 让CPU做全部工作o 如一用户进程想在打印机上打印字符串“ABCDEFGH”n 在用户空间组装字符串5-7an 用户进程发出系统调用一获得打印机来进行写操作失败时返回错误代码或阻塞直到打印机可用n OS通常将字符串缓冲区复制到内核空间中的一个数组内核空间中的一个数组,然后查看打印机是否可用5-7bn 打印机可用,OS复制第一个字符到打印机的数据寄存器中n 。向向I/OI/O部件部件发读指令发读指令读读I/OI/O部件部件状态寄存器状态寄存器检查状态检查状态从从I/OI/O部件部件读字数据读字数据将该字写将该字写入内存入内存未未OKOKOKOK出错出错该块读完?该块读完?O

21、KOK下一下一指令指令未未OKOK直接程序控直接程序控制制I/OFigure 5-7. 打印一个字符串的步骤.直接程序控制I/OFigure 5-8. 使用程序控制I/O将一个字符串写到打印机.Programmed I/O轮询(polling)/忙等待(busy waiting)Programmed I/Oo 缺点?n 直到全部I/O完成之前要占用CPU的全部时间n 假定不缓冲字符而是在每个字符到来时便打印o如打印机每秒打印100个字符,即打印一个字符花10ms,则本章主要内容o I/O硬件原理o I/O软件原理n I/O软件的目标n 数据传送控制方式o 直接程序控制I/Oo 中断驱动I/Oo

22、 使用DMA的I/Oo I/O软件层次中断驱动I/O CPUCPU向向I/OI/O部件发出指令后,部件发出指令后,转去转去做其它进程做其它进程的工作。当的工作。当I/OI/O部件准备好数据后,利用部件准备好数据后,利用中中断通知断通知CPUCPU,再,再由由CPUCPU完成数据传输完成数据传输。 CPUCPU不必反复测试寄存器状态,节约了时间。不必反复测试寄存器状态,节约了时间。但总体看来,中断控制方式仍然消耗大量的但总体看来,中断控制方式仍然消耗大量的CPUCPU时间,因为时间,因为每个字(若干字节)的数据每个字(若干字节)的数据传输都必须经过传输都必须经过CPUCPU寄存器转发寄存器转发。

23、向向I/OI/O部件部件发读指令发读指令读读I/OI/O部件部件状态寄存器状态寄存器检查状态检查状态从从I/OI/O部件部件读字数据读字数据将该字写将该字写入内存入内存OKOK出错处理出错处理该块读完?该块读完?OKOK下一下一指令指令未未OKOK中断中断CPU去做别的工作,当前任务接下来的工作交给I/O控制器下一条指下一条指令令中断驱动I/Oo 一旦打印机就绪就将内核空间第一个字符复制到打印机中n 请求打印字符串的进程将阻塞,直到整个字符串打印完系统调用所作工作:图5-9ao 当打印机将字符打印完且准备好接收下一个字符时,它将产生一个中断o CPU响应该中断,则打印机中断服务过程将运行图5-

24、9bInterrupt-Driven I/O 中断驱动I/Oo CPU响应该中断,则打印机中断服务过程将运行图5-9bn 若没有更多的字符要打印,则中断处理程序将采取某个操作将用户进程解除阻塞解除阻塞进程状态转换进程状态转换是?是?,否则输出下一个字符,应答中断,并返回到中断之前正在运行的进程Figure 5-9. 使用中断驱动I/O完成字符串的打印. (a) 档打印系统调用被发出时执行的代码中断驱动I/OOS调度运行另一调度运行另一个进程个进程Figure 5-9. (b) 打印机的中断服务过程.Interrupt-Driven I/O 中断驱动I/O本章主要内容o I/O硬件原理o I/O

25、软件原理n I/O软件的目标n 数据传送控制方式o 直接程序控制I/Oo 中断驱动I/Oo使用DMA的I/O自主阅读n 回答:优缺点?o I/O软件层次Figure 5-10. Printing a string using DMA. (a) Code executed when the print system call is made. (b) Interrupt service procedure.I/O Using DMACPUCPU直接控制外部设备直接控制外部设备引入引入I/OI/O部件,部件,CPUCPU直接控制直接控制I/OI/O部件部件引入中断驱动方式引入中断驱动方式引入引入D

26、MADMAI/OI/O通道或通道或I/OI/O处理机处理机输入输出控制方式的发展过程输入输出控制方式的发展过程本章主要内容o I/O硬件原理o I/O软件原理o I/O软件层次n 中断处理程序n 设备驱动程序n 与设备无关的I/O软件o 设备驱动程序的统一接口o 缓冲o 错误报告n 用户空间的I/O软件Figure 5-11. I/O软件层次.I/O软件层次中断处理程序设备无关OS用户级I/O软件设备驱动程序用户进程用户进程用户层用户层I/OI/O设备无关设备无关的的I/OI/O设备驱动及设备驱动及中断处理中断处理硬件硬件设备管理子系统设备管理子系统逻辑结构图逻辑结构图核核心心态态运运行行用户

27、程序用户程序标准标准C C库库I/OI/O函数函数内核总控内核总控系统调用处理总控系统调用处理总控WriteWrite处理处理( (文件系统、文件系统、TCP/IP)TCP/IP)磁盘控制器磁盘控制器盘中断处理盘中断处理用户态用户态核心态核心态异步调用接口异步调用接口磁盘驱动程序磁盘驱动程序系统调用各模块关系图系统调用各模块关系图系统调用接口系统调用接口用户程序用户程序n 这一层与设备的控制细节无关,不直接与这一层与设备的控制细节无关,不直接与设备打交道。设备打交道。n它将所有的设备看作逻辑资源它将所有的设备看作逻辑资源,为用户进,为用户进程提供各类程提供各类I/OI/O函数函数【库过程库过程

28、】。n用户以设备标识符和一些简单的函数来使用户以设备标识符和一些简单的函数来使用设备,如打开、关闭、读、写等。用设备,如打开、关闭、读、写等。 如如C C库中的函数库中的函数fopen(); fread(); fopen(); fread(); fwrite(); fclose();printf()fwrite(); fclose();printf()等等 。一、用户级一、用户级I/OI/O例:count=write(fd,buffer,nbytes)用户级I/O软件o 假脱机(spooling)系统: 打印机/网络传输文件等例如例如: :同一进程所有输出数据在进程运同一进程所有输出数据在进程

29、运行时被写到同一文件当中,文件排到打印行时被写到同一文件当中,文件排到打印输出队列,打印输出队列,打印daemondaemon进程占用打印机后进程占用打印机后,成批读出文件中数据,并送打印机打印,成批读出文件中数据,并送打印机打印出去。出去。打印请求队列打印请求队列含要打印文件含要打印文件打印打印daemon daemon 进程进程打印机打印机二、设备无关的二、设备无关的OSOS设备无关设备无关I/OI/O基本功能基本功能:执行适用于所有设备的公共:执行适用于所有设备的公共I/OI/O功能,功能,并向上层提供统一的并向上层提供统一的系统调用接口系统调用接口。主要任务:主要任务: 设备命名及与设

30、备驱动程序的映射设备命名及与设备驱动程序的映射。在。在LinuxLinux中,如中,如/dev/fd0/dev/fd0唯一地确定了一个唯一地确定了一个i-nodei-node数据结数据结构,其中包含了主设备号,通过主设备号可以找构,其中包含了主设备号,通过主设备号可以找到相应的设备驱动程序。到相应的设备驱动程序。 设备访问控制设备访问控制 设备设备I/OI/O系统调用转调及数据系统调用转调及数据缓冲机制缓冲机制 文件系统功能、文件系统功能、TCP/IPTCP/IP协议也属于该层协议也属于该层Figure 5-13. 与设备无关的I/o软件功能.与设备无关的I/O软件Figure 5-14. (

31、a) Without a standard driver interface. (b) With a standard driver interface.1、标准的驱动程序接口为每个新的驱动程序提供接口需要大量全新的编程工作可供调用的驱动程序/内核函数Figure 5-15. (a) 无缓冲的输入. (b) 用户空间中的缓冲. (c) 内核空间中的缓冲接着复制到用户空间. (d) 内核空间中的双缓冲2、Buffering 缓冲(输入)o Double buffering 双缓冲o Circular buffering 循环缓冲n 1个内存区域+2个指针一个指向空闲的字;一个指向缓冲区中数据的第

32、一个字o 输出?课后自行阅读 Figure 5-16. Networking may involve many copies of a packet.Buffering:不利方面-性能降低Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639三、设备驱动程序三、设备驱动程序包括了所有与设备相关的代码,其包括了所有与设备相关的代码,其功能功能是是从与设备无关的软件中接收从与设备无关的软件中接收I/OI/O请求,排入请求,排入请求队列或执行之请求队

33、列或执行之 设备驱动程序o 功能具体包括n 接收来自其上方与设备无关的软件发出的抽象的读写请求n 可能要检查设备当前是否在用n 将命令写入控制器的设备寄存器,检测以了解控制其是否已经接收命令并准备好接收下一个命令n 操作完成后检查错误,将数据传送给与设备无关的软件n 。设备驱动程序n 设备寄存器的数量和命令的性质在不同设备之间有着根本性的不同根本性的不同n I/O设备需要的用来对其进行控制的某些设备特定设备特定的代码-device drive 设备驱动程序n 每个操作系统都需要自己的驱动程序n 如何防止驱动程序干扰内核?n 逻辑定位?图5-12Figure 5-12 设备驱动程序的逻辑定位。实际上驱动程序与设备控制器之间的所有通信都通过总线总线大多数OS定义了块设备和字符设备标准接口设备驱动程序o 驱动程序必须是重入(reentrant)的:一个正在运行的驱动程序必须预料到在第一次调用完成之前第二次被调用o 不允许进行系统调用四、中断处理程序四、中断处理程序当进程进行当进程进行I/OI/O操作时,将操作时,将其阻塞至其阻塞至I/OI/O操操作结束并发生中断作结束并发生中断。中断发生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论