操作系统物理内存管理:连续和非连续

物理内存管理:连续内存分配地址空间定义物理地址空间:硬件支持的地址空间起始地址0,直到 MAXsys逻辑地址空间:在 CPU 运行的进程看到的地址起始地址0,直到 MAXprog地址生成时机和限制编译时假设起始地址已知如果起始地址改变,必须重新编译加载时如编译时起始位置未知,编译器需生成可重定位的代码(relocatable code)加载时,生...
摘要由CSDN通过智能技术生成

物理内存管理:连续内存分配

地址空间定义

  • 物理地址空间:硬件支持的地址空间
    • 起始地址0,直到 MAXsys
  • 逻辑地址空间:在 CPU 运行的进程看到的地址
    • 起始地址0,直到 MAXprog

地址生成时机和限制

  • 编译时
    • 假设起始地址已知
    • 如果起始地址改变,必须重新编译
  • 加载时
    • 如编译时起始位置未知,编译器需生成可重定位的代码(relocatable code)
    • 加载时,生成绝对地址
  • 执行时
    • 执行时代码可移动
    • 需地址转换(映射)硬件支持

地址生成过程

  • CPU
    • ALU:需要逻辑地址的内存内容
    • MMU:进行逻辑地址和物理地址的转换
    • CPU 控制逻辑:给总线发送物理地址请求
  • 内存
    • 发送物理地址的内容给 CPU
    • 或接受 CPU 数据到物理地址
  • 操作系统
    • 建立逻辑地址 LA 和物理地址 PA 的映射

连续内存分配和内存碎片

  • 连续内存分配
    • 给进程分配一块不小于指定大小的连续的物理内存区域
  • 内存碎片
    • 空闲内存不能被利用
  • 外部碎片
    • 分配单元之间的未被使用内存
  • 内部碎片
    • 分配单元内部的未被使用内存
    • 取决于分配单元大小是否要取整

连续内存分配:动态分区分配

  • 动态分区分配
    • 当程序被加载执行时,分配一个进程指定大小可变的分区(块、内存块)
    • 分区的地址是连续的
  • 操作系统需要维护的数据结构
    • 所有进程的已分配分区
    • 空闲分区(Empty-blocks)
  • 动态分区分配策略
    • 最先匹配(First-fit)
    • 最佳匹配(Best-fit)
    • 最差匹配(Worst-fit)

最先匹配(First Fit Allocation)策略

  • 思路:分配 n 个字节,使用功能第一个可用的空间比 n 大的空闲块
  • 原理 & 实现
    • 空闲分区列表按地址顺序排序
    • 分配过程中,搜索一个合适的分区
    • 释放分区时,检查是都可与临近的空闲分区合并
  • 优点
    • 简单
    • 在高地址空间有大块的空闲分区
  • 缺点
    • 外部碎片
    • 分配大块时较慢
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值