操作系统考研资料:第五章 存储器管理学习辅导资料

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

1

第五章 存储器管理

5.1 知识点汇总

1、存储器的层次

操作系统的内存管理功能,使之操作系统中负责管理内存使用的那部分功能子集,又称主存管理。

在现代计算机系统中,存储器是信息外理的来源与归宿,占据重要位置。但是,在现有

技术条件下,任何一种存储装置,都无法同时从速度与容量两方面,满足用户的需求。实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。

图5-1 三级存储器结构

2、内存管理的目的

✧ 主存的分配和管理:当用户需要内存时,系统为之分配相应的存储空间;不需要时,及

时回收,以供其它用户使用。

✧ 提高主存储器的利用率:不仅能使多道程序动态地共享主存,提高主存利用率,

最好还

能共享主存中某个区域的信息。

✧“扩充”主存容量:为用户提供比主存物理空间大得多的地址空间,以至使用户感觉他

的作业是在这样一个大的存储器中运行。(虚拟内存技术)

✧存储保护:确保多道程序都在各自分配到存储区域内操作,互不干扰,防止一道程序破

坏其它作业或系统文件的信息。

程序的各个阶段:编辑―――编译―――链接―――装入―――运行

1). 编辑阶段:创建源文件

2). 编译阶段:生成目标文件

3). 连接阶段:生成可执行文件

4). 装入阶段:重定位,装入内存

5). 运行阶段:得到结果

图5-2 程序的各个阶段

3、存储器管理的功能

2

存储器管理的功能:内存分配、地址映射、内存保护、内存扩充。

4、存储器有关概念

地址空间:程序用来访问信息所用地址单元的集合。逻辑(相对)地址的集合。由编译程序生成

存储空间:主存中物理单元的集合物理(绝对)地址的集合由装配程序等生成

(1)逻辑地址(相对地址,虚地址)用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0,其余指令中的地址都相对于首地址而编址。不能用逻辑地址在内存中读取信息

(2)物理地址(绝对地址,实地址):内存中各物理单元的地址是从统一的基地址顺序编址。

(3)重定位:把作业地址空间中使用的逻辑地址变换成内存空间中的物理地址的过程。又称地址映射。

1)绝对装入:编译后,装入前已产生了绝对地址(内存地址),装入时不再作地址重定位。

绝对地址的产生:(1)由编译器完成,编程时使用符号地址(2)由程序员编程完成。

程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。但在由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。

3

2)静态重定位:是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的内存地址。重定位在程序装入时一次完成。

图5-3 程序静态运行

3)动态运行时装入:(动态重定位)在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。

4

5

图5-4 动态重定位示意图

(4)程序的链接

1)静态链接:对相对地址的修改,变换外部调用符号。

图5-5 程序的静态链接

2)装入时动态链接:便于修改和更新,便于实现对目标模块的共享。(DLL 动态链接库)

3)运行时动态链接:

这种链接方式是将对某些模块的链接推迟到执行时才执行,即,

在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。

4) 碎片:内存中容量太小、无法被利用的小分区。

5、内存管理技术-分区管理

三种基本的存储管理技术:分区法、可重定位分区法和对换技术

(1)分区法:把内存划分成若干分区,每个分区里容纳一个作业。

1)固定分区模式(定长分区模式):是将内存用户区域划分为几个固定大小的区域,在系统运行过程中,每个区域任意时刻只存放一个程序,且连续完整存放。

通过设置内存分配表,内存分配简单,但内存利用率不高

分区的分配策略:

最先适配,任何时刻只要一个分区变成空闲的,队列中的第一个可装入的作业就被装入执行,经常把大分区分给小作业。

6

最优适配,一旦某分区变成空闲,便寻找可装入的最大作业,有待大作业而其实小作业,与优待小作业的处理机调度算法相互抵触。

固定分区在内存利用率上存在的问题:

✧分区经常没有被填满。因为分区的大小是固定的,所以分给进程的多余存储空间将被浪

费。被浪费的空间成为内部存储碎片。

✧存在所有空闲分区总合够,但每个空闲分区太小而无法装入的现象。

✧多道并行的程序数量受到分区数量的限制。

2)动态分区

将内存用户区划分为若干个分区,每个分区内任意时刻只有一个程序,且为连续完整存放。但划分的实际、大小和位置时动态的,即在系统运行从开机到关机这段时间内,各分区的大小、位置等划分情况,是根据用户程序的来去而变化的。

动态分区的策略:

①必须维持一张内存空闲区表和已分配区表来动态地跟踪记录内存空闲块和已用

块的分布情况。

7

相关文档
最新文档