I/O子零碎的条理构造

I/O软件触及的面十分广,往下与硬件有着亲密的联络,往上又与用户直接交互,它与过程治理、存储器治理、文件治理等都存在着必定的联络,即它们都能够需求I/O软件来完成I/O操作。
为了使复杂的I/O软件具有明晰的构造,优越的可移植性和顺应性,在I/O软件中广泛釆用了条理式构造,将零碎输出/输入功用组织成一系列的条理,每一层都应用其基层供给的效劳,完成输出/输入功用中的某些子功用,并屏障这些功用完成的细节,向高层供给效劳。在条理式构造的I/O软件中,只需条理间的接口不变,对某一条理中的软件的修正都不会惹起其基层或高层代码的变卦,仅最底层才触及硬件的详细特征。


图5-3  I/O条理构造

一个比拟合理的条理划分如图5-3所示。全部I/O零碎可以算作具有四个条理的零碎构造,各条理及其功用如下:
1) 用户层I/O软件:完成与用户交互的接口,用户可直接挪用在用户层供给的、与I/O操作有关的库函数,对装备停止操作。
普通而言,大局部的I/O软件都在操作零碎外部,但仍有一小局部在用户层,包含与用户程序链接在一同的库函数,以及完整运转于内核以外的一些程序。用户层软件必需经过一组零碎挪用来获取操作零碎效劳。   
2) 装备自力性软件:用于完成用户程序与装备驱动器的一致接口、装备敕令、装备维护、以友装备分派与释放等,同时为装备治理和数据传送供给需要的存储空间。
装备自力性也称装备有关性,使得使用程序自力于详细运用的物理装备。为了完成装备自力性而引入了逻辑装备和物理装备这两个概念。在使用程序中,运用逻辑装备名来恳求运用某类装备;而在零碎实践履行时,必需将逻辑装备名映射成物理装备名运用。
运用逻辑装备名的益处是:

  • 添加装备分派的灵敏性;
  • 易于完成I/O重定向,所谓I/O重定向,是指用于I/O操作的装备可以改换(即重定向),而不用改动使用程序。

为了完成装备自力性,必需再在驱动程序之上设置一层装备自力性软件。总的来说,装备自力性软件的次要功用可分认为以下两个方面:

  • 履行一切装备的私有操作。包含:对装备的分派与收受接管;将逻辑装备名映射为物理装备名;对装备停止维护,制止用户直接拜访装备;缓冲治理;过失掌握;供给自力于装备的巨细一致的逻辑块,屏障装备之间信息交流单元巨细和传输速度的差别。
  • 向用户层(或文件层)供给一致接口。无论何种装备,它们向用户所供给的接口应当是相反的。例如,对各类装备的读/写操作,在使用程序中都一致运用read/write敕令等。

3) 装备驱动程序:与硬件直接相干,担任详细完成零碎对装备收回的操作指令,驱动 I/O装备任务的驱动程序。
平日,每一类装备设置装备摆设一个装备驱动程序,它是I/O过程与装备掌握器之间的通讯程序,常以过程方式存在。装备驱动程序向下层用户程序供给一组规范接口,装备详细的差异被装备驱动程序所封装,用于接纳下层软件发来的笼统I/O请求,如read和write敕令,转换为详细请求后,发送给装备掌握器,掌握I/O装备任务;它也将由装备掌握器发来的旌旗灯号传送给下层软件。从而为I/O内核子零碎隐蔽装备掌握器之间的差别。
4)中缀处置程序:用于保管被中缀过程的CPU情况,转入响应的中缀处置程序停止处置,处置完并恢复被中缀过程的现场后,前往到被中缀过程。
中缀处置层的次要义务有:停止过程上下文的切换,对处置中缀旌旗灯号源停止测试,读取装备形态和修正过程形态等。因为中缀处置与硬件严密相干,对用户而言,应尽量加以屏障,故应放在操作零碎的底层,零碎的其他局部尽能够少地与之发作联络。
5) 硬件装备:I/O装备平日包含一个机械部件和一个电子部件。为了到达设计的模块性和通用性,普通将其离开:电子部件称为装备掌握器(或适配器),在团体盘算机中,平日是一块拔出主板扩大槽的印刷电路板;机械部件则是装备自身。
装备掌握器经过存放器与CPU通讯,在某些盘算机上,这些存放器占用内存地址的一局部,称为内存映像I/O;另一些盘算机则釆用I/O公用地址,存放器自力编址。操作零碎经过向掌握器存放器写敕令字来履行I/O功用。掌握器收到一条敕令后,CPU可以转向停止其他任务,而让装备掌握器自行完成详细的I/O操作。当敕令履行终了后,掌握器收回一个中缀旌旗灯号,操作零碎从新取得CPU的掌握权并反省履行后果,此时,CPU依旧是从掌握器存放器中读守信息来取得履行后果和装备的形态信息。
装备掌握器的次要功用为:

  • 接纳和辨认CPU或通道发来的敕令,如磁盘掌握器能接纳读、写、查找等敕令。
  • 完成数据交流,包含装备和掌握器之间的数据传输;经过数据总线或通道,掌握器和主存之间的数据传输。
  • 发现和记载装备及本身的形态信息,供CPU处置运用。
  • 装备地址辨认。

为完成上述功用,装备掌握器(如图5-4)必需包括以下构成局部:

  • 装备掌握器与CPU的接口。该接口有三类旌旗灯号线:数据线、地址线和掌握线。数据线平日与两类存放器相衔接:数据存放器(寄存从装备送来的输出数据或从CPU送来的输入数据)和掌握/形态存放器(寄存从CPU送来的掌握信息或装备的形态信息)。
  • 装备掌握器与装备的接口。装备掌握器衔接装备需求响应数目的接口,一个接口衔接一台装备。每一个接口中都存在数据、掌握和形态三品种型的旌旗灯号。
  • I/O掌握逻辑。用于完成对装备的掌握。它经过一组掌握线与CPU交互,对从CPU收到的I/O敕令停止译码。CPU启动装备时,将启动敕令发送给掌握器,同时经过地:址线把地址发送给掌握器,由掌握器的I/O逻辑对地址停止译码,并响应地对所选装备停止掌握。


