linux为什么 mmap 比系统调用快

Posted 九师兄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux为什么 mmap 比系统调用快相关的知识,希望对你有一定的参考价值。

1.概述

翻译:Why mmap is faster than system calls

当我问我的同事为什么 mmap 比系统调用更快时,答案不可避免地是“系统调用开销”:跨越用户空间和内核之间边界的成本。事实证明,这种开销比我以前想象的要微妙得多,所以让我们深入了解一下性能差异。

背景(如果您是操作系统专家,请跳过):

系统调用。系统调用是一个SPE ç IAL功能,让您的交叉保护域。当程序在用户模式(非特权保护域)下执行时,不允许执行在内核模式(特权保护域)中执行的代码允许的操作。例如,如果没有内核的帮助,在用户空间中运行的程序通常无法读取文件。当用户程序向操作系统请求服务时,系统会通过系统调用保护自己免受恶意程序或错误程序的侵害。系统调用执行一条特殊的硬件指令,通常称为“陷阱”,将控制权转移到内核中。然后内核可以决定是否接受请求。

虽然这种保护非常有用,但它是有代价的。当我们从用户空间进入内核时,我们必须保存硬件寄存器&

以上是关于linux为什么 mmap 比系统调用快的主要内容,如果未能解决你的问题,请参考以下文章

Linux|Mmap的实现原理和应用

为啥 mmap()(内存映射文件)比 read() 快

mmap为什么比read/write快

Linux 内核 内存管理内存管理系统调用 ⑤ ( 代码示例 | 多进程共享 mmap 内存映射示例 )

Linux 内核 内存管理mmap 系统调用源码分析 ① ( mmap 与 mmap2 系统调用 | Linux 内核中的 mmap 系统调用源码 )

Linux 内核 内存管理内存管理系统调用 ④ ( 代码示例 | mmap 创建内存映射 | munmap 删除内存映射 )