| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 内存零拷贝详解 -> 正文阅读 |
|
[嵌入式]内存零拷贝详解 |
目录 前置知识标准设备一个标准的硬件设备包括两部分:
?标准协议一个标准设备的接口包含三个寄存器,通过读写这些寄存器,操作系统可以控制设备的行为:
操作系统与标准设备的交互:
缺点:轮询过程比较低效,等待设备就绪和等待设备执行完成命令浪费大量CPU时间 利用中断减少CPU开销概念:有了中断后,CPU 不再需要不断轮询设备,而是向设备发出一个请求,然后就可以让对应进程睡眠,切换执行其他任务。当设备完成了自身操作,会抛出一个硬件中断,CPU进而跳转执行操作系统的中断处理程序,并且唤醒等待I/O的进程继续执行。 例如,在没有中断操作的时候,进程1在CPU上运行,然后发出一个读取数据的IO请求给磁盘设备,然后操作系统进行自旋轮询设备(图中的P),设备完成请求之后,请求返回,进程1继续执行 ?在有了中断以后,操作系统不需要轮询等待设备准备完成,可以去执行其他进程2,设备准备好之后发出中断,操作系统继续执行线程1 ?中断工作流程图 IO过程简述:
利用DMA进行继续优化上述采用中断的方式依旧可优化的地方,比如 进程1在运行过程中需要向磁盘写一些数据,所以它开始进行IO操作将数据从内存写入磁盘设备(图中的C),拷贝结束之后,磁盘采用中断方式开始执行IO? 也就是说在从内存拷贝到磁盘或者从磁盘拷贝到内存这个过程是可以使用DMA(Direct Memory Access)进行优化的 DMA工作方式 为了能够将数据传送给设备,操作系统会通过编程告诉DMA引擎数据在内存的位置,要拷贝的大小以及要拷贝到哪个设备。在此之后,操作系统就可以处理其他请求了。当DMA的任务完成后,DMA控制器会抛出一个中断来告诉操作系统自己已经完成数据传输。 采用DMA优化后的工作流程图 ? 过程:
前置知识讲完了,下面进入正题 零拷贝场景:将磁盘上的文件读取出来,然后通过网络协议发送给客户端 ? 发生了4次拷贝
优化方式 零拷贝之mmap
现在就只有三次数据拷贝了 零拷贝之sendfile
现在就只有两次上下文切换了。? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:48:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |