Windows中的内存分为两类:
- 物理内存即实际内存,实存储器。
- 虚拟内存: 用硬盘空间做内存来弥补计算机RAM空间的缺乏。
虚拟内存可行性的理论基础:
1、进程中的所有内存访问地址都是逻辑地址,这些逻辑地址在运行时动态的被转换为物理地址,这意味着一个进程可以被换入或唤出内存,使得进程可以执行过程中的不同时刻占据内存中的不同区域。
2、一个进程可以划分成许多块,在执行过程中,这些块不需要连续的未与内存中。
使用虚拟内存的好处:
1、在内存中保留多个进程。由于对任何特定的进程都仅仅装入它的某些块,因此就有足够的空间来放置更多的进程。
2、进程可以比内存的全部空间还大。程序占用的内存空间的大小是程序设计中最大的限制之一。通过基于分页或分段的虚拟内存,这些分块可以按某种覆盖策略分别加载。
常用内存管理技术:
1、固定分区
说明:在系统生成阶段,内存被划分成许多静态分区。进程可以被装入到大于或等于自身大小的分区。
优势:实现简单,只需要极少的操作系统开销。
缺点:由于有内部碎片,对内存的使用不充分;活动进程的最大数目是固定的。
2、动态分区
说明:分区是动态创建的,因而使得每个进程可以被装入与自身大小正好相等的分区中。
优势:没有内部碎片;可以更充分的使用内存。
缺点:由于需要压缩外部碎片,处理器利用率低。
3、虚拟内存分页
说明:内存被划分为许多大小相等的页框;每个进程被划分成许多大小与页框相等的页;不需要装入一个进程的所有页,每次只需将进程运行需要的页装入到内存中不一定连续的页框中。非驻留页在以后需要时自动调入内存。
优势:没有外部碎片;支持更高道数的多道程序设计;巨大的虚拟地址空间。
缺点:复杂的内存管理开销。
4、虚拟内存分段
说明:每个进程被划分为许多段;不需要装入一个进程的所有页,每次只需将进程运行需要的段装入到内存中不一定连续的某些动态分区中;非驻留段在以后需要时自动调入内存。
优势:没有内部碎片;支持更高道数的多道程序设计;巨大的虚拟地址空间;支持保护与共享
缺点:复杂的内存管理开销
5、段页式
分段和分页都有它们的长处。分页对程序员是透明的,它消除了外部碎片,因而可以更有效地使用内存,并且移入或移出内存的块是固定的,大小相等的。分段对程序员是可见的,它具有处理不断增长的数据结构的能力以及支持共享和保护的能力。
在段页式的系统中,用户的地址空间被程序员划分成许多段。每个段一次划分成许多固定大小的页,页的长度等于内存中页框的大小。从程序员的角度看,逻辑地址仍然由段号和段偏移量组成,从系统的角度看,段偏移量可视为指定段中的一个页号和页偏移。