一文入手 操作系统——存储管理 之 IO系统

1 篇文章 0 订阅
1 篇文章 0 订阅

I/O系统

在这里插入图片描述

操作系统IO功能是:管理和控制IO操作和IO设备
设备驱动程序为IO子系统提供了统一的设备访问接口,就像系统调用为应用程序与操作系统之间提供了标准接口

IO硬件

设备与计算机的通信通过一个连接点或端口。如果设备共享一组通用线路,那么这种连接称为总线

  • 菊花链:A通过线路连到B,B连到C,C通过端口连到计算机。菊花链通常按照总线运行

图示

https://storageioblog.com/pcie-fundamentals-server-storage-io/

构成

  • PCI总线

    • 常用于PC系统总线
    • 将处理器内存子系统连到快速设备
  • 扩展总线

    • 连接相对较慢的设备,如键盘和串口和USB端口
  • 小型计算机系统接口(SCSI)

    • 通常连接SATA磁盘
  • 控制器

    • 可以操作端口、总线或设备的一组电子器件;里面有寄存器;设备控制器可发送中断给CPU,告知CPU IO已经完成
  • 其他总线

    • 用于互连计算机主要部分的其他总线包括,吞吐量高达16GB/s的PCI Express和吞吐量高达25GB/s的HyperTransport
    • 新一代的高速总线技术相继出现了。大多数是基于高速串行构架产生的传输标准。包括HyperTransport, InfiniBand, RapidIO,ARM架构中的AMBA和StarFabric等等。这些均有业界的不同企业支持,背后也都有大量的资金投入标准的研究开发,所以每一标准都声称自己与众不同,独占优势。主要的差异在于可扩展性、灵活性与反应时间、单位成本的取舍平衡各不相同。
      原文链接:https://blog.csdn.net/pankul/article/details/8642030

IO端口四种寄存器

  • 状态寄存器

    • 保存状态数据,CPU可以从中读取当前接口电路的状态,其状态间接反映了外设的状态
  • 控制寄存器

    • 保存控制数据,CPU可向其中写入命令,选择接口电路的工作方式,并控制外设进行有关操作。
  • 数据寄存器

    • 数据输入寄存器
    • 数据输出寄存器
    • 在输入时,它保存从外设发往CPU的数据;
      在输出时,它保存从CPU发往外设的数据

IO操作

https://www.cnblogs.com/niuyourou/p/12588407.html

轮询

  • 定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作
  • 程序轮询是一种效率较低的方式,在现代计算机系统中已很少应用

中断

  • 中断,便是设备控制器向处理器发出的中断,可以想象数据交互的过程:

    1. 处理器需要磁盘上的 100M 数据,于是向磁盘处理器发出读取指令,然后进程阻塞,等待数据准备完毕。

    2. 磁盘处理器接收到读取指令,执行寻道/寻址等磁盘操作找到目标数据,将数据读取到磁盘处理器的寄存器中。假设寄存器容量为 1M ,等待寄存器读满后向 CPU 发出中断。

    3. CPU 接收到中断信号,唤醒进程执行数据读取指令,将数据从磁盘控制器的寄存器读取到内存。等待读取完成,没有数据可读取,继续进入阻塞状态。

    4. 磁盘控制器再次将磁盘中的数据读取到寄存器,又是 1M ,再次向 CPU 发送中断。循环往复,直到将 10 M 数据读取完成。

可以看到,总体的优化思路是通过中断机制,将设备控制器从设备中读取数据到寄存器的时间节省了出来,CPU 不会繁忙等待在这段时间上,可以去做其它有意义的事情。

  • 频繁的中断会加大 CPU 的压力,尤其是一些设备控制器的寄存器比较小的情况下,一次 I/O 操作中进行中断的频率非常高。另外将数据由设备处理器读取到内核缓冲区的过程 CPU 是全程干预,一个字节一个字节进行读写的,这些操作并没有什么复杂的逻辑,由 CPU 直接处理显得有些浪费资源

DMA(Direct Memory Acess)

  • 直接内存存取技术是指,数据在内存与I/O设备间直接进行成块传输。该技术基于 DMA 设备,将 CPU 从简单的数据传输工作中解放了出来

  • DMA工作过程

    • ⑴当进程要求设备输入数据时,CPU把准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器。
    • ⑵发出数据传输要求的进行进入等待状态。此时正在执行的CPU指令被暂时挂起,进程进入阻塞状态。进程调度程序调度其他进程占据CPU。
    • ⑶输入设备不断地窃取CPU工作周期(或者说与 CPU 争取内存总线),将数据缓冲寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。
    • ⑷DMA控制器在传送完所有字节时,通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。
    • ⑸中断处理结束后,CPU返回到被中断的进程中,或切换到新的进程上下文环境中,继续执行
      在这里插入图片描述

通道IO

应用程序IO接口

按统一的标准的方式来处理IO设备

