一般单个虚拟地址空间就比物理内存要大,另每个进程都有自身的虚拟地址空间
内核和 CPU 必须考虑如何将实际可用的物理内存映射到虚拟地址空间的区域。一般用页表
来为物理地址分配虚拟地址
虚拟地址关系到进程的用户空间和内核空间,而物理地址用来寻址实际可用的内存
物理内存页经常被称为页帧
,而页一般用来指虚拟地址空间的页
内存分配管理方式
-
连续(块式)
为用户程序分配一个
连续
的内存空间 -
非连续(页式 和 段式)
允个程序使用的内存分布在离散或者说
不相邻
的内存中
-
块式管理 :
远古时代将内存分为几个固定大小的块,
每个块中只包含一个进程
如果程序运行只需要很小的空间的话,分配的这块内存很大一部分几乎被浪费了。这些在每个块中未被利用的空间,称为碎片
-
页式管理 :
相比块式管理的划分力度更大,提高内存利用率,减少碎片
通过
页表
对应逻辑地址和物理地址 -
段式管理 :
页式管理虽然提高了内存利用率,但是页式管理其中的页实际并无任何实际意义
段式管理把主存分为一段段的,每一段的空间又要比一页的空间小很多
最重要的是段是有实际意义的,如,主程序段 MAIN、子程序段 X、数据段 DATA 及栈段 STACK 等
段页式管理机制
结合段式管理和页式管理的优点。把主存先分成若干段,每个段又分成若干页,也就是说 段与段之间以及段的内部的都是离散的