zoukankan      html  css  js  c++  java
  • 缓存IO读写的方式

    转自:https://blog.csdn.net/weixin_42096901/article/details/103017044

    1.中断

    • ①用户进程发起数据读取请求
    • ②系统调度为该进程分配cpu
    • ③cpu向io控制器(ide,scsi)发送io请求
    • ④用户进程等待io完成,让出cpu
    • ⑤系统调度cpu执行其他任务
    • ⑥数据写入至io控制器的缓冲寄存器
    • ⑦缓冲寄存器满了向cpu发出中断信号
    • ⑧cpu读取数据至内存

     缺点:中断次数取决于缓冲寄存器的大小。

     2.DMA : 直接内存存取

    • ①用户进程发起数据读取请求
    • ②系统调度为该进程分配cpu
    • ③cpu向DMA发送io请求
    • ④用户进程等待io完成,让出cpu
    • ⑤系统调度cpu执行其他任务
    • ⑥数据写入至io控制器的缓冲寄存器
    • ⑦DMA不断获取缓冲寄存器中的数据(需要cpu时钟)
    • ⑧传输至内存(需要cpu时钟)
    • ⑨所需的全部数据获取完毕后向cpu发出中断信号

    减少cpu中断次数,不用cpu拷贝数据

    2.1 DMA了解

    https://blog.csdn.net/zhejfl/article/details/82555634

    DMA(Direct Memory Access,直接存储器访问),DMA的出现就是为了解决批量数据的输入/输出问题。

    DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工作速度。

    通常系统总线是由CPU管理的,在DMA方式时,就希望CPU把这些总线让出来,而由DMA控制器接管,控制传送的字节数。

    对于实现DMA传输,它是由DMA控制器直接掌管总线(地址总线、数据总线和控制总线),因此,存在一个总线控制权转移问题

    DMA传输开始前:    CPU------>DMA控制器

    DMA传输结束后: DMA控制器------>CPU

    一个完整的DMA传输过程必须经历DMA请求、DMA响应、DMA传输、DMA结束4个步骤。

    理解关键点:在数据准备阶段,CPU与外设并行工作

  • 相关阅读:
    树莓派系统Raspbian安装小结
    树莓派安装centos 7系统
    Ubuntu下安装SSH服务
    使用xUnit为.net core程序进行单元测试(4)
    使用xUnit为.net core程序进行单元测试(3)
    使用xUnit为.net core程序进行单元测试 -- Assert
    使用xUnit为.net core程序进行单元测试(1)
    用 Identity Server 4 (JWKS 端点和 RS256 算法) 来保护 Python web api
    asp.net core 2.0 查缺补漏
    "软件随想录" 读书笔记
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/15314868.html
Copyright © 2011-2022 走看看