存储器的分区内存管理与分区存储管理

存储技术

609人已加入

描述

分区内存管理

单一区存储管理

定义:用户区不分区,完全被一个程序占用。

优点:简单,不需要复杂的硬件支持

缺点:内存浪费,利用率低

分区存储管理

定义:把用户区划分为若干大小不等的分区,共不同程序使用。适用单用户单任务系统。

①固定分区

把内存固定地划分为若干个大小不等的分区供各个程序使用,每个分区的大小和位置都固定,系统运行期间不再重新划分。

分区表:为了方便内存分配,通常将分区按大小排好序,并建议一张对应的分区表,该表包括每个分区的起始地址,大小及状态。当用户程序装入内存的时候,依据用户程序大小检索分区表,从中找出一个满足要求的、尚未分配的分区,将之分配给该程序,并将表中该分区的状态改为已分配,若未找到大小满足的分区,则拒绝分配。

存储器

使用特点:在程序装入前,内存已被分区,不再改变。每个分区大小不同,适应大小不同的程序,系统要维护分区表,适应具有固定任务数的多道程序系统。

缺点:浪费内存,程序比所在分区小;另外大程序可能无法运行。

建议:根据分区表安排程序装入顺序,使每个程序都能找到合适的分区运行。

在通用操作系统中,程序的数量大小都是不确定的,显然固定分区不太适合

②动态分区

定义:在程序装入的时候创建分区,使分区大小与程序的大小相等。

特点:分区动态建立。会产生内存碎片。

需要解决的问题:分区的分配?分区的选择?分区的回收?解决内存碎片问题?

分区的分配

空闲区表:描述内存空闲区的位置和大小的数据结构

存储器

分配过程(假定用户要求的空间是s)

(1)从空闲区表的第一个区开始,寻找大于等于s的空闲区

(2)找到后从分区分割出大小为s的部分给用户使用

(2)分割后的剩余部分作为空闲区仍登记在空闲区表中

注意:分割空闲区时一般从底部分割,这样基址不变,容易更新

空闲区表如何排序——放置策略(空闲区表排序原则)

(1)按空闲区位置(首址)递增排序:首次适应算法

(2)按空闲区位置(首址)递减排序:没有用

(3)按分区大小递增排序:最佳适应算法

(4)按分区大小递减排序:最坏适应算法

分区的回收

功能:回收程序释放分区(释放区),登记到空闲区表中,以便再分配。

回收算法:要考虑释放区与现有空闲区是否相邻?若相邻,则合并后更新表,若不相邻,直接插入表中。

内存覆盖技术 (覆盖overlay)(物理内存管理范畴)

目的:在较小的内存空间中运行较大的程序。

内存分区:

①常驻区:被某段单独且固定地占用,可划分多个

②覆盖区:能被多段共用(覆盖),可划分多个

存储器

缺点:编程复杂,程序员划分程序模块并确定覆盖关系;程序执行时间长,从外存装入到内存很耗时。

内存交换技术(Swapping)(物理内存管理范畴)

原理:内存不够时把进程写道磁盘(换出/Swap out),当进程要运行时重新写回内存(换入/Swap 呕吐)

优点:增加进程并发数,不考虑程序结构

缺点:换入和换出增加CPU开销,交换单元太大(整个进程)

需要考虑的问题:减少交换传送的信息量(模块/段);

①外存交换空间的管理方法;

②程序换入时的地址重定位。

③换出换入的地址重定位:

放到什么位置?

①原来位置(容易引起地址冲突)

②任一空的位置(地址要重定位)

内存碎片

存储器

动态分区的缺点:容易产生内碎片。

碎片问题的解决方法:

①规定门限值

分割空闲区时,若剩余部分小于门限值,则此空闲区不进行分割,而是全部分配给用户。

②内存拼接技术

将所有空闲区集中构成一个大的空闲区。

拼接的时机:

释放区回收的时候(拼接频率过大,系统开销大);

系统找不到足够大的空闲区的时候(空闲区管理复杂);

定期(空闲区管理复杂)

缺点:消耗系统资源;离线拼接(系统需要暂停下来进行整理);重新定义作业。

③解除程序占用连续内存才能运行的限制(分页和分段就是借鉴了这种思想)

把程序分拆为多个部分装入到不同分区,充分利用碎片

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分