第四章 存储器管理

存储部件的层次

主存:在保存进程运行时的程序和数据;

寄存器:速度最快,价格昂贵容量不大,一般以字为单位,只要存放指令一次操作的数据就够了;

高速缓存:一种速度比内存快的存储设备,一般同寄存器一样集成在CPU中(速度快,存放部分内存数据,硬件自动处理);

磁盘缓存:内存的一部分,将频繁使用的一部分磁盘数据信息预读入在磁盘缓存,减少磁盘读写时间


1.程序的装入和链接


创建进程的第一件事:将程序和数据装入内存

1.地址的概念

逻辑地址(相对地址,虚地址):用户的程序经过汇编或编译后形成目标代码,目标代码中的指令地址是相对地址。一般手地址为0.

物理地址(绝对地址,实地址)

内存中存储单元的地址;物理地址可直接寻址被执行。

地址映射:将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址的过程。

2)程序装入中的地址处理

逻辑地址============物理地址:①绝对装入方式    优点:装入过程简单,不需任何地址变换,程序中的逻辑地址与实际内存物理地址完全相同。缺点:过于依赖硬件结构,只适用早期单道环境下

重定位:把  目标程序中的 指令和数据 的 逻辑地址 变成内存中的物 理地址的地址变换过程。

逻辑地址→重定位→物理地址:②静态可重定位装入方式

地址映射在程序执行之前进行,重定位后物理地址不再改变

优点:不需硬件支持,可以装入有限的多道程序   缺点:软件装入一次完成,一个程序通常需要占用连续的内存空间,  不易实现共享

③动态运行时(重定位)装入方式            程序装入内存是,可多次重定位到不同位置,且可以不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。。。更适用于部分装入。

3)不同的程序链接方式:①静态链接   装入运行前 ②装入时动态链接  边装入边链接     1.便于修改和更新2.便于实现共享③运行时动态链接        不全部装入,对某些目标模块的链接,在执行中需要该目标模块时,才对它进行链接。   优点:程序运行装入的内容少了,加快了装入过程,而且节省大量的内存空间。

2.连续分配方式


(1)单一连续分配:分为系统区(低址部分)和用户区两部分;优点:易于管理:缺点:内存浪费

(2)固定分区分配:把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区。      支持多个程序并发执行                       划分为几个分区,便允许几道作业并发

划分分区大小:相等,只适合于多个相同程序的并发执行。缺乏灵活性;;;;;;;;;;;;分区大小不等,多个小的,适量中等,少量大的


固定分配的不足:   1  内碎片(一个分区内的剩余空间)造成浪费2分区总数固定,限制并发执行的程序数量


(3)动态分区分配

分区的大小不固定:需要多少划分多少

优点:并发进程数没有固定数的限制,不会产生内碎片。缺点:有外碎片(分区间无法利用的空间)

2)分区分配算法

①首次适应算法FF(保留了高址部分的空闲区;会产生较多小碎片;增加查找开销)

  ②循环首次适应算法 (从上次空闲分区的下一个开始查找        。空闲分区分布均匀,减少查找开销;缺乏大的空闲分区)      

③最佳适应算法 (所有空闲分区按容量从小到大排序成空闲分区表或链    、产生许多难以利用的小空闲区,外碎片)                

 ④最差适应算法(缺乏较大的空闲分区)

  ⑤快速适应算法(空间换时间,相同大小的进程串成一个链)


回收分区:1.回收区与某区末尾临接    2.回收区与某区首址临接     3.   前后临接 4.无临接

动态重定位分区分配:动态连续分配无法解决外碎片问题(动态重定位分区分配算法与动态分区分配算法基本相同,差别在于增加了紧凑的功能。)

(5)内存空间管理之对换


3.基本分页存储管理方式.

分页方式下,内存的使用率高,浪费少。但不是绝对没有碎片(进程的最后一页不总是能占满一个物理块)

1)页面的概念

①物理划分块的大小=逻辑划分页的大小②页面大小要适中(太大,内碎片增大,类似连续分配的问题;太小,页面碎片总空间虽然小,提高了利用率,但每个进程的页面数量较多,页表过长,反而又增加了空间使用)

2)页表的概念:为了找到被离散分配到内存中的作业,记录每个作业各页映射到哪个物理块,形成的页面映射表,简称页表。(每个作业有自己的页表;作用:页号到物理块号的地址映射;找作业先找页表PCB,根据PCB找物理块)

作业相对地址:页号+页内地址(页内偏移)

逻辑地址格式

    4)地址变换机构:指令页号(→物理块)+内部偏移量

5)快表(具有“并行查询”能力的高速缓冲寄存器):快表放正在执行进程的页表的数据项EAT=2t +  t' - t * a

6)两级、多级页表,反置页表


反置页表

4.基本分段存储管理方式

每段占据一块连续的内存(即有离散的分段,又有连续的内存使用)、各段大小不等

分段和分页的主要区别

1.需求:分页是出于系统管理的需要,是一种信息的物理划分单位,分段是出于用户应用的需要,是一种逻辑单位,通常包含一组意义相对完整的信息;

2.大小:页大小是系统固定的,而段大小则通常不固定。分段没有内碎片,但连续存放段产生外碎片(内存碎片),可以通过内存紧缩来消除。相对而言分页空间利用率高

3.逻辑地址:分页是一维的,各个模块在链接时必须组织成同一个地址空间;分段是二维的,各个模块在链接时可以每个段组织成一个地址空间。

4.其他:通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。分段模式下,还可针对不同类型采取不同的保护;按段为单位来进行共享。

5)段页式存储管理方式

①基本原理:将用户程序分成若干段,每个段分成若干页,地址结构包括段号、段内页号和业内地址三部分。

Linux仅把运行进程当前使用的少量页面装入内存(内存分配)

你可能感兴趣的:(第四章 存储器管理)