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

  • 相关阅读:
    AD账号解锁
    Django中的DateTimeField格式
    接口调用,输出结果为Json格式(ConvertTo-Json),提交参数给URL(WebRequest)
    jQuery表格排序(tablesorter)
    Python脚本性能分析
    监控文件内容变化,即时写入到新文件(tail)
    导出目录权限
    多进程、多线程处理文件对比
    shell 实例收集
    DHCP : 网络世界身份的获取
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/15314868.html
Copyright © 2011-2022 走看看