兰海泽 2019-12-12
将物理内存抽象为地址空间,每个进程都有各自的地址空间,地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。目的是让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。
1、分页系统地址映射
内存管理单元负责地址空间和物理内存的转换,其中页表存储着页(程序地址空间)和页框(物理内存空间)的映射表。一个虚拟地址分为页面号(16位地址是前4位)和存储偏移量。页面号的十进制数对应页表的索引,一个页表项最后一位表示是否存在于内存,前几位即为页框的前几位。
2、页面置换算法
在程序运行过程中,如果要访问的页面不在内存中,就发生缺页中断从而将该页调入内存中。此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。
页面置换算法的主要目的就是使页面置换频率最低。
1、分段
将地址空间划分为多个拥有独立地址空间的段,每个段的长度可以不同,并且可以动态增长。
2、段页式
程序的地址空间划分成多个拥有独立地址空间的段,每个段上的地址空间划分成大小相同的页。这样既拥有分段系统的共享和保护,又拥有分页系统的虚拟内存功能。
3、分页 VS 分段
分页对程序员透明,分段需要程序员显示划分每个段
分页是一维地址空间,分段是二维的
页的大小不可变,段的大小可以动态改变