连续分配管理方式

连续分配管理方式

image

补充:

非连续分配管理方式:

  1. 基本分页存储管理
  2. 基本分段存储管理
  3. 段页式存储管理

一、前言

对于内存来说:

  • 内部碎片:已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间
  • 外部碎片:还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域

二、单一连续分配

image

内存被划分为系统区用户区

  1. 系统区:通常位于内存的低地址部分,存放操作系统相关数据。
  2. 用户区:存放用户进程相关数据。

内存中只能有一道用户程序,用户程序独占整个用户区空间。

  • 优点:

    • 无外部碎片;
    • 实现简单;
    • 可以使用覆盖技术扩充内存;
    • 不一定需要采取内存保护(eg: 早期的 PC 操作系统 MS-DOS )
  • 缺点:

    • 有内部碎片;
    • 只能用于单用户、单任务的操作系统中;
    • 存储器利用率极低。

三、固定分区分配

image

将整个用户空间划分为若干个固定大小的分区,在每个分区中只装入一道作业。

image

  • 优点:

    • 无外部碎片
    • 实现简单
  • 缺点:

    • 会产生内部碎片,内存利用率低
    • 当用户程序太大时,可能所有的分区都不能满足需求,此时不得不采用覆盖技术来解决,但这又会降低性能

(一)分区大小相等

缺乏灵活性,但是很适合用于用一台计算机控制多个相同对象的场合(比如:钢铁厂有 n 个相同的炼钢炉,就可把内存分为 n 个大小相等的区域存放 n 个炼钢炉控制程序)

(二)分区大小不等

增加了灵活性,可以满足不同大小的进程需求。根据常在系统中运行的作业大小情况进行划分(比如:划分多个小分区、适量中等分区、少量大分区)

四、动态分区分配(可变分区分配)

这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。

如果内存中空闲空间的总和本来可以满足某进程的要求,但由于进程需要的是一整块连续的内存空间,因此这些“碎片”不能满足进程的需求。但可以通过紧凑(拼凑,Compaction )技术来解决外部碎片。

(一)系统要用什么样的数据结构记录内存的使用情况?

image

(二)当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?

按照一定的动态分区分配算法(见下一节)。

(三)如何进行分区的分配与回收操作?

回收内存分区时分四种情况(相邻的空闲分区合并):

image

posted @   Wind_730  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示