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

chap5设备管理.ppt

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

第五章 设备管理MANAGING I/O DEVICES 5.1 I/O系统的组成 5.1.1 I/O 设备分类 5.1.2 I/O系统的结构 1. 微机I/O系统 5.1.3 设备控制器 1. 设备控制器的组成 2. 设备控制器的功能 设备文件 设备文件举例 5.1.4 I/O通道 1.通道设备的引入 I/O端口(I/Oport) 5.1.4 总线技术 5.2 I/O 控制方式 5.2.1 程序I/O方式 5.2.2 中断驱动I/O 控制方式 中断过程 Linux的中断机制 5.2.3 DMA(direct memory access)控制方式 5.2.4 I/O通道控制方式 5.3 缓冲管理 5.3.1 为什么引入缓冲 5.3.2 I/O缓冲方式 5.3.3 缓冲池(Buffer Pool) 3.缓冲区工作方式 收容输入的工作方式 提取输入的工作方式 5.4 设备分配 5.4.1 设备分配中的数据结构 1. 设备控制表(DCT) 2.控制器控制表、通道控制表 5.4.2设备分配时涉及的问题 5.4.3设备独立性 5.4.4 独占设备的分配程序 5.4.5 SPOOLing技术 SPOOLing 系统的组成 实例: 共享打印机 5.5 设备驱动 5.5.2设备驱动程序的处理过程 5.5.3 中断处理程序的处理过程 5.5.4 Linux设备管理 一、设备驱动程序基础 中断在驱动程序工作的过程中的作用 二、设备驱动程序的框架 1. 驱动程序的注册与注销 2. 设备的打开与释放 3. 举例:一个简单的字符设备mouse 5.6 磁盘存取设备管理 5.6.2 磁盘调度 5.6.3 磁盘高速缓存(Disk Cache) 5.6.4 提高磁盘I/O速度的其他方法 5.6.5 磁盘冗余阵列 提供一个统一而简单的I/O系统调用接口。 I/O子系统可分为上下两部分: 下层: 与设备有关的称为设备驱动程序。 上层: 与设备无关的, 根据I/O请求, 通过特定设备驱动程序接口, 与设备进行通信。 总线 I/O空间 I/O数据传送 字符设备与块设备 主设备号与次设备号 设备文件 设备驱动程序接口 1. 总线 CPU和I/O设备是通过总线连接起来的。 总线定义了设备之间进行通讯的协议; 遵循同一种协议的硬件可在同一条 总线上协调工作。 常用PC总线:ISA、VESA、EISA、PCI等。 2. I/O空间 计算机的I/O空间由所有设备的寄存器组成。 I/O空间的配置分为两种情况: ? I/O空间与内存空间相互独立:如intel386 ? I/O寄存器作为内存的一部分:如Motorla680x0 对于?要使用专门的I/O语句:inb和outb Linux系统所使用的I/O空间, 可以查看文件: /proc/ioports: 3. I/O数据传送 查询、中断、DMA 4. 字符设备与块设备 字符设备: 按顺序访问, 不使用缓冲技术。 块设备: 随机访问, 使用缓冲技术。 Linux所使用的设备查看文件: /proc/devices 5. 主设备号和次设备号 主设备号相同设备用相同驱动程序。 次设备号用来区分具体设备实例。 主设备号和次设备号共同来标识一个具体设备。 6. 设备驱动程序接口 I/O子系统向内核其它部分提供了统一标准的设备接口, 通过结构 file_operations实现。 struct file_operations { lseek(); /*重新定位读写位置*/ read(); /*从设备中读数据*/ write(); /*向设备写数据*/ readdir();/*无用,只用于文件系统,而非设备*/ ioctl(); /*控制字符设备*/ mmap(); /* 将设备内存映射到进程地址空间*/ Open(); /*打开并初始化设备;可以为NULL,这样 每次打开设备总会成功,而且不通知设备驱动程序*/ release(); /*关闭设备,并释放资源*/ fsync(); /*实现内存与设备(如硬盘)间的同步 */ fasync(); /*实现内存与设备(如鼠标)间的异步通信*/ check_media_change(); /*用来检查设备介质(如软盘) 是否自上次操作后发生了变化,仅用于块设备*/ revalidate(); /*仅用于块设备,该函数与缓冲区有关*/ }; Linux 内核为了将来自硬

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档