论述题 7.  请简要介绍Windows内存管理的机制。
【正确答案】内存管理是指软件运行时对计算机内存资源的分配和使用的技术。其最主要目的是如何高效、快速地分配,并且在适当的时候释放和回收内存资源。
   在讲解Windows内存管理前,首先介绍几个基本的概念,它们是物理内存、虚拟内存。
   物理内存:即插在主板上的内存条。它是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除外),但是需要注意的是,如果运行很多程序或者程序本身很大,就会导致占用大量的物理内存,甚至导致物理内存被消耗殆尽。
   虚拟内存:考虑到代码必须在物理内存中才能被运行,由于现在的操作系统中运行着非常多的应用程序,而内存中不一定能够完全放下,所以,引出了虚拟内存的概念。虚拟内存指在硬盘上划分一块页面文件,充当内存使用,而这块内存却不是实实在在存在的。当程序在运行时,有一部分资源还没有用上或者同时打开几个程序却只操作其中一个程序时,系统没必要将程序所有的资源都塞在物理内存中,于是,系统将这些暂时不用的资源放在虚拟内存上,等到需要时再调出来使用;把那些不常用的程序片断就放入虚拟内存,当需要用到它的时候再载入物理内存中。
   除了以上提及的这些内容是内存管理所需要做的事情以外,内存管理还有另外一件事需要做:计算程序片段在主存中的物理位置,以便CPU调度。对于Windows系统而言,其内存管理主要包括页式存储管理、段式存储管理和段页式存储管理等。以下将分别对其进行讲述。
   页式存储管理:用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。进程空间也被静态地划分为若干个等长的区域,每个区域称为一个逻辑页面,其长度与页框的长度相等。当进程运行时,需要将它的各个逻辑页面保存到存储空间的物理页框中,即需要确定逻辑页面与页框的对应关系,进程的逻辑页面是连续的,但是页框页面却不一定是连续的。允许一个进程占用内存空间中多个连续的区域,而这些区域的长度相等,因而采用静态等长存储分配的方法,不会产生碎片。
   段式存储管理:将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。
   段页式存储管理:分页系统能有效地提高内存的利用率,而分段系统能反映程序的逻辑结构,便于段的共享与保护,将分页与分段两种存储方式结合起来,就形成了段页式存储管理方式。在段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑分段,每段都有自己的段号,然后再将每段分成若干个大小相等的页。对于主存空间也分成大小相等的页,主存的分配以页为单位。段页式系统中,作业的地址结构包含三部分的内容:
   段号页号页内位移量
   程序员按照分段系统的地址结构将地址分为段号与段内位移量,地址变换机构将段内位移量分解为页号和页内位移量。
   为实现段页式存储管理,系统应为每个进程设置一个段表,包括每段的段号、该段的页表始址和页表长度。每个段有自己的页表,记录段中每一页的页号和存放在主存中的物理块号。
【答案解析】