• 操作系统原理,IO控制方式,轮询流程,中断驱动流程,设备IO部件演化;IO的软件组成与层次,设备独立性;IO相关技术,缓冲技术


    操作系统原理,IO控制方式,轮询流程,中断驱动流程,设备IO部件演化;IO的软件组成与层次,设备独立性;IO相关技术,缓冲技术

    IO控制方式,控制维护设备的IO操作

    一、IO控制方式
    1、可编程IO(轮询/查询):由CPU代表进程给设备IO模块发送IO命令,进程进入忙等待,直到操作完成才继续执行。
    2、中断驱动IO,减少了设备驱动程序不断询问控制器状态寄存器的开销,当IO操作结束后,有设备控制器主动通知设备驱动程序。
    3、DMA,direct memory access

    在这里插入图片描述

    二、轮询的流程
    1、应用进程上CPU,并通过CPU向设备驱动程序发送IO命令,如读或写
    2、设备驱动程序读取设备控制器的状态寄存器
    3、设备控制器上的状态寄存器显示设备没有问题可进行该操作后,设备驱动程序通过设备控制器上的控制寄存器进行相应的控制命令,就是进程的IO命令对应的控制命令
    4、在设备控制器调用控制命令的过程中,设备驱动程序会进入忙等待,不断查询设备控制器的状态,直到状态为完成了相关操作
    5、当设备驱动程序查询到完成的状态后,将包含结果的数据寄存器中的数据通过设备驱动传递至进程。

    在这里插入图片描述

    三、中断驱动的流程
    1、应用进程上CPU并向设备驱动发送IO控制命令
    2、设备驱动检查设备控制器的状态寄存器
    3、状态允许的条件下设备驱动向设备控制器的控制寄存器执行控制命令
    4、设备驱动向控制寄存器发送了命令后,将该命令的状态存放在设备状态表中,此时,CPU可以去做别的事情,而不是忙等待
    5、设备完成控制命令以后,状态寄存器会给CPU发送中断,
    6、CPU接受中断以后通过中断处理程序将控制命令的结果提交给设备处理程序
    7、设备处理程序从设备状态表中查询到这是哪个请求的结果
    8、将数据提交给应用进程,该进程继续执行

    在这里插入图片描述
    四、设备IO部件的演化
    在这里插入图片描述

    IO的软件组成

    一、IO软件以分层思想设计
    1、把IO软件组织成多个层次
    2、每一层都执行操作系统需要的功能的一个相关子集,依赖于下层的更加原始的功能以屏蔽下层的细节,同时向上层提供服务。
    3、较低层考虑硬件的特性,并向高层软件提供接口
    4、较高层不依赖于硬件,并向用户提供一个友好清晰,简单,功能强大的接口

    在这里插入图片描述

    二、IO的软件层次
    在这里插入图片描述

    三、设备独立性(设备无关性)
    1、用户编写的程序可以访问任意IO设备,无需事先指定设备
    2、用户角度讲,用户在编写程序时,使用逻辑设备名,并有系统实现从逻辑设备到物理设备的转换,并实施IO操作
    3、系统角度将,设计并实现IO软件时,除了直接与设备打交道的底层软件,其他部分的软件不依赖于硬件。

    IO相关技术

    一、缓冲技术
    1、缓冲技术是操作系统中最早引入的技术,用于解决CPU和IO设备之间速度的不匹配问题,也可以用在任何数据到达和离去二者动作速度不匹配的地方。
    2、缓冲技术提高了CPU和IO设备间的并行性,缓冲区并非是提高了慢速的一方或减缓了高速的一方,而是减少了IO设备对CPU的中断请求次数,放款了CPU对中断响应时间的要求。
    3、缓冲区分两类:
    3.1、硬缓冲:由硬件寄存器实现,如设备中设置的缓冲区。
    3.2、软缓冲:在内存中开辟一个空间,用作缓冲区。
    4、缓冲区的管理
    4.1、单缓冲:一个缓冲区
    4.2、双缓冲:两个缓冲区轮换
    4.3、缓冲池(多缓冲或循环缓冲):统一管理多个缓冲区,采用有界缓冲区的生产者/消费者模型对缓冲池中的缓冲区进行循环使用

  • 相关阅读:
    y108.第六章 微服务、服务网格及Envoy实战 -- 可观测应用之分布式跟踪(十九)
    Spring Boot + MyBatis-Plus 实现 MySQL 主从复制动态数据源切换
    sudo相关漏洞CVE-2019-18634、CVE-2019-14287
    Springboot + Elasticjob-lite 3.x + Elasticjob-lite-UI可视化
    spring集成nacos简要笔记
    水库大坝除险加固安全监测系统解决方案
    spring5.3 十一:spring启动过程源码分析
    Spring Boot中Spring MVC的基本配置讲解与实战(包括静态资源配置,拦截器配置,文件上传配置及实战 附源码)
    5-1传输层-传输层提供的服务
    ARM_LIB_HEAP 与 RTT_HEAP的区别
  • 原文地址:https://blog.csdn.net/ganfanren00001/article/details/126157127