zhouqijie

内存管理概述

内存储器(Memory)即俗称的内存或主存,是处理器能直接寻址的存储空间。
用来存放处理器执行时所需的程序和数据,以及与硬盘等外存储器交换的数据。程序和数据只有在内存中才能被处理器直接访问。

  1. 系统区 –用来存放操作系统以及一些标准子程序、例行程序等,常驻内存。
  2. 用户区 –分配给用户使用。用来存放用户的程序和数据。

内存管理的主要工作就是对内存储器中的用户区进行管理。



1、计算机存储系统结构

按照计算机的体系结构,计算机存储系统可以划分3个层次,分别是寄存器和高速缓存、内存储器、外存储器。

A.寄存器和高速缓存:

随着硬件技术发展现在已经将高速缓存封装在处理器芯片上,所以常将高速缓存与处理器寄存器归到一个层次。

寄存器(register)主要包括通用寄存器、指令寄存器、地址寄存器、数据缓冲寄存器等一系列寄存器。用于存储处理器中与控制流和数据流相关的信息。它容量小速度快,一般以word为单位。

高速缓存(cache)是为了解决处理器与内存之间速度不匹配的问题而引入的。其存储容量比处理器寄存器大,访问速度比寄存器慢,但远比内存快。

当处理器要读取数据时,首先访问高速缓存,如果所要访问的数据已在高速缓存,则直接从高速缓存读取;如果要访问的数据不在高速缓存,那就需要从内存读取信息。(CRE:称为缓冲未命中)

B.内存储器:

内存储器即内存属于主机范畴。用于存储处理器执行时所需要的代码和数据,内存的空间远大于高速缓存,但是断电即消失,无法永久存储。
一个计算机的内存容量是衡量计算机性能的重要指标,计算机的最大内存容量收到计算机系统结构的限制。

C.外存储器:

外存储器是计算机中最大规模的存储器,用来存储各类数据和程序。外存储器容量巨大并能够永久存储信息,断电后不丢失。
外存储器的访问速度慢,常常作为内存的补充,用来实现虚拟存储系统。



2、地址的表示和地址转换

逻辑地址空间:

用户的源程序通常用高级语言编写,源程序通过编译汇编后得到目标程序。目标程序使用的地址称为逻辑地址,也称为相对地址,一个用户作业的目标程序的逻辑地址集合称为逻辑地址空间
作业的逻辑地址可以是一维的,也可以是二维的(分为若干段,使用段内地址)。

物理地址空间:

当程序运行时,他被装入内存中某段空间内,此时程序和数据的实际地址不可能同原来的逻辑地址一致程序在物理内存中的实际存储位置称为物理地址,或称绝对地址。物理地址的总体就构成了用户程序实际运行的物理地址空间

不同程序的物理地址空间绝对不能冲突。

地址转换:

只有把程序和数据的逻辑地址转换为物理地址,程序才能正确运行,该过程称为地址转换或者地址重定位。地址转换有静态重定位动态重定位两种。

在用户作用装入内存时由装入程序实现从逻辑地址到物理地址的转换,地址转换在作业执行的前一次完成。

例如待装入内存的三个目标模块abc,其逻辑地址从0开始到(a+b+c-1)结束。在装入内存时,如果只能从内存地址2000开始容纳,则在静态重定位装入方式下,该程序装入内存的物理地址从2000开始到(2000+a+b+c-1)结束。

静态重定位方式的优点是实现简单,从逻辑地址到物理地址的变换不需要专门硬件便能完成;缺点是必须为程序分配一段连续的内存空间,并且程序在执行过程不能在内存中移动。

程序执行过程中,CPU在访问程序和数据之前才实现地址转换,称为动态重定位。动态重定位必须借助硬件地址转换机构来实现。硬件系统中设置了一个定位寄存器,当操作系统为 某程序分配了一块内存区域后,装入程序把程序装入所分配的区域中,然后把该内存区域起始地址置入定位寄存器。在程序执行过程中需要进行地址转换时,只需将逻辑地址与定位器寄存器中的值相加就可以得到物理地址。

采用动态重定位可以实现程序在内存中的移动。在程序执行过程中,若把程序移到一块新的内存区域后,只要改变定位寄存器中的内容,该程序仍可以正确执行。

动态重定位的优点是内存的使用灵活,容易实现内存的动态扩充和共享;缺点是实现过程需要硬件支持,内存管理也复杂。



3、内存管理的功能



4、覆盖与交换技术

当用户程序所需的内存超过实际物理内存大小时,除了后面要介绍的虚拟存储技术外,操作系统可以采取覆盖(Overlay)交换(Swapping)技术来扩充内存。

覆盖技术:

一个程序通常由若干个功能上独立的程序段组成,在运行时并不是所有程序段都同时进入内存执行。这样,就可以按照程序自身的逻辑结构,让不同时执行的程序段先后共享同一块内存区域,这就是覆盖技术。

覆盖技术首先将大的用户程序划分到一个个相对独立的程序单位,将程序执行时不需要同时装入内存的程序单位组成一个个覆盖段,每个覆盖段长度不超过已有内存空间大小。各个覆盖段先后顺序进入内存空间。

解决了较小内存运行较大程序的问题。
目前这一技术仅应用于小型系统中的系统程序的内存管理。例如MS-DOS的启动过程。

交换技术:

为了释放部分内存空间,由操作系统根据需要,将某些暂时不运行的进程或程序段从内存移到外存的交换区;当内存空间富余的时候再给被移出的进程或者程序段重新分配内存。

  1. 以整个进程为单位的交换。每次换出或换入的是一个进程,此策略多用于早期的分时系统中,以实现在小型机上的分时运行。(早期分时系统计算机内存空间非常有限)(Cre:和进程挂起的区别?)
  2. 以进程的一部分为单位的交换。借助页式或者段式内存管理,将进程中的内存空间划分为页面或段,然后以段或者页面为基本单位进行交换。常见的有页面置换和段置换。这也是虚拟存储技术的基础。

(END)