现在的位置: 首页 > 综合 > 正文

第五章 存储器管理

2018年05月24日 ⁄ 综合 ⁄ 共 2648字 ⁄ 字号 评论关闭

第五章 存储器管理

5.1 程序的装入和链接

5.2  连续分配存储管理方式

5.3  对换

5.4  分页存储管理方式

5.5 分段存储管理

5.1 程序的装入和链接

   在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事,就是要将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常要经过以下几步:

(1)编译。由编译程序(Compiler)将用户源代码编译成若干个目标模块(Object Module);

(2)链接。由链接程序(Linker)将编译后形成的目标模块以及它们所需要的库函数,链接在一起,形成一个装入模块(Load Module);

(3)装入。由装入程序(Loader)将装入模块装入内存。

 5.1.1  程序的装入

一、绝对装入方式(Absolute Loading Mode)

二、可重定位装入方式(Relocatable Loading Mode)

三、动态运行时装入方式(Dynamic Run-Time Loading)

 5.1.2 程序的链接

一、静态链接

在将几个目标模块链接装配成一个装入模块时,需要解决以下两个问题:

1.对相对地址进行修改

2.变换外部调用符号

二、装入时动态链接(Load-Time Dynamic Linking)

装入时动态链接方式有以下优点:

1.便于软件版本的修改和更新

2.便于实现目标模块共享

三、运行时动态链接(Run-Time Dynamic Linking)

5.2  连续分配存储管理方式

连续分配是指为一个用户程序分配一个连续的内存空间。

 5.2.1 单一连续分配

这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,内存分为以下两个分区:

(1)系统区。

(2)用户区。

 5.2.2 固定分区分配

一、划分分区的方法

将内存空间划分为若干个固定大小的分区,可用下述两种方法:

1.分区大小相等

2.分区大小不等

二、内存分配

分区使用表。表项包含有每个分区的起始地址、大小及状态(是否已分配)。

 5.2.3  动态分区分配

动态分区分配是根据进程的实际需要,动态地为之分配连续的内存空间。在实现可变分区分配存储管理方式时,必须解决下述三个问题:

(1)分区分配中所用的数据结构;

(2)分区的分配算法

(3)分区的分配和回收操作。

—、分区分配中的数据结构

1.空闲分区表

2.空闲分区链

二、分区分配算法

1.首次适应算法FF

2.循环首次适应算法

3.最佳适应算法

三、分区分配操作

在动态分区存储管理方式中,主要的操作是分配和回收内存。

1.分配内存

2.回收内存

当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链中找到相应的插入点,此时可能出现以下四种情况之一:

(1)回收区与插入点的前一个分区F1相邻接。

(2)回收分区与插入点的后一分区F2相邻接。

(3)回收区同时与插入点的前、后两个分区邻接。

(4)回收区既不与F1邻接,也不与F2邻接。

5.2.4 动态重定位分区分配

一、紧凑

不能被利用的小分区称为“零头”或“碎片”。

通过移动,把多个分散的小分区拼接成大分区的方法被称为“拼接”或“紧凑”。

二、动态重定位

三、动态重定位分区分配算法
 

5.3  对换

5.3.1 多道程序环境下的对换

所谓“对换”,是指把内存中暂不能运行的进程,或暂时不用的程序和数据,换出到外存上,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的程序和数据,换入内存。对换是提高内存利用率的有效措施。

如果对换是以整个进程为单位,便称之为“整体对换”或“进程对换”;如果对换是以“页”或“段”为单位进行,则分别称之为“页面对换”或“分段对换”,又统称为“部分对换”

5.3.2 对换空间的管理

在具有对换功能的OS中,通常把外存分为文件区和对换区。

由于对对换区的分配,是采用连续分配方式,因而对对换区空间的分配与回收,与动态分区方式时内存的分配与回收方法雷同。其分配算法可以是首次适应算法、循环首次适应算法和最佳适应算法。具体的分配操作也与图5—9中的操作相同。对换区的回收操作也可分为下述四种情况,即:

(1)回收区与插入点的前一分区F1相邻接;

(2)回收区与插人点的后一分区F2相邻接;

(3)回收区还同时与F1和F2二个分区相邻接;

(4)回收区的前、后没有与之相邻接的空闲分区。

对这几种情况的处理方法也与动态分区分配时的方法相同。

 5.3.3 进程的换出与换入

一、进程的换出

1.选出被换出的进程

2.换出过程

二、进程的换入

 
5.4  分页存储管理方式

5.4.1 分页存储管理的基本方法

一、页面和物理块

在分页存储管理方式中,将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页。相应地,内存空间也分成与页相同大小的若干个存储块,或称为物理块或页框(frame)。由于进程的最后一页经常装不满一块,而形成不可利用的碎片,称为“页内碎片”。

分页存储管理方式的地址结构

 若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得         d = A mod L

其中,INT是整除函数,mod是取余函数。

例如,其系统的页面大小为1KB,设A=2170 H,则由上式可以求得P=2,d=122。

二、页表

三、页面大小的选择

在确定地址结构时,若选择的页面较小,一方面可使内存碎片小,并减少了内存碎片的总空间、有利于提高内存利用串;但另一方面,也会使每个进程要求较多的页面,从而导致页表过长,占用大量内存;此外,还会降低页面换进换出的效率。若选择的页面较大,虽然可减少页表长度,提高换进换出效率,但却又会使页内碎片增大。因此。页面的大小应选得适中,通常页面的大小是2的幂,且常在29一212之间,即在512字节一4KB之间。

 5.4.2地址变换机构

一、   基本的地址变换机构

二、具有快表的地址变换机构

5.4.3  两级和多级页表

一、两级页表

外层页号    外层页内地址        页内地址

 二、多级页表结构

 5.4.4 反置页表

反置页表的地址结构

5.5 分段存储管理

5.5.1 分段存储管理方式的引入

1.方便编程

2.分段共享

3.分段保护

4.动态链接

5.动态增长
 
5.5.2 分段系统的基本原理

一、分段

二、  段表

三、  地址变换机构

四、  分页和分段的主要区别

1.页是信息的物理单位,段是信息的逻辑单位

2.页的大小固定且由系统确定,段的长度不固定,决定于用户所编写的程序

3.分页的作业地址空间是一维的,分段的作业地址空间是二维的

5.5.3 共享与保护

5.5.4 段页式存储管理方式

一、基本原理

二、  地址变换过程
  

抱歉!评论已关闭.