第四章存储器管理
4.1程序的装入和链接
1、创建进程的第一件事:将程序和数据装入内存。
2、程序的装入和链接
1)编译
2)链接
3)装入
3、地址的概念
1)逻辑地址(相对地址,虚地址)
2)物理地址(绝对地址,实地址)
4、程序装入中的地址处理
逻辑地址 ====== 物理地址:
1)绝对装入方式
逻辑地址 ->重定位->物理地址:
2)静态可重定位装入方式
3)动态运行时(重定位)装入方式
5、不同的程序链接装入方式(使用内存的时机)
根据链接时间的不同,分成三种:
①静态链接:装入运行前将多个目标模块及所需库函数链接成一个整体,以后不再拆开。
②装入时动态链接:装入内存时,边装入边链接的链接方式。
③运行时动态链接:对某些目标模块的链接,在执行中需要该目标模块时,才对它进行链接。
4.2连续分配存储管理方式
1、连续分配方式
(1)单一连续分配
(2)固定分区分配
具体实现:
1)如何划分分区大小
2)需要的数据结构
3)分配回收操作
(3)动态分区分配
优点:并发进程数没有固定数的限制,不产生内碎片。
缺点:有外碎片
具体实现:
1)分区分配中的数据结构
2)分区分配算法
①首次适应算法FF
优点:优先利用内存低址部分,保留了高地址部分的大空闲区;
缺点:但低址部分不断划分,会产生较多小碎片;而且每次查找从低址部分开始,会逐渐增加查找开销。
②循环首次适应算法
优点:空闲分区分布均匀,减少查找开销
缺点:缺乏大的空闲分区
③最佳适应算法
缺点:每次找到最合适大小的分区割下的空闲区也总是最小,会产生许多难以利用的小空闲区
④最差适应算法
基本不留下小空闲分区,但会出现缺乏较大的空闲分区的情况。
⑤快速适应算法
能快速找到合适分区,但链表信息会很多;实际上是空间换时间。
3)分区分配操作
(4)动态重定位分区分配
动态重定位分区分配算法与动态分区分配算法基本相同,差别在于增加了紧凑的功能。
(5)内存空间管理之对换
对换空间的管理
4.3-4.4存储管理的离散分配方式
(一)基本分页存储管理
1、分页的目的是更细粒度的处理空间,减少粗放管理的浪费或开销问题。
2、物理划分块的大小=逻辑划分的页的大小
3、页表:为了找到被离散分配到内存中的作业,记录每个作业各页映射到哪个物理块,形成的页面映射表
4、每个作业有自己的页表
5、离散分配过程:
•找空 •放入 •记录
6、连续方式下,每条指令用基地址+偏移量即可找到其物理存放的地址。
7、一作业所有指令在用户地址空间是顺序编址
8、地址变换机构实现地址映射
分页式系统中的地址变换机构
9、设一次查找访问快表时间为t' ,则
EAT= a*t' + (1-a)(t'+t) + t = 2t +t' -t*a
10、
具有快表的分页系统的地址变换机构
11、进程分页离散存放,但页表的数据是连续在存放内存的。
12、两级页表:为离散分配的页表再建立一张页表,称为“外层页表”,其每个表项记录了页表页面所在的物理块号。
13、
具有两级页表的地址变换机构
14、反置页表:站在物理块的角度,记录占用它的已调入内存的进程标识和页号。系统中只需一张该表即可。
(二)基本分段存储管理
1、分段存储管理:作业分成若干段,各段可离散放入内存,段内仍连续存放。
2、基本原理:程序通过分段划分为多个模块,每个段定义一组逻辑信息。
3、地址结构:段号+段内地址
4、段表:记录每段实际存放的物理地址
5、
分段系统地址变换机构
6、分页和分段的主要区别(重点)
1)需求:分页是出于系统管理的需要,是一种信息的物理划分单位,分段是出于用户应用的需要,是一种逻辑单位,通常包含一组意义相对完整的信息。
一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。
2)大小:页大小是系统固定的,而段大小则通常不固定。分段没有内碎片,但连续存放段产生外碎片,可以通过内存紧缩来消除。相对而言分页空间利用率高。
3)逻辑地址:
分页是一维的,各个模块在链接时必须组织成同一个地址空间;
分段是二维的,各个模块在链接时可以每个段组织成一个地址空间。
4)其他:通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。分段模式下,还可针对不同类型采取不同的保护;按段为单位来进行共享
(三)段页式存储管理
1、基本原理
1)将用户程序分成若干段,并为每个段赋予一个段名。
2)把每个段分成若干页
3)地址结构包括段号、段内页号和页内地址三部分
2、
段页式系统的地址变换机构