图5-4  装备掌握器的构成

时间: 2024-10-11 20:29:35

I/O子零碎的条理构造的相关文章

简洁常用权限系统的设计与实现(五):不维护节点的深度level,手动计算level,构造树

这种方式,与第三篇中介绍的类似.不同的是,数据库中不存储节点的深度level,增加和修改时,也不用维护.而是,在程序中,实时去计算的. 至于后面的,按照level升序排序,再迭代所有的节点构造树,与第三篇中的方法,完全一样.因此,本篇和下一篇,只介绍如何计算level,不再介绍后面的具体实现了. 计算level,采用递归方式. // 计算所有节点的level public static List<Map<String, Object>> caculateLevel( List<

正则表达式中-分组构造

分组构造 捕获或非捕获 匹配的子表达式 捕获 命名匹配的子表达式 捕获 平衡组定义 捕获 非捕获组 非捕获 组选项 非捕获 零宽度正预测先行断言 非捕获 零宽度负预测先行断言 非捕获 零宽度正回顾后发断言 非捕获 零宽度负回顾后发断言 非捕获 非回溯子表达式 非捕获 表4.常用分组语法 分类 代码/语法 说明 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) (?:exp) 匹配

虚拟内存的概念、特点以及虚拟内存的完成

传统存储治理方法的特点 上一节所评论辩论的各类内存治理战略多是为了同时将多个过程保管在内存中以便许可多道程序设计.它们都具有以下两个配合的特点: 1) 一次性 功课必需一次性全体装入内存后,方能开端运转.这会招致两种状况发作: 看成业很大,不克不及全体被装入内存时,将使该功课无法运转: 当少量功课请求运转时,因为内存缺乏以包容一切功课,只能使多数功课先运转,招致多道程序度的降低. 2) 驻留性 功课被装入内存后,就不断驻留在内存中,其任何局部都不会被换出,直至功课运转完毕.运转中的过程,会因等候

算法期末考试练习题

一.选择题 1.算法分析中,记号O表示(B),记号?标售(A),记号Θ表示(D) A 渐进下界 B 渐进上界 C 非紧上界 D 紧渐进界 E 非紧下界 2.以下关于渐进记号的性质是正确的有:(A) A  f(n) =Θ(g(n)),g(n) =Θ(h(n)) ⇒f(n) =Θ(h(n)) B  f(n) =O(g(n)),g(n) =O(h(n)) ⇒h(n) =O(f(n)) C  O(f(n))+O(g(n)) = O(min{f(n),g(n)}) D  f(n) = O(g(n)) ⇔g

了解编译原理-笔记小结

这是之前学习编译原理过程中做下的笔记. 因能力有限,在很多地方都理解不到位,特别是对于词法分析与语法分析的过程感觉特别晦涩. 分享这个笔记也是为了自己做个总结,算是一个小的提纲吧,都没怎么深入解析编译的过程. 等以后领悟更多了再作补充吧. 希望各路人士能多加指点,谢谢. 词法分析 作用:将输入转换为一个一个的token,而其用一串整数来表示. 协作:只有当解析器需要的时候才会请求词法分析器,继续扫描输入流,在这个过程中将不断生成符号表. 实现:在通常的编程语言中,相对于不确定的有限自动机(NFA

创建型模式的总结

-单例模式 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 -工厂模式 简单工厂模式 用来生产统一等级结构中的任意产品(新增产品需要修改现有代码) 工厂方法模式 用来生产同一等级结构中的产品 抽象工厂模式 用来生产不同产品族的产品(不能新增产品,支持新增产品族) -创建者模式 分离了对象子组件的单独构造(由Builder来负者)和装配(由Director负者),对象的构造比较复杂时使用. 由于实现了构建和装配的解耦.不同的构建器,相同的装配也可以做出不同的对象:相同的构建器,不同的装

创建者模式Builder

创建者模式: 分离对象子组件的单独构造(由Builder来负责)和装配(由Director负责),对象的构造比较复杂时使用 该模式. 优点: 由于实现了构建和装配的解耦.不同的构建器,相同的装配也可以做成不同的对象,相同的构建器,不同的装配顺序也可以生产成不同的对象.也就是实现了构造算法和装配算法的解耦,实现了更好的复用. 应用场景: StringBuilder类的append方法. SQL中的PreparedStatement JDOM中,DomBuilder SAXBuilder 创建者模式

设计模式(三) 建造者模式

核心本质: 分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责).从而可以构造出复杂的对象. 使用性: 某个对象的构建过程复杂的情况下 特点: 由于实现了构造和装配的解耦.不同的构建器,相同的装配,也可以做出不同的对象:相同的构建器,不同的装配顺序也可以做出不同的对象.也就是实现了构建算法,装配算法的解耦,实现了更好的复用 应用场景: 实现例子代码: package com.lp.builder; public class AirShip { private Or

淘宝数据库OceanBase SQL编译器部分 源码阅读--生成物理查询计划

SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理执行计划.前两个步骤请参见我的博客<<淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树>>和<<淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划>>.这篇博客主要研究第三步,生成物理查询计划. 一. 什么是物理查询计划 与之前的阅读方法一致,这篇博客的两个主要问题是what 和how.那么什么是物理查询计划?物理查询计划能够直接执行并返回数据结果数