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

  • 相关阅读:
    MYSQL数据库导入数据时出现乱码的解决办法
    Java Web(一) Servlet详解!!
    hibernate(九) 二级缓存和事务级别详讲
    MySQL(五) MySQL中的索引详讲
    LinkedHashMap源码详解
    hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解
    hibernate(七) hibernate中查询方式详解
    MySQL(四) 数据表的插入、更新、删除数据
    MySQL(三) 数据库表的查询操作【重要】
    MySQL(二) 数据库数据类型详解
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/15314868.html
Copyright © 2020-2023  润新知