操作系统提供了统一的接口,而各种设备的驱动程序自己实现如何驱动硬件,然后通过与操作系统接口的对接来向上层提供服务。这样,操作系统无需为每个设备都做针对性的驱动。各方只要根据标准走

IO的各种差异

  • 字符流或块

    • 字符流设备逐个字节传输,而块设备以字节块为单位来传输

      • 键盘鼠标按流

        • get(),put()
      • 磁盘按块

        • write(),read(),seek()
  • 顺序访问或随机访问

  • 同步或异步

  • 共享或专用

    • 共享值被多个进程或线程并发使用
  • 操作速度

    • 每秒传输多少字节
  • 读写、只读、只写

网络设备

  • 套接字Socket接口
  • 函数select()可以管理套接字,可以消除轮询和忙等

时钟与定时器

  • 网络阻塞产生的 指数退避 就可以用定时器实现

向量IO

https://www.eejournal.com/article/20170209-scatter-gather/

  • 分散聚集(scatter-gather)

  • 理想情况

  • 在这里插入图片描述

  • 实际情况

  • 在这里插入图片描述

  • 分散聚集:所需的数据在内存中是分散的,我们要对它们进行一次性的处理,那么就可以把它们聚集在一起,处理完成后,若有需要则把它们分散回原来的位置

内核IO子系统

IO调度

  • 磁盘调度算法有其不合理性,我们可以重新排列服务顺序来提升IO效率

  • 当内核支持异步IO时,它必须能同时跟踪许多IO请求。为此,操作系统可能会将等待队列附加到设备状态表(device-status table),内核负责管理它。

    • 每个条目表明设备的类型、地址和状态

缓冲

  • 缓冲区是一块内存区域,用于保存在 两个设备 或 设备和应用程序 之间传输的数据

  • 3

    • 处理数据流的生产者和消费者之间的速度不匹配

    • 协调传输大小不一的数据的设备

    • 支持应用程序IO的复制语义

      • 复制语义是什么意思?
        就是从缓冲区把数据调用write()写入到磁盘后,不管在这之后你缓冲区里面的数据有没有改,我磁盘都只会跟你write()时的数据一致
      • 通过虚拟内存映射 和 写时复制 可以得到同样的效果

缓存

  • 缓存是保存数据副本的高速内存区域。访问缓存副本比访问原版更加有效

假脱机与设备预留

  • 假脱机打印允许暂时将从计算机传送来的打印作业临时保存起来,并在计算机完成传送后打印他们。
    这样可缩短打印时间,因为可最大限度地提高打印机的效率
  • 有的设备不能实现复用多个并发应用程序的IO请求,那么这个时候就要OS提供支持设备的互斥访问,应用程序自己来避免死锁

错误处理

  • 重试

  • 返回错误代码

  • SCSI设备故障级别

    有点类似于java里面log的打印输出级别

    • 感应键:用于标识故障的一般性质,如硬件错误或非法请求

    • 额外感应代码

      • 故障类型,如错误命令或自检失败
    • 额外感应代码修饰词

      • 更详细的信息

IO保护

  • 为了防止用户执行非法IO,我们定义所有IO指令为特权指令。因此用户态不能执行IO指令,只有内核态可以
  • 内存保护系统保护任何内存映射和IO端口内存位置,以便阻止用户访问。内核会提供一种锁定机制,允许内存的一部分一次性分配给一个进程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统是计算机系统中的核心组成部分,负责管理和协调计算机硬件和软件资源,提供程序运行环境。在CSDN上有很多关于操作系统的专题文章,以下将从操作系统的基本概念、功能和常见类型等方面简要介绍一下。 首先是操作系统的基本概念。操作系统是一种系统软件,它是计算机硬件和应用软件之间的桥梁,提供给应用程序一系列的服务和资源,同时负责调度和管理系统资源。它为用户屏蔽了底层的硬件差异,提供了一个统一的、易于使用的界面。 操作系统主要有四个基本功能。首先是处理器管理,负责将处理器分配给系统中的各个进程,并进行进程切换,实现多道程序并发执行。其次是内存管理,管理计算机的内存资源,包括分配、回收和保护等操作。再次是文件管理,负责管理文件的存储、命名和保护等操作,提供了文件操作的接口。最后是设备管理,负责管理计算机的各种设备,包括输入输出设备和存储设备等。 常见的操作系统有多种类型。最主流的是Windows、Linux和Mac OS等桌面操作系统。此外还有服务器操作系统,如Windows Server和Linux等,用于管理和部署服务器。还有嵌入式操作系统,如Android和iOS等,用于移动设备和物联网设备。操作系统也有实时操作系统,用于需要实时控制和响应的系统,如工控系统和航空航天系统等。 总之,操作系统是计算机系统中不可或缺的重要组成部分,通过CSDN上的相关文章,我们可以更深入了解操作系统的基本概念、功能和不同类型。这些知识对于理解计算机系统的工作原理和提升编程能力都有着重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值