《计算机内存管理》
计算机内存管理策略
【摘要】本文从计算机的硬件结构和运行机理出发,导出计算机内存管理的重要性,并提出
内存管理所要包含的4 个方面内容。然后以操作系统发展历史为主线,对单一连续分区存储
管理、固定分区存储管理、可变分区存储管理、分页式存储管理、分段式存储管理5 中内存
管理方案进行分析,详细地介绍了各种管理策略具体实现以及各自的优劣。
在操作系统出现之前,程序曾经是存储在卡片上,计算机每读取一张卡片就
执行一条指令,程序的执行过程是直接从卡片到执行。这种从外部存储媒介上直
接执行指令的做法效率极其低下,而且灵活性较差。为了解决这一问题,人们想
到将需要运行的程序预先加载到内部存储器,再自动从内部存取器读取指令并执
行,从而提高计算机的效率与灵活性。这一想法导致计算机硬件系统和软件系统
都发生革命性的变化。
目前计算机硬件系统一般由处理机、存储系统和输入输出(I/O)系统构成。
其中存储系统用于存取包括程序代码和数据在内的各种信息,起到缓解负责执行
程序的处理器与实现程序输入/输出系统之间速度严重不匹配的矛盾。出于功用、
性能、价格等方面的考虑,计算机存储系统并不是一个单独的存储器件,而是由
不同的存储介质构成的一个复杂的多层次的存储体系,包括高速缓存、内存和外
存。高速缓存的由硬件寄存器组构成,其特点是速度最快、价格高、容量小,一
般用于存放高频指令与数据;外存容量最大,价格也最低,但是读取速度相对很
慢,主要用来存放程序的所有代码与数据,是程序与数据的持久完整集合;内存
速度比高速缓存慢,但是比外存又快很多量级,价格适中,容量高于缓存而低于
外存,用来存放操作系统内核、用户程序指令与程序运行所需数据,程序运行时,
CPU 直接从内存读取指令和数据。尽管内存速度与处理器速度有一定差距,但是
这种程序执行的方式仍然极大地提高了计算机的运行效率。
冯·诺依曼体系的计算机都要求程序首先装入内存才能运行,能否合理地使
用内存很大程度上影响到整个计算机的正常运行以及系统性能。因此操作系统要
能够很好地管理计算机系统中的重要资源——内存,使得它按规则并被高效地使
- 1 -
《计算机内存管理》
用,这是操作系统的起码要求。1
计算机内存管理主要包括四个方面的内容:内存分配与回收、内存地址映
射、内存共享与保护和内存扩充。
内存分配与回收:内存分配主要是对将要驻留在内存中的每道程序和数据分
配一定的内存空间,每道程序都有自己专属的地址空间,同时要求程序在运行时
2
申请更多的地址空间,以满足数据段和程序段的可能动态增长的要求。 当程序
运行结束之后,就需要将之前分配给该程序的内存空间回收,以分配给其他程序
使用。
内存地址映射:从硬件层次来讲,内存时由一个一个的存储单元构成,每个
单元能被访问与否受到地址解码芯片的控制,每个存储单元对应一个唯一的地
址,该地址称为“绝对地址”或“物理地址”。要访问某个地址单元中的数据时,
需要CPU 向地址总线发出相应的地址信号,选中该存储单元。但是对于多道编程
的系统,计算机内存中同时转载了多个程序,程序员在编程之前根本无法预测程
序将会被装载到内存中的什么位置,就算是单道编程的系统也会因为硬件配置和
系统不同而装载位置不同。那么程序员编程时只能在一个相对的地址上进行编
程,称为“逻辑地址”或“虚地址”,并假设程序的首地址为 0,整个内存空间
中只有自己一个程序。那么在实际运行时,就要求操作系统能够根据程序的实际
转载位置和程序的虚拟地址计算出各条指令和数据的物理地址,这个翻译的过程
就是地址映射。
内存共享与保护:在多道编程的系统中,程序之间往往会存在着协作,或是
使用相同的程序代码,为了使程序之间能够进行交流,也为了节省内存空间,提
高内存利用率,多道程序有时需要能够访问同一个内存分区中的数据,使得这些
程序的物理空间出现了交叉的部分,这就是内存共享。同时,每道程序有自己私
有的空间,为保证程序运行的正确性,该部分空间不允许其他程序访问和修改,
这就需要内存保护,保证“私有财产神圣不可侵犯”。
内存扩充:这里所说的内存扩充