计算机内存管理

  • 格式:pdf
  • 大小:413.53 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机内存管理策略

【摘要】本文从计算机的硬件结构和运行机理出发,导出计算机内存管理的重要性,并提出内存管理所要包含的4个方面内容。然后以操作系统发展历史为主线,对单一连续分区存储管理、固定分区存储管理、可变分区存储管理、分页式存储管理、分段式存储管理5中内存管理方案进行分析,详细地介绍了各种管理策略具体实现以及各自的优劣。

在操作系统出现之前,程序曾经是存储在卡片上,计算机每读取一张卡片就执行一条指令,程序的执行过程是直接从卡片到执行。这种从外部存储媒介上直接执行指令的做法效率极其低下,而且灵活性较差。为了解决这一问题,人们想到将需要运行的程序预先加载到内部存储器,再自动从内部存取器读取指令并执行,从而提高计算机的效率与灵活性。这一想法导致计算机硬件系统和软件系统都发生革命性的变化。

目前计算机硬件系统一般由处理机、存储系统和输入输出(I/O)系统构成。其中存储系统用于存取包括程序代码和数据在内的各种信息,起到缓解负责执行程序的处理器与实现程序输入/输出系统之间速度严重不匹配的矛盾。出于功用、性能、价格等方面的考虑,计算机存储系统并不是一个单独的存储器件,而是由不同的存储介质构成的一个复杂的多层次的存储体系,包括高速缓存、内存和外存。高速缓存的由硬件寄存器组构成,其特点是速度最快、价格高、容量小,一般用于存放高频指令与数据;外存容量最大,价格也最低,但是读取速度相对很慢,主要用来存放程序的所有代码与数据,是程序与数据的持久完整集合;内存速度比高速缓存慢,但是比外存又快很多量级,价格适中,容量高于缓存而低于外存,用来存放操作系统内核、用户程序指令与程序运行所需数据,程序运行时,CPU直接从内存读取指令和数据。尽管内存速度与处理器速度有一定差距,但是这种程序执行的方式仍然极大地提高了计算机的运行效率。

冯·诺依曼体系的计算机都要求程序首先装入内存才能运行,能否合理地使用内存很大程度上影响到整个计算机的正常运行以及系统性能。因此操作系统要能够很好地管理计算机系统中的重要资源——内存,使得它按规则并被高效地使

用,这是操作系统的起码要求。1

计算机内存管理主要包括四个方面的内容:内存分配与回收、内存地址映射、内存共享与保护和内存扩充。

内存分配与回收:内存分配主要是对将要驻留在内存中的每道程序和数据分配一定的内存空间,每道程序都有自己专属的地址空间,同时要求程序在运行时申请更多的地址空间,以满足数据段和程序段的可能动态增长的要求。2当程序运行结束之后,就需要将之前分配给该程序的内存空间回收,以分配给其他程序使用。

内存地址映射:从硬件层次来讲,内存时由一个一个的存储单元构成,每个单元能被访问与否受到地址解码芯片的控制,每个存储单元对应一个唯一的地址,该地址称为“绝对地址”或“物理地址”。要访问某个地址单元中的数据时,需要CPU向地址总线发出相应的地址信号,选中该存储单元。但是对于多道编程的系统,计算机内存中同时转载了多个程序,程序员在编程之前根本无法预测程序将会被装载到内存中的什么位置,就算是单道编程的系统也会因为硬件配置和系统不同而装载位置不同。那么程序员编程时只能在一个相对的地址上进行编程,称为“逻辑地址”或“虚地址”,并假设程序的首地址为0,整个内存空间中只有自己一个程序。那么在实际运行时,就要求操作系统能够根据程序的实际转载位置和程序的虚拟地址计算出各条指令和数据的物理地址,这个翻译的过程就是地址映射。

内存共享与保护:在多道编程的系统中,程序之间往往会存在着协作,或是使用相同的程序代码,为了使程序之间能够进行交流,也为了节省内存空间,提高内存利用率,多道程序有时需要能够访问同一个内存分区中的数据,使得这些程序的物理空间出现了交叉的部分,这就是内存共享。同时,每道程序有自己私有的空间,为保证程序运行的正确性,该部分空间不允许其他程序访问和修改,这就需要内存保护,保证“私有财产神圣不可侵犯”。

内存扩充:这里所说的内存扩充并不是指硬件上的扩充,而是指用存储管理软件来实现的逻辑扩充,用到的技术就是虚拟内存。作业运行时系统并不将其全

1 引自《计算机操作系统》第102页,刘腾红、络正华编著,清华大学出版社出版。

2引自《计算机操作系统》第80页,冯裕忠、方智、周舫编著,清华大学出版社出版。

部程序装入内存,而是只装入当前需要运行的那一部分,其他的仍在外存。若进程需要时再把所需部分调入,以保证大作业的运行。3虚拟内存是操作系统发展史上的一个革命性突破,这项技术的使用扩充了内存的容量,呈现在程序员和用户面前的是比实际容量大得多内存,使得计算机能够运行更多更大的程序,甚至是一个比内存容量还要大的程序。

不同的操作系统环境采用不同的内存管理方法,常用的内存管理方式有这几种:单一连续分区存储管理、固定分区存储管理、可变分区存储管理、分页式存储管理、分段式存储管理。

单一连续分区管理

单一连续内存管理方式是最早出现和最简单的一种内存管理方式,仅适用于单用户、单任务操作系统中,而不能用于多用户系统或单用户多任务系统。4例如早期的MS-DOS系统就采用这种管理模式。

在单用户单任务的系统下,内存中只有两个程序:操作系统和一个用户程序。整个内存被分成系统区域和用户区域两个部分,系统区域提供给操作系统适用,用户区域提供给程序适用。

根据操作系统在内存中的位置,单一连续分区管理有三种组织方案,下图中图(a)所示为操作系统位于内存低地址部分的随机存储器(RAM)中;图(b)所示为操作系统位于内存高地址部分的只读存储器(ROM)中;图(c)所示为设备驱动程序位于内存最高段中的ROM中而操作系统其余部分位于RAM的低地址部分。

0xffff 0xffff 0xffff 5

3引自《操作系统》第125页,许曰滨、刘英华编著,北京邮电大学出版社出版。

4引自《操作系统原理与实践》第130页,邹鹏、阳国贵编著,高等教育出版社出版。

5引自《操作系统实用教程》第172页,范立南、刘飒编著,北京大学出版社出版。