1. 首页
  2. 文档大全

第4章存储管理1

上传者:9****8 2022-07-19 18:08:19上传 PPT文件 1.15MB
第4章存储管理1_第1页 第4章存储管理1_第2页 第4章存储管理1_第3页

《第4章存储管理1》由会员分享,可在线阅读,更多相关《第4章存储管理1(133页珍藏版)》请在文档大全上搜索。

1、第四章第四章 存储器管理存储器管理 4.1 4.1 程序的装入和链接程序的装入和链接 4.2 4.2 连续分配方式连续分配方式 4.3 4.3 基本分页存储管理方式基本分页存储管理方式 4.4 4.4 基本分段存储管理方式基本分段存储管理方式 4.5 4.5 虚拟存储器的基本概念虚拟存储器的基本概念 4.6 4.6 请求分页存储管理方式请求分页存储管理方式 4.7 4.7 页面置换算法页面置换算法 4.8 4.8 请求分段存储管理方式请求分段存储管理方式 地址映射地址映射Load A 200 3456 。 。1200物理地址空间物理地址空间Load A data1data1 3456源程序源程

2、序Load A 200 34560100200编译编译连接连接逻辑地址空间逻辑地址空间BA=100003456.LOAD A 200.0100200300.LOAD A 2003456110012001300200VR+1000BR4.1 程序的装入和链接程序的装入和链接 图 4-1 对用户程序的处理步骤 库链接程序装入模块装入程序编译程序产生的目标模块第一步第二步第三步内存4.1.1 程序的装入程序的装入1. 绝对装入方式绝对装入方式(Absolute Loading Mode) 程序中所使用的绝对地址,既可在编译或汇编时给出, 也可由程序员直接赋予。 但在由程序员直接给出绝对地址时, 不仅

3、要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。 2. 可重定位装入方式可重定位装入方式(Relocation Loading Mode) 图 4-2 作业装入内存时的情况 LOAD 1,2500365LOAD 1,2500365100001100012500150005000250010000作业地址空间内存空间3. 动态运行时装入方式动态运行时装入方式(Denamle Run-time Loading) 动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入

4、模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此, 装入内存后的所有地址都仍是相对地址。 4.1.2 程序的链接程序的链接 1. 静态链接方式静态链接方式(Static Linking) 图 4-3 程序链接示意图 模块 ACALL B;Return;0L1模块 BCALL C;Return;0M1模块 CReturn;0N10模块 AJSR“L”Return;L1模块 BJSR“LM”Return;LLM1LMLMN1模块 CReturn;(a) 目标模块(b) 装入模块 在将这几个目标模块装配成一个装入模块时,须解决以下两个问题: (1) 对相对地址进行

5、修改。 (2) 变换外部调用符号。 2. 装入时动态链接装入时动态链接(Loadtime Dynamic Linking) 装入时动态链接方式有以下优点: 便于修改和更新。 (2) 便于实现对目标模块的共享。 3. 运行时动态链接运行时动态链接(Run-time Dynamic Linking) 近几年流行起来的运行时动态链接方式,是对上述在装入时链接方式的一种改进。这种链接方式是将对某些模块的链接推迟到执行时才执行,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存, 把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接

6、到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。 4.2 连续分配方式连续分配方式4.2.1 单一连续分配单一连续分配 这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,可把内存分为系统区和用户区两部分,系统区仅提供给OS使用,通常是放在内存的低址部分;用户区是指除系统区以外的全部内存空间, 提供给用户使用。 4.2.2 固定分区分配固定分区分配 1. 划分分区的方法划分分区的方法 分区大小相等, 即使所有的内存分区大小相等。 (2) 分区大小不等。 2. 内存分配内存分配 图 4-4 固定分区使用表 4.2.3 动态分区分配动态

7、分区分配 1. 分区分配中的数据结构分区分配中的数据结构 空闲分区表。 (2) 空闲分区链。 图 4-5 空闲链结构 前向指针N20N个字节可用后向指针N202. 分区分配算法分区分配算法 首次适应算法FF。 (2) 循环首次适应算法,该算法是由首次适应算法演变而成的。(3) 最佳适应算法。(4) 最坏适应算法 。3. 分区分配操作分区分配操作 1) 分配内存 从头开始查表检索完否?m.sizeu.size?m.sizeu.sizesize?从该分区中划出u.size大小的分区将该分区分配给请求者修改有关数据结构返回返回继续检索下一个表项将该分区从链中移出YNNYYN图 4-6 内存分配流程2

8、) 回收内存 图 4-7 内存回收时的情况 4.2.4 可重定位分区分配可重定位分区分配 1. 动态重定位的引入动态重定位的引入 图 4-8 紧凑的示意 操作系统用户程序1用户程序310 KB30 KB用户程序614 KB用户程序926 KB操作系统用户程序1用户程序3用户程序6用户程序980 KB(a) 紧凑前(b) 紧凑后2. 动态重定位的实现动态重定位的实现 图 4-9 动态重定位示意图 LOAD1,25003650100250050002500相对地址10000重定位寄存器LOAD1,250036510000101001250015000作业J处理机一侧 存储器一侧主存3. 动态重定位

9、分区分配算法动态重定位分区分配算法 图 4-10 动态分区分配算法流程图 请求分配u.size分区检索空闲分区链(表)找到大于u.size的可用区否?按动态分区方式进行分配修改有关的数据结构返回分区号及首批空闲分区总和u.size?进行紧凑形成连续空闲区修改有关的数据结构否是无法分配返回否4.2.5 对换对换(Swapping) 1. 对换的引入对换的引入 所谓“对换”, 是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施。 2. 对换空间的管理对换空间的管理

10、为了能对对换区中的空闲盘块进行管理,在系统中应配置相应的数据结构,以记录外存的使用情况。其形式与内存在动态分区分配方式中所用数据结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表中的每个表目中应包含两项, 即对换区的首址及其大小,它们的单位是盘块号和盘块数。 3. 进程的换出与换入进程的换出与换入 (1) 进程的换出。 每当一进程由于创建子进程而需要更多的内存空间,但又无足够的内存空间等情况发生时,系统应将某进程换出。 其过程是:系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动盘块,将该进程的程序和数据传送到磁盘的对换区上。若传送过程未出现错误,便可回收该进程所占用的内

11、存空间,并对该进程的进程控制块做相应的修改。 (2) 进程的换入。 系统应定时地查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将其中换出时间(换出到磁盘上)最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。 4.3 基本分页存储管理方式基本分页存储管理方式 4.3.1 页面与页表页面与页表 1. 页面页面 1) 页面和物理块 分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame), 也同样为它们加以编


文档来源:https://www.renrendoc.com/paper/212711803.html

文档标签:

下载地址