linux为什么 mmap 比系统调用快
Posted 九师兄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux为什么 mmap 比系统调用快相关的知识,希望对你有一定的参考价值。
1.概述
翻译:Why mmap is faster than system calls
当我问我的同事为什么 mmap 比系统调用更快时,答案不可避免地是“系统调用开销”
:跨越用户空间和内核之间边界的成本。事实证明,这种开销比我以前想象的要微妙得多,所以让我们深入了解一下性能差异。
背景(如果您是操作系统专家,请跳过
):
系统调用。系统调用是一个SPE ç IAL功能,让您的交叉保护域。当程序在用户模式(非特权保护域)下执行时,不允许执行在内核模式(特权保护域)中执行的代码允许的操作。例如,如果没有内核的帮助,在用户空间中运行的程序通常无法读取文件。当用户程序向操作系统请求服务时,系统会通过系统调用保护自己免受恶意程序或错误程序的侵害。系统调用执行一条特殊的硬件指令,通常称为“陷阱”,将控制权转移到内核中。然后内核可以决定是否接受请求。
虽然这种保护非常有用,但它是有代价的。当我们从用户空间进入内核时,我们必须保存硬件寄存器&
以上是关于linux为什么 mmap 比系统调用快的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核 内存管理内存管理系统调用 ⑤ ( 代码示例 | 多进程共享 mmap 内存映射示例 )
Linux 内核 内存管理mmap 系统调用源码分析 ① ( mmap 与 mmap2 系统调用 | Linux 内核中的 mmap 系统调用源码 )
Linux 内核 内存管理内存管理系统调用 ④ ( 代码示例 | mmap 创建内存映射 | munmap 删除内存映射 )