设备管理_操作系统设备管理培训课程_第1页
设备管理_操作系统设备管理培训课程_第2页
设备管理_操作系统设备管理培训课程_第3页
设备管理_操作系统设备管理培训课程_第4页
设备管理_操作系统设备管理培训课程_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 操作系统第五章设备管理 南京大学软件学院2013 Chap5 5 5 9 2 第五章设备管理 5 1I O硬件原理5 2I O软件原理5 3具有通道的I O系统5 4缓冲技术5 5驱动调度技术5 6设备分配5 7虚拟设备5 8Linux设备管理5 9Windows2003I O系统 3 5 5驱动调度技术 1 5 5 1存储设备的物理结构5 5 2循环排序5 5 3优化分布5 5 4搜查定位5 5 5独立磁盘冗余阵列5 5 6提高磁盘I O速度的一些方法 4 驱动调度技术 2 驱动调度和驱动调度算法 驱动调度能减少为若干个I O请求服务所需的总时间 提高系统效率 除了I O请求的优化排序外 信息在辅助存储器上的排列方式 存储空间分配方法都能影响存取访问速度 5 5 5 1存储设备的物理结构 1 顺序存取存储设备是严格依赖信息的物理位置进行定位和读写的存储设备具有存储容量大 稳定可靠 卷可装卸和便于保存等优点 6 存储设备的物理结构 2 直接存取存储设备 磁盘是一种直接 随机 存取存储设备 每个物理记录有确定的位置和唯一的地址 存取任何一个物理块所需的时间几乎不依赖于此信息的位置 访问磁盘记录参数 柱面号 磁头号 扇区号 7 8 9 Moving headDiskMechanism 10 磁头 11 多组磁头 12 DiskPerformanceParameters 为了读或者写 磁头必须定位于指定的磁道和该磁道中指定的扇区的开始处 磁道选择包括在活动头系统中移动磁头或者在固定头系统中选择一个磁头 磁头定位到磁道所需要的时间称为寻道时间 seektime 在任何一种情况下 一旦选择好磁道 磁盘控制器就开始等待 直到适当的扇区旋转到磁头处 磁头到达扇区开始位置的时间称为旋转延迟 rotationaldelay 寻道时间 如果有的话 和旋转延迟的总和称为存取时间 accesstime 这是达到读或者写的位置所需要的时间 传送所需的时间是传送时间 transfertime 13 14 5 5 2循环排序 1 考虑磁道上保存四个物理块的旋转型设备 旋转1周需时20ms 假定收到以下四个I O请求 请求次序记录号 1 读记录4 2 读记录3 3 读记录2 4 读记录1 15 循环排序 2 多种I O请求排序方法 方法1 按照I O请求次序读记录4 3 2 1 平均用1 2周定位 再加上1 4周读出记录 总处理时间等于1 2 1 4 3 3 4 3周 即60毫秒 方法2 如果次序为读记录1 2 3 4 总处理时间等于1 2 1 4 3 1 4 1 5周 即30毫秒 方法3 如果知道当前读位置是记录3 则采用次序为读记录4 1 2 3 总处理时间等于4 1 4 1周 即20毫秒 16 5 5 3优化分布 1 考虑10个逻辑记录A B J被存于旋转型设备上 每道存放10个记录 安排如下 物理块逻辑记录1 10A J ABCDE 处理10个记录的总时间10毫秒 移动到记录A的平均时间 2毫秒 读记录A 4毫秒 处理记录A 9 16毫秒 访问下一记录 2毫秒 读记录 4毫秒 处理记录 214毫秒 17 处理10个记录的总时间10毫秒 移动到记录A的平均时间 2毫秒 读记录A 4毫秒 处理记录A 9 16毫秒 访问下一记录 2毫秒 读记录 4毫秒 处理记录 214毫秒 18 优化分布 2 按照下面方式对信息优化分布 物理块逻辑记录1A2H3E4B5I6F7C8J9G10D 19 优化分布 3 处理10个记录的总时间为10毫秒 移动到记录A的平均时间 10 2毫秒 读记录 4毫秒 处理记录 70毫秒 20 5 5 4搜查定位 1 移臂调度有若干策略 1 先来先服务算法 FCFS 2 电梯调度 算法 Elevator 3 最短查找时间优先 算法 SSTF 4 扫描 算法 SCAN 5 分步扫描 算法 N stepsSCAN 6 单向扫描 算法 C SCAN 未来趋势 SSD硬盘 固态硬盘 21 搜查定位 2 先来先服务算法 磁头臂按照FCFS队列顺序移动 处理队列中的请求 不考虑各I O请求之间的相对次序和移动臂当前所处位置 进程等待I O请求的时间会过长 寻道性能较差 公平 22 搜查定位 3 电梯调度 算法 23 搜查定位 4 SSTF 最短查找时间优先 算法 本算法考虑了各个请求之间的区别 总是先执行查找时间最短的那个磁盘请求 从而 较 先来先服务 算法有较好的寻道性能 存在 饥饿 现象 24 搜查定位 5 扫描 算法 磁头臂每次沿一个方向移动 扫过所有柱面 遇到最近的I O请求便进行处理 直到最后一个柱面后 再向相反方向移动回来 与 电梯调度 算法的不同在于 即使该移动方向暂时没有I O请求 移动臂也需扫描到头 最短查找时间优先 算法虽有较好寻道性能 但可能会造成进程 饥饿 本算法能克服这一缺点 扫描算法偏爱那些最接近里面或靠外面的请求 对最近扫描跨过去的区域的I O请求的响应会较慢 25 搜查定位 6 分步扫描 算法 进程重复请求同一磁道会垄断整个设备 造成 磁头臂的粘性 采用分步扫描可避免这类问题 将I O请求分成组 每组不超过N个请求 每次选一个组进行扫描 处理完一组后再选下一组 这种调度算法能保证每个存取请求的等待时间不至太长 当N很大时 接近于 扫描 算法的性能 当N 1时 接近于 先来先服务 算法的性能 26 搜查定位 7 循环扫描 算法 在磁盘请求对柱面的分布是均匀的情况下 当移动臂移动到头并转向时 靠近磁头一端的请求特少 许多请求集中分布在远离磁头的一端 它们的等待时间就会较长 循环扫描 算法能克服这个缺点 这是为适应不断有大量柱面均匀分布的存取请求进入系统的情况而设计的扫描方式 移动臂总从0号柱面至最大号柱面顺序扫描 然后 直接返回0号柱面重复进行 归途中不再服务 构成了一个循环 27 DiskScheduling Cont SeveralalgorithmsexisttoscheduletheservicingofdiskI Orequests Weillustratethemwitharequestqueue 0 199 98 183 37 122 14 124 65 67Headpointer53 28 FCFS Illustrationshowstotalheadmovementof640cylinders Total 640 29 SSTF Selectstherequestwiththeminimumseektimefromthecurrentheadposition SSTFschedulingisaformofSJFscheduling maycausestarvationofsomerequests Illustrationshowstotalheadmovementof236cylinders 30 SSTF Cont Total 236 31 SCAN Cont Total 208 回到0点 32 C SCAN ProvidesamoreuniformwaittimethanSCAN Theheadmovesfromoneendofthedisktotheother servicingrequestsasitgoes Whenitreachestheotherend however itimmediatelyreturnstothebeginningofthedisk withoutservicinganyrequestsonthereturntrip Treatsthecylindersasacircularlistthatwrapsaroundfromthelastcylindertothefirstone 33 C SCAN Cont 34 C LOOK VersionofC SCANArmonlygoesasfarasthelastrequestineachdirection thenreversesdirectionimmediately withoutfirstgoingallthewaytotheendofthedisk 35 C LOOK Cont 36 7Linux磁盘调度算法 Linux2 4磁盘调度采用电梯调度算法 Linux2 6增加两种新磁盘调度算法 最终期限调度算法和预期调度算法 尽力确保处理期限到达的请求获得响应 时限调度算法 预期调度算法 37 Linus电梯调度 1 如果新请求与队列中等待请求的数据处于同一磁盘扇区或者直接相邻的扇区 则现有请求和新请求合并成一个请求 2 如果队列中的请求已经存在很长时间 则新请求将被插入到队列尾部 3 如果存在合适的位置 则新请求将按顺序插入到队列中 如果没有合适的位置 则新的请求将被插入到队列尾部 38 Linus电梯调度 电梯调度算法有两个问题 一是由于队列动态更新的原因 一个相距较远的请求可能会延迟相当长的时间 二是由于写请求通常是异步的 而读请求大部分是同步操作 这样一来 在写一个大文件时 很可能堵塞一个读请求很长时间 从而堵塞进程 39 时限调度算法 为了克服这些问题 引入时限调度算法 使用三个队列 读FIFO队列 写FIFO队列和电梯排序队列 每个新来请求被放置到电梯排序队列中 该队列与前面所述一致 此外 同样的请求还被放置在FIFO读队列 如果是读请求 或FIF0写队列 如果是写请求 中 这样 读和写队列维护一个按请求发生时间为顺序的请求列表 对每个请求都有一个到期时间 对于读请求默认值为0 5秒 对于写请求默认值为5秒 通常 调度程序从排序队列中分派服务 当一个请求得到满足时 其将从电梯排序队列头部移走 同时也从对应的FIFO队列移走 然而 当FIFO队列头部的请求超过其到期时间时 调度程序将从该FIFO队列中派遣任务 取出到期请求 再加上接下来的几个队列中的请求 当然 任一个请求被服务时 其也从电梯排序队列中移出 所以 时限调度算法能克服 饥饿 和读写不一致的问题 40 预期调度算法 预期调度是对时限调度的补充 当一个读请求被分派时 预期调度程序会将调度程序的执行延迟若干毫秒 取决于配置文件 发出上一条读请求的应用程序有机会发出后继读请求 且该请求发生在相同的磁盘区域 如果没有新请求发生 则调度程序继续使用时限调度算法 41 未来趋势 SSD硬盘 solid statedrive 俗称固态硬盘 42 未来趋势 SSD硬盘 43 未来趋势 SSD硬盘 44 DiskCache 高速缓冲存储器 cachememory 通常指一个容量比主存小且速度比主存块的存储器 这个存储器位于主存和处理器之间 这种高速缓冲存储器通过利用局部性原理 可以减少平均存储器存取时间 同样的原理适用于磁盘存储器 特别地 一个磁盘高速缓存是主存中为磁盘扇区设置的一个缓冲区 它包含有磁盘中某些扇区的副本 当出现一个请求某一特定扇区的I O请求时 首先进行检测 以确定该扇区是否在磁盘高速缓存中 如果在 则该请求可以通过这个高速缓存来满足 如果不在 则把被请求的扇区从磁盘读到磁盘高速缓存中 由于访问的局部性现象的存在 当一块数据被取入高速缓存以满足一个I O请求时 很有可能将来还会访问到这一块数据 45 希捷Barracuda7200转系列3 5 3TB 7200rpm 64M 串 参考价格 790 北京 适用类型 台式机硬盘容量 3000GB单碟容量 缓存 64MB接口类型 SerialATA转速 分 7200转 分接口速率 SerialATA300 46 LeastRecentlyUsed 必须解决的设计问题是替换策略 当一个新扇区被读入磁盘高速缓存时 必须替换出一个已经存在的块 这就需要一个页替换算法 最常用算法时最近最少使用算法 LRU 替换在高速缓存中未被访问的时间最长的块 逻辑上 高速缓存由一个关于块的栈组成 最近访问过的块在栈顶 当高速缓存中的一个块被访问到时 它从栈中当前的位置移到栈顶 当一个块从辅存中取入时 把位于栈底的那一块移出 并把新到来的块压入栈顶 当然 并不需要在主存中真正移动这些块 有一个栈指针与高速缓存相关联 47 5 5 5独立磁盘冗余阵列 1 利用一台磁盘阵列控制器统一管理和控制一组磁盘驱动器 组成速度快 可靠性高 性能价格比好的大容量磁盘系统 目的 增加容错性 获得高性能 RAID填补CPU速度快与磁盘设备速度慢之间的间隙 策略是 一组小容量 独立 可并行工作的磁盘组成阵列代替单一大容量磁盘 再加进冗余技术 数据能用多种方式组织和分布存储 于是 独立的I O请求能被并行处理 数据分布的单个I O请求也能并行地从多个磁盘同时存取 从而 增加容错性 改进I O性能 48 独立磁盘冗余阵列 2 RAID共同特性 RAID是一组物理磁盘驱动器 可被操作系统看作是单一逻辑磁盘驱动器 数据被分布存储在阵列横跨的物理驱动器上 冗余磁盘的作用是保存奇偶校验信息 当磁盘出现失误时它能确保数据的恢复 49 50 RAID0 RAID0 连续的数据条带 每个条带可规定为1个或多个扇区 以轮转方式写到全部磁盘上 然后 采用并行交叉存取 减少I O请求排队时间 适用于大数据量的I O请求 但并无冗余校验功能 可靠性较差 51 RAID1 RAID1 采用镜像盘双份所有数据来提高容错性 读请求拥有最小寻道时间 写请求可并行完成 缺点是容量下降一半 故成本很高 52 RAID2 RAID2 采用数据字或字节交叉存放 并行存取获得高性能 使用海明校验码 适合大量顺序数据访问 由于使用多个冗余盘 成本较高 53 RAID3 RAID3 是RAID2的简化版本 差别是它仅用一只冗余盘 采用奇偶校验技术 54 RAID4 RAID4 采用独立存取磁盘阵列 数据条带交叉存放 访问请求可并行地获得满足 适合有较高I O请求速度的应用场合 使用一只冗余盘存放奇偶校验码 55 RAID5 RAID5 与RAID4的组织类似 但奇偶校验码循环分布在每个盘上使容错性更好 56 RAID6 RAID6 采用双重冗余技术 即使有两个数据磁盘发生错误 也可重新生成数据 57 5 5 6提高磁盘I O速度的方法 提前读延迟写虚拟盘UNIX Linux提供两种读盘和三种写盘方式 正常读 把磁盘块信息块读入主存缓冲区 提前读 读磁盘当前块时 下一磁盘块也读入主存缓冲区 正常写 把主存缓冲区中的信息写到磁盘块 且写进程应等待写操作完成 异步写 写进程无需等待写盘结束就可返回工作 延迟写 仅在缓冲区首部设置延迟写标志 然后 释放此缓冲区 并把该缓冲区链入空闲缓冲区链表的尾部 当其他进程申请到该缓冲区时 才真正把缓冲区信息写回磁盘块 58 5 6设备分配 5 6 1设备独立性5 6 2设备分配和设备分配数据结构 59 5 6 1设备独立性 例 系统拥有A B两台卡片机 现有作业J2申请一台卡片机 如果它指定使用卡片机A 作业J1已经占用A或者A坏了 虽然系统还有同类设备B是好的且未被占用 但也不能接受作业J2 这样做很不合理 为了解决这一问题 通常用户不指定物理设备 而指定逻辑设备 使得用户作业和物理设备独立开来 再通过其他途径建立逻辑设备和物理设备之间的映射 设备的这种特性称 设备独立性 60 5 6 1设备独立性 用户不指定特定设备 指定逻辑设备 使得用户作业和物理设备独立开来 通过其它途径建立逻辑设备和物理设备之间对应关系 这种特性为 设备独立性 好处 用户与物理的外围设备无关 系统增减或变更外围设备时程序不必修改 易于对付输入输出设备的故障 61 5 6 2设备分配 1 从设备的特性来看 可以把设备分成独占设备 共享设备和虚拟设备三类 相应的管理和分配外围设备的技术可分成 独占方式 共享方式和虚拟方式 62 5 6 2设备分配 1 对独占型设备 往往采用静态分配 即在作业执行前 将所要求使用的设备全部分配给它 当作业执行中不再需要使用这类设备 或作业结束撤离时 再收回设备 静态分配实现简单 能防止系统死锁 但会降低设备利用率 例如 对打印机采用静态分配 在作业执行前分配给它 但一直到作业产生结果时才使用打印机 这样 尽管这台打印机在大部分时间里处于空闲状态 但是 其他作业却不能使用 63 5 6 2设备分配 1 如果对打印机采用动态分配 在作业执行过程中 要求输出一批信息时 系统才把打印机分配给该作业 当一个文件输出完毕关闭时 系统就收回分配给该作业的打印机 采用动态分配后 在打印机上可能依次输出若干个作业的信息 由于输出信息以文件为单位 每个文件的头和尾均设有标志 如 用户名 作业名 文件名等 操作员很容易辨认输出信息是属于哪个用户 所以 对某些独占使用的设备 采用动态分配方式 不仅是可行的而且也能提高设备利用率 64 5 6 2设备分配 1 常用的I O设备分配算法先请求先服务 优先级高者先服务等 此外 在多进程请求I O设备分配时 应防止因循环等待对方所占用的设备而产生死锁 应预先进行性检查 65 设备分配 2 I O设备分配的实现 1 设备分配的数据结构 设备类表和设备表 系统中拥有一张设备类表 每类设备对应于表中一栏 包括内容有 设备类 总台数 空闲台数和设备表起始地址等 每一类设备都有各自的设备表 用来登记这类设备中每一台设备的状态 包含的内容有 物理设备名 逻辑设备名 占有设备的进程号 已分配 未分配 好 坏等 66 设备分配 3 I O设备分配的实现 2 采用通道结构的系统中 设备分配的数据结构设置 系统设备表 通道控制表 控制器控制表和设备控制表 系统建立一张系统设备表 记录配置在系统中的所有物理设备的情况 每个通道 控制器 设备各设置一张表 记录各自的地址 标识符 状态 忙 闲 等待获得此部件的进程队列指针 及一次分配后相互勾链的指针 以备分配和执行I O时使用 67 5 7虚拟设备 5 7 1问题的提出5 7 2SPOOLING的设计和实现5 7 3SPOOLING应用例子 68 5 7 1问题的提出 静态分配方式是不利于提高系统效率联机同时外围设备操作 又称作假脱机操作 SimultaneousPeripheralOperationOn Line外围设备同时联机操作 69 5 7 2斯普林系统的设计和实现 1 井 是用作缓冲的存储区域 采用井的技术能调节供求之间的矛盾 消除人工干预带来的损失 预输入程序 操作系统将一批作业从输入设备上预先输入到磁盘的输入缓冲区中暂时保存 这称为 预输入 此后 由作业调度程序调度作业执行 作业使用数据时不必再启动输入设备 只要从磁盘的输入缓冲区中读入 缓输出程序 作业执行中不必直接启动输出设备 只要将作业的输出数据暂时保存到磁盘的输出缓冲区 当作业执行完毕后 由操作系统组织信息成批输出 井管理程序 70 作业调度与进程调度的关系 输入状态 后备状态 完成状态 预输入完成 作业控制 作业调度 选中并创建进程 作业调度 作业终止并撤离 SPOOLing作业预输入 SPOOLing作业缓输出 71 斯普林系统的设计和实现 2 SPOOLING组成和结构 72 斯普林系统的设计和实现 4 SPOOLING数据结构 作业表用来登记进入系统的所有作业的JCB 该表包含作业的作业名 作业状态 预输入表位置和缓输出表位置等信息 预输入表用来登记该作业的各个输入文件的情况 包括设备类 文件名 信息长度及存放位置等 缓输出表用来登记该作业的各个输出文件的情况 包括设备类 文件名 信息长度及存放位置等 73 输入状态 作业的信息正从输入设备上预输入 收容收态 作业预输入结束 但未被选中执行 执行状态 作业已被选中运行 运行过程中 它可从输入井中读取数据 也可向输出井写入数据 完成状态 作业已经撤离 该作业的输出结果等待缓输出 斯普林系统的设计和实现 4 输入井中作业状态 74 斯普林系统的设计和实现 5 井文件空间的管理 1 存放在井中的文件称井文件 井文件空间的管理比较简单 它被划分成等长的物理块 每块用于存放一个或多个逻辑记录 可采用两种方式存放作业的数据信息 连接方式和计算方式 1 连接方式 输入的信息被组织成连接文件 这种方式的优点是数据信息可以不连续存放 文件空间利用率高 75 斯普林系统的设计和实现 6 井文件空间的管理 2 2 计算方式 假定磁盘井文件空间 每个磁道存放100个80字节记录 每张卡片为80个字节 若每个柱面有20个磁道 则一个柱面可存放2000张卡片信息 第n张卡片信息被存放在 磁道号 卡片号n 100记录号 卡片号n 100用卡片号n除以100的整数和余数部分分别为其存放的磁道号和记录号 76 斯普林系统的设计和实现 7 Spooling应用例子 1 打印机spooling守护进程 2 网络通信spooling守护进程 77 5 8Linux的设备管理 5 8 1设备管理概述5 8 2设备驱动程序5 8 3设备I O的处理 JonathanCorbet AlessandroRubini GregKroah Hartman LinuxDeviceDrivers 3rdEdition O Reilly 2005 78 5 8 1Linux设备管理概述 设备当作文件处理 使用文件系统调用控制设备操作 对于字符设备和块设备 其设备文件用mknod命令创建 用主设备号和次设备号标识 同一设备驱动程序控制的所有设备具有相同的主设备号 并用不同次设备号加以区别 网络设备也当作设备文件处理 这类设备由Linux创建 并由网络控制器初始化 79 5 8 1Linux设备管理概述 Linux2 3 46版内核正式引入设备文件系统devfs 已被纳入文件系统的管辖范围 当设备被挂接到特定目录下后 就可以将对设备文件的所有操作对应到对设备的操作 设备文件与普通文件及目录文件有着根本不同 当进程访问普通文件时 它会通过文件系统访问磁盘分区中的数据块 当进程访问设备文件时 它只要驱动物理设备就行 VFS负责为应用程序隐蔽设备文件与普通文件之间的差异 可把对设备文件的任一系统调用转换成对设备驱动程序的函数调用 80 5 8 2设备驱动程序 1驱动程序的注册与注销系统引导时 进行设备初始化 初始化都要通过相应函数向内核注册 在关闭字符设备或块设备时 要通过相应函数从内核中注销 2设备的打开与释放打开设备由open完成 首先检查设备是否就绪 若首次打开设备还需初始化 并增加设备的引用计数 释放设备由release 完成 如在释放设备时 需要检查并且减少设备的引用计数 最后一个释放设备者 则需关闭设备 81 设备驱动程序 3设备的读 写操作字符设备通过read 和write 读 写设备数据 块设备通过block read 和block write 读 写数 4设备的控制操作和控制方式通过设备驱动程序中的ioctl 来控制设备的 如对光驱的控制使用 cdrom ioctl 与读 写设备数据不同 ioctl 与具体设备密切相关 82 5 8 3设备I O的处理 1数据传输和设备驱动Linux内核对于块设备的支持具有以下特点 通过VFS提供统一接口 对磁盘数据进行预读 为数据提供磁盘高速缓存 1 缓冲区I O操作 传送的数据保存在缓冲区中 缓冲区是磁盘数据在内核中的普通主存容器 每个缓冲区都和一个特定的块相关联 而这个块由设备号和块号来标识 2 页I O操作 传送的数据保存在主存页中 每个页包含的数据都属于普通文件 Linux的块设备驱动程序被划分为高级驱动程序和低级驱动程序两部分 前者处理VFS层 后者处理物理设备 83 5 8 3设备I O的处理 2块设备请求块设备驱动程序可一次传送一个单独的数据块 但内核并不会为磁盘上的每个被访问的数据块都单独执行一次I O操作 确定磁盘块的物理位置是相当费时的 只要有可能 内核就试图把几个块合并在一起 作为一个整体来处理 这样就缩短磁头平均移动时间 84 第五章设备管理 5 1I O硬件原理5 2I O软件原理5 3具有通道的I O系统5 4缓冲技术5 5驱动调度技术5 6设备分配5 7虚拟设备5 8Linux设备管理5 9Windows2003I O系统 85 设备I O处理 块设备处理系统的最底层是策略程序 它与物理块设备之间相互作用以满足将队列中的请求聚集在一起的要求 只要低级块设备驱动程序被激活 就应该对队列中的所有请求都进行处理 直到队列空才结束 策略程序执行过程为 对于队列中的每个元素 与块设备控制器相互作用 共同为请求服务 等待数据传送完成 然后把服务过的请求从队列中删除 继续处理下一个请求 86 5 9Windows2003I O系统 5 9 1I O系统结构和组件5 9 2I O系统数据结构5 9 3I O类型和处理5 9 4高速缓存管理 87 5 9 1I O系统结构和组件 1 WindowsI O系统是执行体的组件 存在于NTOSKRNL EXE文件中 它接受来自用户态和核心态的I O请求 并以不同形式把它们传送到I O设备 88 I O系统结构和组件 2 89 一个典型的I O请求流程 90 I O管理的特点 1 I O包驱动2 通过虚拟文件实现I O操作 91 5 9 2I O系统数据结构 四种数据结构代表I O请求 文件对象 驱动程序对象 设备对象 I O请求包 IRP 92 1 文件对象 文件作为对象来管理 是可以共享的系统资源 被基于对象的安全性所保护 并且它们支持同步 当调用者打开文件或单一设备时 I O管理器为文件对象返回句柄 文件对象由包含访问控制表 ACL 的安全描述体保护 I 0管理器查看安全子系统来决定文件的ACL是否允许进程去访问它的线程正在请求的文件 93 2 驱动程序对象和设备对象 1 线程为文件对象打开句柄时 I O管理器根据文件对象名称来决定将调用哪个或哪些驱动程序来处理请求 下面的系统对象满足这些要求 驱动程序对象 I O管理器从驱动程序对象中获得并且为I O记录每个驱动程序的调度例程的地址 设备对象在系统中代表一个物理的 逻辑的设备并描述它的特征 例如 所需要的缓冲区的对齐方式和用来保存I O请求包的设备队列位置 94 驱动程序对象和设备对象 2 95 3 I O请求包 1 IRP是I O系统用来存储处理I O请求所需信息的数据结构 线程调用I O服务时 I O管理器就构造一个IRP来表示在整个系统I O进展中要进行的操作 I O管理器在IRP中保存一个指向调用者文件对象的指针 96 I O请求包 2 IRP由两部分组成 固定部分 标题 和一个或多个堆栈单元 固定部分包括 请求的类型和大小 同步请求还是异步请求 用于缓冲I O的指向缓冲区的指针和随着请求的进展而变化的状态信息 IRP堆栈单元包括一个功能码 功能特定的参数和指向调用者文件对象的指针 97 4驱动程序分类和组成 1 驱动程序分类 1 核心模式驱动程序 2 用户模式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论