190 likes | 371 Views
第十四讲 设备控制原理、设备使用方法 目的与要求 : 掌握 I/O 控制的原理、设备的使用方法。 重点与难点 : 三种不同的 I/O 控制方式;三种不同的设备使用方法。 作业: 2 , 3 , 4 , 5. 第六章 设备管理 6.1 I/O 硬件概念. 1. 常见外部设备的分类. 人机交互设备 ( 字符设备 , 通常发送接收以字符方式 ) 存储类型设备 ( 块设备 , 读写以数据块方式) 网络通讯的设备. I/O 设备的差别 设备的功能、控制的复杂性、数据传输单位各异 设备驱动接口、使用接口不同. 2. 设备控制器( I/O 部件 ).
E N D
第十四讲 设备控制原理、设备使用方法 目的与要求:掌握I/O控制的原理、设备的使用方法。 重点与难点:三种不同的I/O控制方式;三种不同的设备使用方法。 作业: 2,3,4,5
第六章 设备管理 6.1 I/O硬件概念 1.常见外部设备的分类 • 人机交互设备(字符设备,通常发送接收以字符方式) • 存储类型设备(块设备,读写以数据块方式) • 网络通讯的设备 • I/O设备的差别 • 设备的功能、控制的复杂性、数据传输单位各异 • 设备驱动接口、使用接口不同
2.设备控制器(I/O部件) I/O设备通常包含机械部件和电子部件。电子部件被称作I/O部件或设备控制器。 操作系统与控制器打交道,由控制器控制设备本身。 早期CPU是直接控制外部设备的,在引入I/O部件之后,I/O指令功能加强,才将CPU逐渐从与外设的交互细节中解放出来。
连接CPU、内存、设备控制器和I/O设备模型 处理机 内存 显卡 PCI总线控制器 外设控制器 IDE总线控制器 控制器 磁盘 外设 控制器 光盘
比特流 磁盘 控制器 转换、校验 字节块 主存 控制器的任务是在外设与内存之间完成比特流与字节块之间的转换。 或外设与CPU之间完成比特流(或外部信号)与字节流之间的转换。 显示信号 字符显示控制器 转换 字节流 主存经CPU
每个控制器都有一些用来与CPU通讯的I/O寄存器。操作系统通过向这些寄存器写命令字来实现I/O功能。每个控制器都有一些用来与CPU通讯的I/O寄存器。操作系统通过向这些寄存器写命令字来实现I/O功能。 IBM PC的控制器寄存器编址
3.输入输出控制方式 一、程序直接控制方式 CPU直接控制I/O操作的全过程,包括发送控制命令、传输数据、测试设备状态 。 因此,处理机指令集应包括控制类、测试类、读写类I/O指令 。 I/O部件接收到相应的指令后,将I/O状态寄存器的相应位置上,随着操作的执行更改状态位,再由CPU执行相应指令读取I/O完成状态。I/O数据通过CPU寄存器转发。
向I/O部件发读指令 读I/O部件状态寄存器 出错 检查状态 未OK OK 从I/O部件读字数据 未OK 将该字写入内存 OK 下一 指令 该块读完?
二、中断控制方式 CPU向I/O部件发出指令后,转去做其它进程的工作。当I/O部件准备好数据后,利用中断通知CPU,再由CPU完成数据传输。 CPU不必反复测试寄存器状态,节约了时间。但总体看来,中断控制方式仍然消耗大量的CPU时间,因为每个字(若干字节)的数据传输都必须经过CPU寄存器转发。
向I/O部件发读指令 中断 读I/O部件状态寄存器 出错处理 检查状态 OK 从I/O部件读字数据 未OK 将该字写入内存 OK 下一 指令 该块读完?
三、DMA方式 • 前两种方式的缺陷: • I/O的传输速率受CPU检测或中断响应的速度限制 • CPU为管理I/O耗费大量时间。 DMA(直接内存存取)负责完成整个I/O操作,无需再经CPU寄存器转发,并在全部传输结束后向CPU发中断信号。 CPU向DMA部件发送I/O指令后,即可进行其它工作。给DMA的指令中应包括:操作类别、I/O设备的地址、读写数据在内存中的首地址、字数。
向DMA部件发读指令 中断 读取DMA部件状态 下一条指令 DMA的功能可以以独立的DMA部件在系统I/O总线上完成,也可整合到I/O控制器中。 读写内存时,DMA部件需要控制总线,CPU可能在涉及存储访问时因此而忙等待。
输入输出控制方式的发展过程 引入I/O部件,CPU直接控制I/O部件 引入中断驱动方式 引入DMA I/O通道或I/O处理机
6.2设备I/O子系统 • 6.2.1.设备的使用方法 • 一、设备相关系统调用简介 • 申请设备。该系统调用中有参数说明了要申请的设备名称,操作系统处理该系统调用时,会按照设备特性(是独占还是分时共享式使用)及设备的占用情况来分配设备,返回申请是否成功标志。 • 将数据写入设备。 • 从设备读取数据。 • 释放设备。这是申请设备的逆操作。
说明: • 上述的系统调用主要用于对人机交互类慢速外设的使用。 • 对于存储类外设,用户程序一般通过对文件的访问,由文件管理模块读写存储外设间接使用它们,系统也提供直接使用存储类外设的接口供DBMS等高级应用程序使用。 • 对于网络通讯外设,用户级程序也不直接使用它们,用户通过SOCKET通讯系统调用接口调用TCP/IP层程序,由IP层程序调用网络通讯设备驱动程序。
在UNIX中,你也可以用如下的系统调用将数据直接写入软盘中:在UNIX中,你也可以用如下的系统调用将数据直接写入软盘中: fd=open(“/dev/fd0”,O_RDRW);申请软盘,/dev/fd0代表软盘。 lseek(fd,1024,0);将软盘当前I/O位置定位到1024字节位置。 write(fd,buffer,36);将用户缓冲区buffer中的36个字节写入软盘1024-1059字节。 … close(fd) ;释放软盘。 显然,这样的使用方式绕过了文件管理,而直接读/写软盘空间。当然你必须清楚软盘的什么位置存放了什么信息,你才能做到正确的读写。
二、3种设备使用方式 • 独占式 • 分时式 • SPOOLing虚拟设备方式 • 1、独占式使用设备 • 所谓独占式使用设备是以一次设备使用过程(包含多次I/O操作)为单位使用设备。 • 在申请设备时,如果设备空闲,就将其独占,不再允许其它进程申请使用,一直等到该设备被释放,才允许被其它进程申请使用。
2、分时式共享使用设备 如果一个逻辑上完整的数据可以用设备的一次I/O操作完成,那么我们就不必要独占该设备。反过来说,如果一次I/O操作的数据逻辑上完整,我们就不必要对该设备进行独占方式的申请使用。 在申请这种设备时,不必检查是否已被占用,只要简单累加设备使用者计数即可。 所谓分时式共享就是以一次I/O为单位分时使用设备,不同进程的I/O操作请求以排队方式分时地占用设备进行I/O 。
打印daemon 进程 打印机 打印请求队列含要打印文件 3、SPOOLing方式使用外设 SPOOLing 技术是在批处理操作系统时代引入的,即所谓假脱机输入输出技术。原用于作业输入、输出,利用磁盘上的输入、输出井模拟慢速外设。现在利用文件模拟出多设备。 例如:同一进程所有输出数据在进程运行时被写到同一文件当中,文件排到打印输出队列,打印daemon进程占用打印机后,成批读出文件中数据,并送打印机打印出去。