Linux mmap 机制:从 read/write 底层流程到手写 malloc 内存分配在进程想要读取某个文件时(当然也可以是其他资源,因为 Linux 下 一切皆文件,这里指的是磁盘文件),会发起 read 系统调用。CPU 会从用户态转换到内核态,伴随着 CPU 上下文的切换、快表缓存的失效等;进入内核态后,接下来通过进程在 CPU 的 CR3 寄存器中保留的页表物理地址,找到进程想要访问的文件内容在页缓存中的物理地址。如果找到了,就直接把内容返回给用户态(当然这中间还包含着信号的处理流程,可能又涉及多次用户态、内核态的转化);如果没找到,就再到磁盘中加载。