Linux DMA、Page Cache、Buffer Cache 和零拷贝

原创用友财务软件 2022-09-22 18:15:08  阅读 390 次 评论 0 条
摘要:

0. 前言 磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量

本文主要介绍【Linux DMA、Page Cache、Buffer Cache 和零拷贝】和【】,有兴趣的朋友可以看下由【私房菜】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的相关问题。

0. 前言

磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效地减少磁盘的访问次数。

这次,我们就以「文件传输」作为切入点,来分析 I/O 工作方式,以及如何优化传输文件的性能。

本文围绕下列几个知识点:

为什么使用DMA 技术 普通的数据交互 零拷贝技术 Page Cache 大文件传输的实现方式

1. 为什么使用DMA 技术

在没有 DMA 技术前,I/O 的过程是这样的:

当应用程序需要读取磁盘数据时,调用read()从用户态陷入内核态,read()这个系统调用最终由CPU来完成; CPU向磁盘发起I/O请求,磁盘收到之后开始准备数据; 磁盘将数据放到磁盘缓冲区之后,向CPU发起I/O中断,报告CPU数据已经Ready了; CPU收到磁盘控制器的I/O中断之后,开始拷贝数据,完成之后read()返回,再从内核态切换到用户态;

本文《Linux DMA、Page Cache、Buffer Cache 和零拷贝》版权归私房菜所有,引用需遵循CC 4.0 BY-SA版权协议。

本文地址:https://www.ufidawhy.com/gjp/120303.html
版权声明:本文来源于网络,如有侵权请E-mail联系 ufidawhy 站长 ufidawhy@vip.qq.com!

评论已关闭!