Linux-内存分页

把物理内存划分成一个个的页面,每个页面大小4K

页面为最小单位进行内存的分配

知道物理页的索引和页内偏移就可以转换为物理地址

页索引+页内偏移==实际物理地址

页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。 每一个进程都拥有一个自己的页表,PCB表中有指针指向页表。---百度百科

页表结构:

为什么要分页?

操作系统管理内存的一种方式。他是将内存划分成一个一个页面,然后通过页表进行逻辑地址到物理地址的映射从而访问具体的物理地址。分页更好的对内存的划分与访问,但是也增加了系统的开销。例如页表本身占据一定的内存以及访问实际的物理内存时还需先访问页表。一般来说每个进程会分配到一个页表。最后对页表的设计需要谨慎。

原文链接:分页机制_AiT_Boy的博客-CSDN博客

怎么分页?

内存管理---页表机制1_古戎烽烟的博客-CSDN博客

Linux使用两级保护机制:0级供内核使用,3级供用户程序使用。每个进程有各自的私有用户空间(0~3G),这个空间对系统中的其他进程是不可见的。最高的1GB字节虚拟内核空间则为所有进程以及内核所共享。内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。

linux页表映射机制的建立分为两个阶段,第一个阶段是内核进入保护模式之前要先建立一个临时内核页表并开启分页功能,因为在进入保护模式后,内核继续初始化直到建立完整的内存映射机制之前,仍然需要用到页表来映射相应的内存地址。

Linux的分段和分页机制_jieniyimiao的博客-CSDN博客

内存分页机制____Blue_H的博客-CSDN博客_分页机制

(C语言内存七)分页机制究竟是如何实现的? - Smah - 博客园

分页机制_AiT_Boy的博客-CSDN博客

内存管理---页表机制1_古戎烽烟的博客-CSDN博客

对于64位环境,虚拟地址空间达到 256TB,使用二级页表占用的存储空间依然不小,所以会更加细化,从而使用三级页表甚至多级页表,这样就会有多个页目录,虚拟地址也会被分割成多个部分,思路和上面是一样的,不再赘述。

你可能感兴趣的:(linux,运维,服务器)