文章目录
概述
目的
-
有效地管理存储器。为不同进程合理的分配存储器资源,为每个进程提供一致的、私有的地址空间。 -
少出错。避免进程间相互写彼此的储存器。
三个重要的能力
-
将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并且根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效地使用了主存。 -
为每个进程提供了一致的地址空间,从而简化了存储器管理。 -
它保护了每个进程的地址空间不被其他进程破坏。
物理寻址
虚拟寻址
物理内存、虚拟内存
一个选自虚拟地址空间的虚拟地址,一个选自物理地址空间的物理地址。

Linux虚拟内存空间
-
只读段,包括代码和常量等。 -
数据段,包括全局变量等。 -
堆,包括动态分配的内存,从低地址开始向上增长。 -
文件映射段,包括动态库、共享内存等,从高地址开始向下增长。 -
栈,包括局部变量和函数调用的上下文等。栈的大小是固定的,一般是 8 MB。

内存映射、页表
-
虚拟页(Virtual Page,VP):将虚拟存储器分割为大小固定的块。 -
物理页(Physical Page,PP):将物理存储器分割为大小固定的块。也称为页帧(page frame)
地址翻译


页表项过多问题
多级页表
多级页表就只保存使用中的区块,这样就可以大大地减少页表的项数。
大页
大页通常用在使用大量内存的进程上,比如 Oracle、DPDK 等。
页命中、缺页

页面调度
页从磁盘换入(或者页面调入)DRAM和从DRAM换出(或者页面调出)磁盘。
按需换页
-
常驻集合大小(RSS):已分配的主存页(C)大小。 -
虚拟内存大小:所有已分配的区域(B+C+D)。

最后

参考
---转载本站文章请注明作者和出处 二进制之路(binarylife.icu),请勿用于任何商业用途---