第4章-IO设备管理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章-IO设备管理课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- _IO 设备管理 课件
- 资源描述:
-
1、操作系统操作系统Operating Systems谌卫军谌卫军 清华大学软件学院清华大学软件学院 进程管理21.I/O硬件硬件2.I/O控制方式控制方式3.I/O软件软件4.磁盘磁盘第第四四章章 I/OI/O设备管理设备管理 进程管理3 在现代计算机系统中,有大量的输入输在现代计算机系统中,有大量的输入输出设备,其种类繁多,差异大。而且随着技出设备,其种类繁多,差异大。而且随着技术的发展,新设备也不断地出现。因此,如术的发展,新设备也不断地出现。因此,如何管理好这些设备,使资源得以合理的利用,何管理好这些设备,使资源得以合理的利用,是操作系统的一个主要功能。是操作系统的一个主要功能。I/O(I
2、nput/Output)设备)设备 进程管理44.1 I/O硬件硬件 对于对于I/O硬件,硬件,操作系统操作系统所关心的并不是所关心的并不是硬件自身的设计、制造和维护,而是如何来硬件自身的设计、制造和维护,而是如何来对它进行编程,即该设备给软件提供的接口对它进行编程,即该设备给软件提供的接口是什么,包括它所接受的控制命令、所完成是什么,包括它所接受的控制命令、所完成的功能,以及所返回的出错报告。的功能,以及所返回的出错报告。进程管理5按交互方向分类:按交互方向分类:-输入设备:键盘、鼠标、扫描仪;输入设备:键盘、鼠标、扫描仪;-输出设备:显示器、打印机;输出设备:显示器、打印机;-输入输入/输
3、出:磁盘、网卡。输出:磁盘、网卡。4.1.1 I/O设备设备的类型的类型 进程管理6按数据组织分类:按数据组织分类:-块设备块设备:以数据块作为信息的存储和传:以数据块作为信息的存储和传输单位,每个数据块都有一个地址,数输单位,每个数据块都有一个地址,数据块之间的读写操作是相互独立的,如据块之间的读写操作是相互独立的,如磁盘;磁盘;-字符设备字符设备:以字符作为信息存储和传输:以字符作为信息存储和传输单位,数据即字符流,无定位无寻址,单位,数据即字符流,无定位无寻址,如鼠标;如鼠标;进程管理7 有了有了I/O设备,是否就能完成设备,是否就能完成I/O功能呢?功能呢?进程管理84.1.2 设备设
4、备控制器控制器 机械部分机械部分 电子部分电子部分 一个一个I/O单元由两部分组成:单元由两部分组成:机械部分机械部分和和电子部分(电子部分(设备控制器设备控制器或或适配器适配器)。进程管理9机械部分即为机械部分即为I/O设备本身;设备本身;电子部分称为:电子部分称为:设备控制器设备控制器(device controller)或)或适配器适配器(adapter)。)。适配器的形式通常是印刷电路卡,可以适配器的形式通常是印刷电路卡,可以插入到主板的扩充槽中;控制器的形式插入到主板的扩充槽中;控制器的形式是一组芯片;是一组芯片;完成设备与主机间的连接和通讯。完成设备与主机间的连接和通讯。进程管理1
5、04.1.3 I/O地址地址 每个设备控制器都有一些寄存器用来与每个设备控制器都有一些寄存器用来与CPU通信。通通信。通过往这些寄存器中写入不同的值,过往这些寄存器中写入不同的值,OS能命令该设备去能命令该设备去执行发送数据、接收数据、打开、关闭等操作;执行发送数据、接收数据、打开、关闭等操作;OS也也能通过读取这些寄存器的值来了解设备的当前状态。能通过读取这些寄存器的值来了解设备的当前状态。此外,许多控制器还有一个数据缓冲区供此外,许多控制器还有一个数据缓冲区供OS读写。读写。CPU外外部部设设备备控控制制逻逻辑辑电电路路控制寄存器控制寄存器 状态寄存器状态寄存器 数据寄存器数据寄存器 如何
6、让如何让I/O设备工作?设备工作?进程管理11问题:问题:CPU如何与设备控制器进行通信?如何与设备控制器进行通信?这这不是普通的内存访问!不是普通的内存访问!方法有三种:方法有三种:I/O独立编址;独立编址;内存映像编址;内存映像编址;混合编址。混合编址。进程管理121.I/O独立编址独立编址 w 基本思路:给控制器中的基本思路:给控制器中的每一个寄存器每一个寄存器分配一个唯分配一个唯一的一的I/O端口(端口(I/O port)编号,称为)编号,称为I/O端口地址,端口地址,然后用专门的然后用专门的I/O指令对端口进行操作;指令对端口进行操作;w 这些端口地址所构成的这些端口地址所构成的地址
7、空间是完全独立的,地址空间是完全独立的,与内存的地址空间没有与内存的地址空间没有关系。例如:关系。例如:IN R0 4 表示读入表示读入I/O端口地址为端口地址为4的内容;的内容;MOV R0 4 表示读入表示读入内存地址为内存地址为4的内容;的内容;进程管理13Linux0.11/boot/setup.smov al,#0 x11!initialization sequenceout#0 x20,al!send it to 8259A-1mov al,#0 x20 !start of hardware ints(0 x20)out#0 x21,almov al,#0 x28!start of
8、 hardware ints(0 x28)out#0 xA1,alin al,#0 x64 !8042 status port !键盘控制器状态寄存器键盘控制器状态寄存器test al,#2jnz empty_8042!is input buffer full?进程管理142.内存映像编址内存映像编址 w 基本思路:把所有控制器当中的每一个寄存器都映基本思路:把所有控制器当中的每一个寄存器都映射为一个内存地址,专门用于射为一个内存地址,专门用于I/O操作(功能上),操作(功能上),对这些单元的读写操作即为普通的内存访问操作。对这些单元的读写操作即为普通的内存访问操作。w 端口地址空间与内存的地
9、址空间统一编址,前者是端口地址空间与内存的地址空间统一编址,前者是后者的一部分,一般位于后者的顶端部分。后者的一部分,一般位于后者的顶端部分。进程管理15F 编程方便,无需专门的编程方便,无需专门的I/O指令指令(C vs.汇编汇编);F 不能对控制寄存器的内容进行不能对控制寄存器的内容进行Cache,须关闭;,须关闭;F 每一次都要判断访问的是内存还是每一次都要判断访问的是内存还是I/O。进程管理163.混合编址混合编址 w 基本思路:对于设备控制器中的寄存器,采用独立基本思路:对于设备控制器中的寄存器,采用独立编址的方法;而对于设备的数据缓冲区,采用内存编址的方法;而对于设备的数据缓冲区,
10、采用内存映像编址的方法。映像编址的方法。进程管理17PC机上的部分机上的部分I/O端口地址端口地址(本图摘自(本图摘自Silberschatz,Galvin and Gagne:“Operating System Concepts”)进程管理18到目前为止,已经介绍了到目前为止,已经介绍了I/O设备的类型、设备的类型、设备的控制器、设备的控制器、I/O的端口地址。现在的的端口地址。现在的问题是:根据已有的这些知识,现在问题是:根据已有的这些知识,现在能否能否开始编程使用这些开始编程使用这些I/O设备,完成相应的输设备,完成相应的输入输出功能呢?入输出功能呢?进程管理194.2 I/O控制方式控
11、制方式程序循环检测方式程序循环检测方式(Programmed I/O)中断驱动方式中断驱动方式(Interrupt-driven I/O)直接内存访问方式直接内存访问方式(DMA,Direct Memory Access)进程管理204.2.1 程序循环检测方式程序循环检测方式 小宝宝在家吃饭小宝宝在家吃饭 如果宝宝的嘴巴没空(如上一口饭如果宝宝的嘴巴没空(如上一口饭菜尚未吃完),循环等待菜尚未吃完),循环等待 装一勺饭菜,喂到宝宝嘴里装一勺饭菜,喂到宝宝嘴里 重复上述步骤重复上述步骤 进程管理21w 基本思路基本思路:在程序(设备驱动程序)中通过不断地:在程序(设备驱动程序)中通过不断地检测
12、检测I/O设备的当前状态,来控制设备的当前状态,来控制I/O操作的完成。操作的完成。具体来说,在进行具体来说,在进行I/O操作之前,要循环地检测设操作之前,要循环地检测设备是否就绪;在备是否就绪;在I/O操作进行之中,要循环地检测操作进行之中,要循环地检测设备是否已完成。从硬件来说,控制设备是否已完成。从硬件来说,控制I/O的所有工的所有工作均由作均由CPU来完成。来完成。w 也称为也称为繁忙等待繁忙等待方式(方式(busy waiting)或)或轮询轮询方式方式(polling)。)。1.1.I/OI/O控制与控制与I/OI/O操作操作2.2.缺点缺点.进程管理22一个例子一个例子已知已知I
13、/O地址采用内存映像编址的方式,现需要地址采用内存映像编址的方式,现需要在打印机上打印一个字符串在打印机上打印一个字符串“ABCDEFGH”。基本思路:把这基本思路:把这8个字符逐个送到打印机设备的个字符逐个送到打印机设备的I/O端口地址(内存地址)。端口地址(内存地址)。A B C D E F G H内存内存pprinter_status_regprinter_data_register 进程管理23for(i =0;i sys_read);该函数又调用相应的设备驱动程序,驱动该函数又调用相应的设备驱动程序,驱动程序在启动程序在启动I/O操作后被阻塞操作后被阻塞(-driver_read);
14、I/O操作完成后,将产生一个中断,然后中操作完成后,将产生一个中断,然后中断处理程序将接管断处理程序将接管CPU,并唤醒被阻塞的,并唤醒被阻塞的驱动程序。驱动程序。方案一方案一 进程管理54驱动程序以什么形式存在?单独的一个进驱动程序以什么形式存在?单独的一个进程吗?调用驱动时程吗?调用驱动时有无进程切换有无进程切换?中断处理程序是谁写的?中断处理程序是谁写的?OS or 厂商厂商?设备驱动程序与中断处理程序(两个设备驱动程序与中断处理程序(两个进程进程间)如何同步?间)如何同步?如果有多个进程同时都要访问该如果有多个进程同时都要访问该I/O设备,设备,该怎么办?该怎么办?问题问题 进程管理5
15、5我们要为一个简单的我们要为一个简单的字符输入设备字符输入设备实现相实现相应的设备驱动程序。应的设备驱动程序。当用户进程需要当用户进程需要I/O操作时,启动相应操作时,启动相应系统系统调用调用,最终执行各种设备统一的对外接口,最终执行各种设备统一的对外接口函数函数read(devID,buf,size)。设备驱动程序主要由两个函数组成:设备驱动程序主要由两个函数组成:foo_read(),该设备对,该设备对read接口函数的具体接口函数的具体实现。实现。foo_interrupt(),中断处理函数。,中断处理函数。一个例子一个例子 进程管理56size_t foo_read(struct fi
16、le*filp,char*buf,size_t count,loff_t*ppos)foo_dev_t*foo_dev=filp-private_data;if(down_interruptible(&foo_dev-sem)/互斥互斥 return-ERESTARTSYS;foo_dev-intr=0;/同步同步 outb(DEV_FOO_READ,DEV_FOO_CONTROL_PORT);wait_event_interruptible(foo_dev-wait,(foo_dev-intr=1);/被阻塞被阻塞 if(put_user(foo_dev-data,buf)return-EF
17、AULT;up(&foo_dev-sem);return 1;进程管理57void foo_interrupt(int irq,void*dev_id,struct pt_regs*regs)foo-data=inb(DEV_FOO_DATA_PORT);foo-intr=1;wake_up_interruptible(&foo-wait);用户进程用户进程A 系统调用系统调用 read foo_read 被阻塞被阻塞 用户进程用户进程B 被中断被中断 foo_interrupt A被唤醒被唤醒 进程管理58方案方案1只适合需要互斥访问的设备。只适合需要互斥访问的设备。块设备如何处理?块设备如
18、何处理?例如:例如:A进程访问磁盘的第进程访问磁盘的第i个数据块个数据块,B进程也要访问第进程也要访问第i个数据块,如何个数据块,如何优化,减少优化,减少I/O操作?操作?进程管理59数据结构:数据结构:请求队列请求队列(request queue););块设备驱动程序:块设备驱动程序:上层函数上层函数,负责管理请,负责管理请求队列;求队列;底层函数底层函数,负责与硬件打交道,负责与硬件打交道,完成真正的完成真正的I/O;I/O请求的提交与真正实现是分离的。各个请求的提交与真正实现是分离的。各个用户进程(通过内核)调用上层函数,提用户进程(通过内核)调用上层函数,提交交I/O请求请求(mak_
19、request),然后阻塞;底层函数,然后阻塞;底层函数则从队列中取出每个则从队列中取出每个I/O请求,并完成之。请求,并完成之。能对各能对各I/O请求进行优化,如数据块重组。请求进行优化,如数据块重组。方案二方案二 进程管理60Example:A scsi disk driver in UNIX sdstrategy:do error checking,if device is not busy,issue a start request for the specific unit(disk).sdustart:find the proper queue for this unit,put
展开阅读全文