虚拟内存时一种计算机系统内存管理的技术,目的是为了防止不同的进程同一时刻对物理内存的抢夺。这种技术让每个进程认为它拥有连续可用的内存(一个连续完整的地址空间),互相不会干扰到对方。实际上,它通常被分隔成多个物理内存碎片,还有部分暂存在外部磁盘存储器上,需要时进行数据交换。这种技术使得大型程序的编写更容易,对真正的物理内存使用也更有效率。
对虚拟内存的定义是基于对地址空间的重定义,把地址空间定义为连续的虚拟内存地址,借以欺骗程序,让它认为自己正在使用一大块连续的地址。
1、分页式存储管理:现代操作系统中,虚拟内存和物理内存都是按照页来进行管理的,一个内存页式一段固定大小的连续内存地址的总称,因此内存地址可以通过页号和页内偏移来进行表示。
在这种系统中,允许进程去把每一页离散的存储在内存的任一物理块中,为了在内存中找到每个页面的物理块,系统给进程建立一个一张页表,用来记录进程逻辑页面和内存物理页面之间的对应关系。
页表就是为了实现从页号到物理块号的映射。地址空间有多少页,该页表里就登记多少行,且按逻辑页的顺序排列。
2、分段式存储管理
段时按照程序的自然分界划分的长度可以动态改变的区域。通常程序员把子程序、操作数、常数等不同类型的数据划分到不同的段中,每个程序可以有多个相同类型的段,将用户程序地址空间分成若干个大小不同的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
在段式虚拟存储系统中,虚拟地址由段号和段内地址组成,每个表项至少包括三个字段:有效位(指明该段是否已经调入主存)、段起址(该段在实存中的首地址)和段长(记录该段的实际长度)
3、段页式存储管理
段页式存储组织是分段式和分页式结合的存储组织方法,这样可充分利用分段管理和分页管理的优点。
为了让物理内存扩充成更大的逻辑内存,让程序获得更多的可用内存。
为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。
原文:https://www.cnblogs.com/EvansPudding/p/12701895.html