- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三、输入/输出软件 3)DMA方式 表目1 ┇ 表目i ┇ 设备类型 设备标识 获得设备的进程 DCT指针 ? 系统设备表STD 控制器标识 控制忙/闲标记 CHCT指针 控制器等待队列首 控制器等待队列尾 ┇ COCT 通道标识 通道忙/闲标记 通道等待队列首 通道等待队列尾 ┇ CHCT 设备类型 设备标识 设备忙/闲标记 COCT指针 设备等待队列首 设备等待队列尾 驱动程序地址 DCT 设备分配原则 设备分配策略 静态分配 动态分配 设备使用率低 有可能造成死锁 先请求先分配 优先级高者先分配 北 京 林 业 大 学 信 息 学 院 * 中断处理程序 设备驱动程序 与设备无关的I/O软件 用户层的输入/输出软件 1. 层次结构: 进行I/O调用:格式化I/O 执行I/O操作 命名、保护、阻塞、缓冲、分配 I/O结束时,唤醒设备服务子程序 设置设备寄存器、检测状态 4-用户进程 3-设备无关软件 2-设备驱动程序 硬 件 设备服务子程序 1-中断处理程序 I/O请求 I/O应答 (1)用户进程层执行输入输出系统调用,对I/O数据进行格式化,为假脱机输入/输出作准备 (2)独立于设备的软件实现设备的命名、设备的保护、成块处理、缓冲技术和设备分配 (3)设备驱动程序设置设备寄存器、检查设备的执行状态 (4)中断处理程序负责I/O完成时,唤醒设备驱动程序进程,进行中断处理 (5)硬件层实现物理I/O的操作 程序直接控制方式 中断方式 DMA方式 通道控制方式 2. 数据传送控制方式: 1)程序直接控制方式(循环I/O测试方式) 由处理器提供I/O相关指令来实现 I/O处理单元处理请求并设置I/O状态寄存器相关位 不中断处理器,也不给处理器警告信息 处理器定期轮询I/O单元的状态,直到处理完毕 I/O软件包含直接操纵I/O的指令 控制指令: 用于激活外设,并告诉它做什么 状态指令: 用于测试I/O控制中的各种状态和条件 数据传送指令: 用于设备和主存之间来回传送数据 主要缺陷:处理器必须关注I/O处理单元的状态,因而耗费大量时间轮询信息,严重地降低了系统性能 否 外围设备 做接收或发送数据准备 接收到start命令 标志触发器置“done” 等待CPU来的下条指令 准备完毕? 是 否 CPU 发start命令 等 待 执行下条指令 开始数据传送 设备标志触发器为done”? 是 (a) (b) 2)中断方式 为了解决程序控制I/O方法的主要问题 应该让处理器从轮询任务中解放出来 使I/O操作和指令执行并行起来 具体作法: 当I/O处理单元准备好与设备交互的时候 通过物理信号通知处理器,即中断处理器 I/O控制器1 I/O控制器n I/O设备1 I/O设备n 地址线 数据线 控制线 int CPU 内存 start 启动位 中断位 信号线 控制状态寄存器 数据缓冲寄存器 中断控制方式的处理过程 接收到CPU发来的start指令 准备数据并将其置入缓冲寄存器 缓冲寄存器满吗? 控制器发中断信号 向设备发start指令 将中断允许位置1 调度程序调度其他进程 其他进程执行 收到中断信号了吗? 中断处理 被中断进程执行 否 否 是 设备 CPU DMA方式下的数据传输 数据传输处理过程如下: ① 当进程要求设备输入数据时,CPU把准备存放输入数据的内存始址及要传输的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器;另外,还要把控制/状态寄存器中的中断允许位和启动位置1,从而启动设备,开始数据输入。 ② 发出数据输入要求的进程进入阻塞状态, 进程调度程序调度其它进程占有CPU。 ③ 输入设备不断地挪用CPU工作周期, 将数据从内部缓冲区源源不断地送入内存,直至所要求的字节数全部传送完毕。 ④ DMA控制器在传输完成时通过中断请求线发出中断信号, CPU接到中断信号后转中断处理程序进行相应处理。 ⑤ 中断处理结束后, CPU返回被中断的进程或去运行重新被调度的进程。 DMA方式 否 CPU 发start命令 内存地址 ?内存始址寄存器 传送字节数?字节计数器 允许中断位与启动位置1 当前进程被阻塞, 调度程序调度其他进程运行 被调度的进程执行 接收到中断 信号吗? 是 转中断处理 设备 启动设备准备数据 DMA控制器接收到start指令 缓冲寄存器内容入内存 改变传送字节数计数器与内存地址寄存器内容 否 传送字节数 =0?吗? 数据入数据缓冲寄存器 发中断信号 停止I/O操作
文档评论(0)