操作系统_03_内存管理(个人总结)

    声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出

为什么要有虚拟地址?

  1. 使各个进程使用的内存 相互独立

    单片机没有操作系统, 其CPU直接操作物理地址, 当两个应用程序同时使用了一个物理地址, 程序会崩溃

    所以不能让应用程序操控物理地址, 而是让 操作系统为每个进程分配独立的一套「虚拟地址」进行相互隔离; 各个程序只能用它们各自的虚拟地址,无权访问物理地址, 操作系统负责虚拟地址映射到物理地址;

  2. 内存紧张时, 磁盘也可以充当内存使用

内部碎片 与 外部碎片 的区别?

内部碎片是已经分配出去了, 如分配给A进程500M资源, 其内部有一块1M的连续内存太小 无法使用

外部碎片是还未分配出去, 如有一块1M的连续内存太小 无法分配给其他任意一个进程

管理 虚拟地址 与 物理地址之间的关系:

  1. 段式内存管理(先出现)

    根据程序的逻辑角度,分成了堆段栈段数据段代码段等;每个段的大小不固定的, 由用户程序决定

    优点:

    ​ 这样可以分离出不同属性的段

    缺点:

    ​ 粒度大, 内存交换时交换的数据太多

    ​ 内存碎片多

  2. 页式内存管理(后出现, 解决了内存分段的缺点)

    把虚拟空间和物理空间分成大小固定的页,如在 Linux 系统中,每一页的大小为 4KB

    优点:

    1. 粒度小, 内存交换时交换的数据少

    2. 分页允许将一个进程分散地装入到许多不相邻的分区中

    3. 内存碎片少

    为了解决页表过大的问题,就有了多级页表, (原理: 二级页表按需加载)

    引发新的问题: CPU 在寻址时要查找多层,加大了时间上的开销。

    解决: 根据程序的局部性原理TLB缓存最近常被访问的页表项

  3. 段页式内存管理

    既具有分段的优势:

    1. 共享:

      ​ 段是信息的逻辑单位, 页是信息的物理单位并无完整的意义,不便于实现共享; 多个进程共享某个段的内存区域只需要指定段号即可,而不需要指定多个页

    2. 保护:

    ​ 不同段可以自由伸缩内存空间大小,而且不影响其他的段

    又具有分页的优势:

    ​ 由于页的内存大小都是提前规划好的, 所以可以减少内存碎片

    ​ 由于页的粒度很细, 所以可以有选择性地高效Swap

内存交换(虚拟内存):

​ 内存紧张时, 把不常使用的内存暂时存放到硬盘(换出), 在需要的时候再装载回物理内存(换入)

虚拟地址转换为物理地址

工作硬件: 内存管理单元 MMU

  1. 段式内存管理:

    在这里插入图片描述

  2. 页式内存管理:

    在这里插入图片描述

  3. 段页式内存管理:

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值