网站大量收购闲置独家精品文档,联系QQ:2885784924

外部设备访问开关中断.PPT

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
外部设备访问开关中断

进程地址空间的布局 进程的地址空间针对其逻辑地址 地址空间大小与CPU架构相关,例如:32位CPU最大4GB(232) 不同OS的进程地址空间分配可以不同 进程地址空间的布局 Linux下不同进程地址空间映射 内核地址空间部分固定且连续映射,所有进程中此区域共享(即页表中这一部分内容相同) 不同进程用户地址空间部分映射各不相同 A.5 外部设备管理 对设备硬件的访问 设备分类 设备独立性 设备驱动程序 简化示例:Unix设备访问过程 对设备硬件的访问 CPU对外部设备的访问 外部设备一般通过设备控制器进行管理 设备控制器的管理寄存器使CPU可以控制设备动作、交换数据、查询状态 控制寄存器:CPU写,用于控制器接收命令 数据寄存器:双向/单向访问,进行数据交换 状态寄存器:CPU读,用于查询设备当前状态 设备控制器的管理寄存器编址 独立的I/O空间编址:CPU有专用IN、OUT指令 与内存一起编址 对设备硬件的访问 I/O控制方式 问题由来:高速CPU如何适应低速设备 轮询方式 CPU循环读取状态寄存器,确定外部设备处于特定状态时才写控制寄存器或读写数据寄存器 CPU在轮询期间,不能执行其他程序 中断方式 外部设备发生的事件通过CPU中断线通知 CPU在向控制寄存器写入,启动设备动作后即可转入其他程序执行,CPU和I/O设备并行 中断处理程序一般在设备驱动程序中提供 对设备硬件的访问 I/O控制方式 DMA方式 对于传输大量数据的磁盘、网卡而言,虽然中断机制使CPU和设备可以并行工作,但是从设备控制器上的缓冲区到内存之间的数据交换如果还是需要CPU介入,会降低CPU利用率 引入DMA机制用于提高大量数据从设备控制器到内存的交换,DMA控制器利用CPU访问内存的间隙进行数据交换 DMA控制器在设备控制器上提供,需要CPU启动DMA控制器的动作,相应代码在设备驱动程序中提供 设备分类 与设备驱动类型相关分类 字符设备 以字符为单位传输数据,数据量小,速度慢 设备不可寻址,数据不可重用 块设备 以定长块为单位传输数据,数据量大,速度快 设备可寻址,数据可重复访问 网络设备 以不定长帧为单位传输数据,数据量大,速度快 设备不可寻址,数据不可重用 设备独立性 设备独立性(设备无关性)概念 指OS设备管理为上层提供一致的访问入口并屏蔽访问细节,使上层独立于物理设备 设备独立性软件 在OS内核设备管理中设计的一个软件层次 提供设备访问的一致入口和驱动框架 设备开关表(与设备类型相关) 逻辑设备名 实现独立于设备的通用功能 设备保护,缓冲区管理,差错控制 设备驱动程序 设备驱动程序特点 与设备硬件、设备控制器寄存器、I/O控制方式密切相关 在核心态运行,作为内核一部分 一般由硬件厂商编写,OS规定编写框架 设备驱动程序功能 接收设备独立性软件发来抽象命令,转换为设备相关的底层操作序列 检查设备状态,发出I/O命令或将操作排队 响应中断请求,调用中断处理程序 设备驱动程序 设备驱动程序处理过程 现代OS设备访问一般是中断驱动的,处理过程分两部分:启动过程和中断处理过程 启动过程 检查I/O请求合法性 检查设备状态,确定是否可以启动请求的操作 如果需要,传送参数/设置工作模式 向控制寄存器发出命令,启动设备 中断处理过程 检查设备状态,确定中断原因,进行相应处理 如果前一I/O请求完成,启动排队的下一请求 简化示例:Unix设备访问过程 Unix的设备独立性软件层 设备开关表 实际是一个按照设备类型定义的函数指针结构体 具体设备驱动程序在初始化时用自己提供的函数填入该结构体 所有同类设备的结构体合起来构成设备开关表 例:Unix块设备开关表示意 简化示例:Unix设备访问过程 Unix的设备独立性软件层 设备文件 是应用程序访问设备的通用入口 记录了设备文件名到设备驱动程序入口的对应 例:设备文件信息 brw-rw. 1 root disk 7, 0 Nov 1 19:00 /dev/loop0 crw--w. 1 root tty 4, 1 Nov 1 19:00 /dev/tty1 设备类型: 决定用哪个设备开关表 主设备号: 访问设备开关表的索引 从设备号: 驱动程序找具体设备 简化示例:Unix设备访问过程 简化示例 假想场景 一个应用程序要读取/dev/hd0上的某一块内容 设备独立性软件工作过程 根据设备文件, /dev/hd0的主设备号是0,对应程序开关表项是gd开头的一行 基于/dev/hd0的从设备号和要读取的块号,设备独立性软件构造请求数据结构bp 调用gdstrategy(bp),把I/O请求块挂到I/O请求队列尾部 简化示例:Unix设备访问过程 简化示例 设备驱动程序工作过程 在gdstrategy(bp)函数内,调

您可能关注的文档

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档