Linux虚拟内存

版权声明:转载请声明 https://blog.csdn.net/qq_40732350/article/details/83786043

逻辑地址:主存空间 + 辅存空间

物理地址:主存空间

每个程序的虚拟地址空间可以远大于物理地址,也可以远小于物理地址。

远大于:可以提高存储容量

远小于:通常用在多用户或多任务系统中,物理空间较大,,而单个任务并不需要很大的地址空间,较小的虚拟空间则可以缩短指令中地址字段的长度。

1 页式虚拟内存映射

在多数系统中,每个进程对应一个页表。

每个进程所需的页数并不固定,所以页表的长度是可变的,因此通常实现的方法是把页表的基地址保存在寄存器中,而页表本身放在主存中。

把页表相对活跃的的部分表项放到缓存中,称为快表(TLB)。

把完整表放到主存中,称为慢表。

2 段式虚拟内存映射

分页对程序员而言是透明的,而分段对程序员是不透明的。

优点:

段的逻辑独立性使其易于编译,管理,修改和保护。

段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间

3 虚拟内存的调用方法

虚拟内存的基本思想是,每个进程有用独立的逻辑地址空间,内存被分为大小相等的多个块,称为页(Page).每个页都是一段连续的地址。

对于进程来看,逻辑上貌似有很多内存空间,其中一部分对应物理内存上的一块(称为页框,通常页和页框大小相等),还有一些没加载在内存中的对应在硬盘上,如图所示。

进程的空间分布:

可以参考:

https://blog.csdn.net/u010150046/article/details/72630262

猜你喜欢

转载自blog.csdn.net/qq_40732350/article/details/83786043