快捷搜索:  汽车  科技

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)使用特点:在程序装入前,内存已被分区,不再改变。每个分区大小不同,适应大小不同的程序,系统要维护分区表,适应具有固定任务数的多道程序系统。分区表:为了方便内存分配,通常将分区按大小排好序,并建议一张对应的分区表,该表包括每个分区的起始地址,大小及状态。当用户程序装入内存的时候,依据用户程序大小检索分区表,从中找出一个满足要求的、尚未分配的分区,将之分配给该程序,并将表中该分区的状态改为已分配,若未找到大小满足的分区,则拒绝分配。定义:把用户区划分为若干大小不等的分区,共不同程序使用。适用单用户单任务系统。①固定分区把内存固定地划分为若干个大小不等的分区供各个程序使用,每个分区的大小和位置都固定,系统运行期间不再重新划分。

分区内存管理单一区存储管理

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

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

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

分区存储管理

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

①固定分区

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

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

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)(1)

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

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

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

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

②动态分区

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

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

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

分区的分配

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

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)(2)

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

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

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

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

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

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

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

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

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

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

更多linux内核视频教程文档资料免费领取后台私信【内核】自行获取.

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)(3)

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)(4)

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈-学习视频教程-腾讯课堂

分区的回收

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

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

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

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

内存分区:

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

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

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)(5)

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

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

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

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

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

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

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

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

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

放到什么位置?

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

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

内存碎片

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)(6)

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

碎片问题的解决方法:

①规定门限值

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

②内存拼接技术

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

拼接的时机:

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

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

定期(空闲区管理复杂)

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

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

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

- - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛

转载地址:一文讲解存储器的分区内存管理与分区存储管理 - 圈点 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛

存储管理器中的内存分配(一文讲解存储器的分区内存管理与分区存储管理)(7)

猜您喜欢: