浅谈操作系统——动态分区分配方式

186 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情

  • 动态分区分配是指在系统运行的过程中建立分区,并使分区的大小刚好与作业的大小相等

实现动态分区需要的数据结构

  • 在动态分区存储管理中,要有相应的数据结构来登记空闲分区的说明信息,它包括空闲分区的大小和位置
  • 不同系统根据设计要求采用不同的结构,常用的有空闲分区和空闲分区队列结构
  • 系统还要求设置了等待分区队列,当系统中无空闲区或者没有满足要求的空闲区时,则把申请者送入等待队列中,等待别的进程释放内存后在唤醒队列中的进程。

image.png

动态分区的分配和回收

分区的分配

  • 系统初启后,除操作系统占用一个分区外,其余存储区为一个大的空闲区
  • 分区的分配是指系统根据用户的请求,在空闲分区表或空闲队列中寻找一个满足用户要求的空闲分区,把这个空闲分区分配给用户
  • 以空闲分区表为例,当用户要求一个大小为SIZE的存储空间时,系统查询空闲分区表,找一个大于或等于SIZE的空闲区

分配时的三种情况

  • 系统中没有满足要求的空闲分区,则分配失败
  • 空闲区大小与SIZE相等,则修改空闲分区表相应表目,向用户返回该空闲分区的首址,表示这个空闲分区已经分给了要求的用户
  • 空闲分区大于SIZE,这时将空闲分区一分为二

将一个空闲分区分成两部分有两种方法:

  • 从空闲分区的上部开始划出SIZE大小的空闲分区给用户
  • 从空闲分区的底部开始向上划出SIZE大小的空闲分区给用户

分区的回收

当某个进程释放某存储区时,系统首先检查释放区是否与系统中的空闲区相邻,若相邻则把释放区合并到相邻的空闲区去,否则把一个释放区作为一个空闲区插入到空闲分区表的适当位置

image.png

三种放置策略

  • 空闲分区表或队列的排序
  • 首次适应法
  • 最佳适应法
  • 最坏适应法
  • 三种策略比较

这块记忆东西比较多,所以只能枯燥记忆一下了