美文网首页代码改变世界
操作系统快速入门笔记--5

操作系统快速入门笔记--5

作者: 球球球球笨 | 来源:发表于2018-02-05 19:11 被阅读0次

    这一节主要记录的是操作系统设备管理的知识

    I/O设备

    现代计算机系统通常配备大量的I/O设备,用于计算机系统与外部世界(如用户、其它计算机或电子设备等)进行信息交换或存储
    I/O设备又称为外围设备或外部设备,简称外设
    I/O操作:内存和I/O设备之间的信息传送操作

    • 不仅影响计算机的通用性和可扩充性,也是计算机
      系统综合处理能力和性价比的重要因素

    分类

    按信息传输方式分:
    输入设备,输出设备,输入输出设备
    按交互功能分:
    人机交互设备,存储设备,机机通信设备
    按设备管理分配:
    字符设备
    块设备:以固定大小的数据块进行信息交换
    网络设备:用于与远程设备通信

    设备管理的目标

    克服设备和CPU速度的不匹配所引起的问题,使主机和设备并行工作,提高设备使用效率。
    对设备进行抽象,屏蔽设备的物理细节和操作过程,配置驱动程序,提供统一界面,供用户或高层软件使用。

    1. 抽象位文件系统的结点,统一管理
    2. 裸设备:不被操作系统直接管理,由应用程序读写,I/O效率更高

    设备管理的功能

    1. 设备中断处理
    2. 缓冲区管理
    3. 设备的分配和去配
    4. 设备驱动调度
    5. 实现虚拟设备

    设备管理的层次

    1. I/O硬件 I/O设备及其接口线路,控制部件,通道
    2. I/O软件 系统I/O软件 用户空间I/O软件

    设备控制器

    为达到模块化和通用性的设计目标,通常将I/O设备中的机械部件和电子部件分开处理。
    其中,电子部件称为设备控制器。
    设备控制器又称为设备适配器、I/O控制器、I/O
    控制接口,简称I/O模块或I/O接口。
    操作系统与控制器交互,而非与设备交互。

    设备控制器的功能

    设备控制器是CPU与设备之间的接口,功能如下:

    1. 接受和识别CPU或通道发来的命令
    2. 实现数据交换
    3. 发现和记录设备及自身的状态信息,供CPU处理使用
    4. 当连接多台设备时,设备地址识别。

    设备控制器的组成 设备控制器的组成部分.png

    轮询方式

    1. 处理器向控制器发送一个I/O命令。
    2. 如果设备未就绪,则重复测试过程,直至设备就绪。
    3. 执行数据交换。
    4. 等待I/O操作完成后,才可以继续其它操作。


      轮询方式.png

      特点:

    5. 处理I/O请求会终止原程序的执行
    6. CPU需要等待I/O设备就绪
    7. CPU需要参与数据传送
    8. CPU和设备只能串行工作,效率低下。

    中断方式

    流程:

    1. 处理器向控制器发出一个I/O命令,然后继续执行后续指令
    • 如果该进程不需要等待I/O完成,后续指令可以仍是该进程中的指令
    • 否则,该进程在这个中断上挂起,处理器执行其他工作
    1. 控制器检查设备状态,就绪后发起中断
    2. CPU响应中断,转向中断处理程序
    3. 中断处理程序执行数据读写操作
    4. 恢复执行原先程序


      中断方式.png

      特点:

    5. 响应终端后会终止源程序的执行
    6. CPU不需要等待I/O设备就绪
    7. CPU需要参与数据传送
    8. CPU与设备部分并行操作,效率有所提高

    直接存储器访问(DMA)方式

    DMA模块:模拟处理器来访问主存和设备控制器之间的数据交换。

    流程:

    1. 处理器向DMA模块发出I/O命令
    2. 处理器继续执行其它工作,DMA模块负责传送
      全部数据
    3. 数据传送结束后,DMA中断处理器。


      DMA.png

    特点:

    1. CPU不会终止源程序的执行
    2. CPU只在数据传送的开始和结束时参与
    • 开始时,CPU需要对DMA模块进行初始化
    • 结束时,CPU响应中断,但不必保存现场

    DMA方式中的周期窃取

    当DMA和CPU同时经总线访问内存时,CPU总是将总线的占有权让给DMA一个或几个主存周期
    周期窃取对延迟CPU与主存的数据交换影响不大

    1. 数据传送过程是不连续的和不规则的
    2. CPU大部分情况下与Cache进行数据交换,直接访

      问内存较少。 CPU在IO控制中的作用.png

    I/O通道

    又称为通道控制器、I/O处理器
    设备控制器包含自身专用的处理器和通道程序

    1. I/O指令不再由处理器执行,而是存在主存中,由I/O通道所包含的处理器执行
    2. 采用四级连接:处理器,通道,控制器,设备
      可控制多台同类或不同类的设备

    流程:

    1. CPU在遇到I/O请求的时候启动制定通道。
    2. 一旦启动成功,通道开始控制I/O设备进行操作,CPU执行其他任务
    3. I/O操作完成后,I/O通道发出中断,CPU停止当前工作,转向处理I/O操作结束事件

    CPU与通道并行工作。

    带有局部存储器的I/O通道

    总线

    解决I/O设备速度不匹配的问题。
    要使得主机和设备充分并行,提高系统效率。

    单总线结构模型

    将CPU、主存和I/O模块连接到同一组总线上
    优点:结构简单,易于扩充
    缺点:主存需要和I/O模块共用总线;设备增多会造成总线变长,进而增加传输时延;无法适用于大量高速设备。

    三级总线

    主存和Cache通过主存总线传送数据,主存总线和扩展总线上的I/O设备之间传送数据通过扩展总线接口缓冲。

    优点:主存与I/O之间的数据传送与处理器的活动分离;
    可以支持更多的I/O设备。
    缺点:不适用于I/O设备数据速率相差太大的情形。


    三级总线.png

    采用南北桥的多级总线

    通过存储总线、PCI总线、E(ISA)总线分别连接主存、高速I/O设备和低速I/O设备
    优点:可以支持不同数据速率的I/O设备


    南北桥.png

    采用I/O通道的多级总线

    支持CPU、主存和多个I/O通道之间的数据传送

    支持I/O通道和I/O控制器,以及I/O控制器和设备之间的数据传送。 采用I/O通道的多级总线.png

    下面介绍I/O软件

    I/O软件

    设计目标:

    1. 高效率:改善设备效率,尤其是磁盘I/O操作的效率
    2. 通用性: 用统一的标准来管理所有设备

    设计思路:把软件组织成层次结构,低层软件用来屏蔽硬件细节,高层软件向用户提供简洁友善的界面。

    主要考虑的问题:

    1. 设备无关性:编写访问文件的程序与具体设备无关。
    2. 出错处理:低层软件能处理的错误不让高层软件感知。
    3. 同步/异步传输: 支持阻塞和中断驱动两种工作方式。
    4. 缓冲技术:建立数据缓冲区,提高吞吐率。

    I/O软件的层次结构

    IO软件的层次结构.png

    I/O中断处理程序

    位于操作系统底层,与硬件设备密切相关,与系统其余部分尽可能少地发生联系。
    进程请求I/O操作时,通常被挂起,直到数据传输结束后并产生I/O中断时,操作系统接管CPU后转向中断处理程序。
    当设备向CPU提出中断请求时,CPU响应请求并转入中断处理程序。

    功能:
    检查设备状态寄存器的内容,判断中断产生的原因,根据I/O操作的完成情况进行相应的处理。

    1. 若数据传输有错,向上层软件报告设备的出错信息,实施重新执行。
    2. 若正常结束,唤醒等待传输的进程,使其转换为就绪态。
    3. 若有等待传输的I/O命令,通知相关软件启动下一个I/O请求。

    设备驱动程序

    包括与设备密切相关的所有代码。
    从独立于设备的软件中接收并执行I/O请求

    1. 把用户提交的逻辑I/O请求转化为物理I/O操作的启动和执行。
    2. 监督设备是否正确执行,管理数据缓冲区,进行必要的纠错处理。

    功能:

    1. 设备初始化:在系统初次启动或设备传输数据时,预置设备和控制器以及通道状态。
    2. 执行设备驱动例程:负责启动设备,进行数据传送。对于具有通道方式,还负责生成通道指令和通道程序,启动通道工作。
    3. 调用和执行中断处理程序。负责处理设备和控制器及通道所发出的各种中断。

    设备驱动程序的层次

    每个设备驱动程序只处理一种设备,或者一类紧密相关的设备。
    设备驱动程序分为整体驱动程序和分层驱动程序

    1. 整体驱动程序直接向操作系统提供接口和控制硬件
      :适用于功能简单的驱动程序,效率较高,但较难迁移
    2. 分层驱动程序将驱动程序分成多层,放在栈中,系统接到I/O请求时先调用栈顶的驱动程序,栈顶的驱动程序可以直接处理请求或向下调用更低层的驱动程序,直至请求被处理。适用于功能复杂、重用性要求较高的驱动程序,结构清晰且便于移植,会增加部分系统开销。

    独立于设备的I/O软件

    执行适用于所有设备的常用I/O功能,并向用户层软件提供一致性接口。
    功能:

    1. 设备命名:通过路径名寻址设备
    2. 设备保护:检查用户是否有权访问所申请设备
    3. 提供与设备无关的数据单位:字符数量,块尺寸
    4. 缓冲技术:传输速率,时间约束,不能直接送达目的地
    5. 设备分配和状态跟踪:分配不同类型的设备错误
    6. 错误处理和报告:驱动程序无法处理的错误

    用户空间的I/O软件

    库函数

    1. 一小部分I/O软件不在操作系统中,是与应用程序链接在一起的库函数,甚至完全由运行于用户态的程序组成。
    2. 系统调用通常由库函数封装后供用户使用,封装函数只是将系统调用所用的参数放在合适位置,然后执行访管指令来陷入内核,再由内核函数实现真正的I/O操作。

    ** SPOOLing软件**
    在内核外运行的系统I/O软件,采用预输入、缓输出和井管理技术,通过创建守护进程和特殊目录解决独占型设备的空占问题。

    相关文章

      网友评论

        本文标题:操作系统快速入门笔记--5

        本文链接:https://www.haomeiwen.com/subject/znpmzxtx.html