操作系统是如何管理物理内存的?

本文是操作系统系列第三篇,介绍物理内存管理。操作系统对内存的管理是非常复杂的,和程序的执行、硬件、编译器等密切相关。本文从物理内存入手,介绍内存管理的重要概念,也为后续的虚拟内存管理内容做铺垫。原文链接,更多内容见公号机器学习与系统,欢迎与我互动~

内存管理的需求

  1. 抽象,即给每个程序逻辑地址空间
  2. 保护,不同程序的地址空间互相隔离,无法越界访问
  3. 共享,对于一些公共函数库,可以只在内存中存一份,其它程序引用这一个库即可
  4. 虚拟化,通过逻辑地址和虚拟内存,可以使用更大的地址空间

地址的概念

地址是用来标志存储资源位置的,在计算机中用一串二进制数据表示。

一. 地址空间

地址空间就是指地址的范围,从最小值到最大值:

  • 物理地址空间从0到物理内存的最大值:0~MAX_sys
  • 逻辑地址空间从0到程序虚拟内存范围的最大值:0~MAX_prog

下图展示了物理地址空间,进程A、B的逻辑地址空间。

二. 地址生成

物理地址是已经确定的,逻辑地址的生成依赖于编译器

  1. 编译:将高级语言编译成汇编语言。假设此时此时地址已知,如果起始地址改变,必须重新编译
  2. 汇编:将汇编语言翻译长机器能够识别的二进制代码,里面的地址是该程序执行时,对应地址空间中的位置
  3. 链接:将程序执行需要的函数库链接到可执行文件中,更新地址空间
  4. 加载:将函数加载到内存中时根据程序块在内存中的位置更新逻辑地址空间内的地址(重定位)
  5. 执行:执行代码时,程序在内存中可能会移动,这里需要地址转换(映射)支持

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值