看啥推荐读物
专栏名称: LitC
菜逼就得学习
目录
相关文章推荐
今天看啥  ›  专栏  ›  LitC

Linux内存管理

LitC  · 简书  ·  · 2021-03-11 08:51

对于包含MMU的处理器而言,Linux系统提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。
进程的4GB空间被分为两部分: 用户空间和内核空间

用户空间的地址一般分布为0 3GB,剩下的3 4GB为内核空间。用户进程通常只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址。用户进程只有通过系统调用(代表用户进程在内核态执行)等方式才能访问到内核空间。

image.jpeg

每个进程的用户空间都是完全独立、互不相关的,用户进程各自有不同的页表。而内核空间是由内核负责映射的,不会跟着进程改变,是固定的。内核空间的虚拟地址到物理地址映射是被所有进程共享的,内核的虚拟空间独立于其他程序。

Linux中1GB的内核空间又被划分为物理内存映射区、虚拟内存分配区、高端页面映射区、专用页面映射区和系统保留映射器,如下图:

image.jpeg

对于x86系统而言,一般情况下,物理内存映射区最大长度为896MB,系统的物理内存被顺序映射在内核空间的这个区域中。当系统物理内存大于896MB时,超过物理内存映射区的那部分内存称为高端内存(未超过物理内存映射区的内存被称为常规内存),内存在存取高端内存时必须将他们映射到高端页面映射区。




原文地址:访问原文地址
快照地址: 访问文章快照