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与外设并行工作

  • 相关阅读:
    小数据池以及深浅拷贝
    字典的初识,了解
    元组:认识,索引 切片
    列表的认识,嵌套,增删改查
    bool、字符串方法、for循环
    字符串格式化输出、while循环、运算符.
    Python的基础知识与历史应用
    git错误:error: failed to push some refs to 'https://...'
    golang中gin框架使用logrus
    golang中如何监控多个goroute协程是否执行完成
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/15314868.html
Copyright © 2011-2022 走看看