首页 > 其他分享 >连续分配存储管理

连续分配存储管理

时间:2022-12-04 00:33:47浏览次数:39  
标签:存储管理 分区 碎片 内存 大小 分配 空闲 连续

  • 内部碎片分配给某进程的内存区域(某分区中),如果有些部分没有用上
  • 外部碎片:是指内存中某些空闲分区由于太小而难以利用

一、单一连续分配

  • 内存被划分为系统区和用户区
  • 系统区通常位于内存的低地址部分,用于存放操作系统相关数据;用户区用于存放用户进程相关数据。内存中只能有一道用户程序,用户程序独占整个用户区
    空间。
  • 优点:实现简单:无外部碎片(占用整个用户空间),可以采用覆盖技术扩充内存;不一定需要采取内存保护
  • 缺点:只能用于单用户、单任务的操作系统中;有内部碎片(如图中的蓝色区域);存储器利用率极低。
image-20221203233416760

二、固定分区分配

  • 将整个用户空间(内存)划分为若干个固定大小的分区,分区和大小固定,在每个分区中只装入一道作业
    • 固定大小的固定分区
    • 大小不等的固定分区
  • 数据结构:分区说明表
    • 实现各个分区的分配与回收。
    • 每个表项对应一个分区,通常按分区大小排列。每个表项包括对应分区的大小起始地址状态(是否已分配)
    • 当某用户程序要装入内存时,由操作系统内核程序根据用户程序大小检索该表,从中找到一个能满足大小的、未分配的分区,将之分配给该程序,然后修改状
      态为已分配
  • 优点:实现简单、无外部碎片
  • 缺点:会产生内部碎片,如果程序太大,只能采取覆盖技术来实现,会降低性能

三、动态分区分配

  • 又称为可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小数目可变
  • 数据结构和分配
    • 存储分区大小、起始地址、状态
    • 分配不一定按地址递增顺序排序,取决于采取的动态分区算法。
    • 空闲分区表,每次修改表项
    • 空闲分区链,每次修改节点
  • 没有内部碎片,有外部碎片

碎片空间如何利用:“拼凑技术”,将碎片空间合并为大空间


四、内存空间的回收

  • 回收区只有后面有相邻的空闲分区
    • 合二为一,起始地址为回收区的起始地址,大小为两片区域的和
  • 回收区只有前面有相邻的空闲分区
    • 合二为一,起始地址为空闲分区的起始地址,大小为两片区域的和
  • 回收区前后都有相邻的空闲分区
    • 合三为一,起始地址为前空闲分区的起始地址,大小为三片区域的和
  • 回收区前后都没有相邻的空闲分区
    • 独立为一个空闲区

五、小结

连续分配管理方式 内部碎片 外部碎片
单一连续分配 X
固定分区分配 X
动态分区分配 X

标签:存储管理,分区,碎片,内存,大小,分配,空闲,连续
From: https://www.cnblogs.com/shyfvm/p/16949240.html

相关文章