理论题

您所在的位置:网站首页 dma如何除去 理论题

理论题

2023-03-27 10:47| 来源: 网络整理| 查看: 265

操作系统基本知识用户空间和内核空间用户态和内核态CPU上下文DMA技术零拷贝原始方式mmap+write方式sendfile方式sendfile+支持SG-DMA的网卡参考资料

操作系统基本知识

在讲述零拷贝之前需要先明白操作系统中的几个概念:用户态、内核态、用户空间、内核空间、CPU上下文、DMA

用户空间和内核空间

应用程序需要通过操作系统提供的一些函数才能完成对磁盘、网络的访问,这些操作都是由底层操作系统来完成的。操作系统为每个进程分配内存时,会分为两个部分:一部分是用户内存空间(用户空间)、另一部分是内核内存空间(内核空间)。内核空间是操作系统内核访问的区域,是受保护的内存空间,而用户空间是用户应用程序访问的内存区域直白一点说:当进程运行应用程序的代码时,进程只能使用用户空间的这块内存,当应用程序发生系统调用时,进程才可以访问内核空间的这块内存。

用户态和内核态 进程运行于内核空间时,即为内核态进程运行与用户空间时,即为用户态 CPU上下文CPU上下文:寄存器内容和程序计数器内容CPU上下文切换:保存现有的CPU上下文内容,换成其他的CPU上下文

DMA技术

Direct Memory Access,直接内存访问

在没DMA时

在有DMA时

DMA的出现减少了CPU将数据拷贝到内核态的过程

零拷贝

零拷贝的方式有:

mmap+writesendfile

sendfile+支持SG-DMA的网卡

原始方式

4次上下文切换

4次文件拷贝

mmap+write方式

3次文件拷贝

4次上下文切换

减少了内核态->用户态的文件拷贝

sendfile方式

2次上下文切换3次拷贝

sendfile直接从内核态写入socket缓冲区再到网卡

sendfile+支持SG-DMA的网卡

2次上下文切换2次数据拷贝

省去了缓冲区->socket缓冲区的赋值

参考资料 https://mp.weixin.qq.com/s?__biz=Mzg3NzU5NTIwNg==&mid=2247496788&idx=1&sn=f65ddd10d16d8376efa0037762153932&chksm=cf222b7df855a26bad76249e7b77e28da3097b226f9165d79f5031516d9c345827fca901559c&token=2001057130&lang=zh_CN&scene=21#wechat_redirecthttps://xiaolincoding.com/os/8_network_system/zero_copy.html#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E6%9C%89-dma-%E6%8A%80%E6%9C%AF


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3