操作系统-15-内存的分配和回收

操作系统-15-内存的分配和回收

1. 连续分配管理方式

mark

mark

1.1 单一连续分配

mark

1.2 固定分区分配

mark

数据结构

  1. 分区说明表

mark

1.3 动态分区分配

  1. 概念

mark

  1. 动态分区遇到的问题

mark

(1)系统要用怎样的数据结构记录内存的使用情况呢?

mark

(2)当多个空闲分区都能满足要求时,应该选择哪个分区进行分配?

mark

动态分区分配算法

mark

1.首次适应算法

mark

2.最佳适应算法

mark

3.最坏(大)适应算法

mark

4.邻近适应算法

mark

小结:

mark

内部碎片和外部碎片

  1. 概念

mark

  1. 解决方式 : 紧凑技术

mark

2. 非连续分配管理方式

2.1 基本分页存储管理

mark

  1. 概念

mark

  1. 地址结构

mark

  • 为什么页面大小一般设为2的整数次幂?

mark

  1. 基本地址转换

两个基本要素

  • 页面的起始地址
  • 页面的偏移量

mark

  • 首先需要建立一张页表

mark

  • 计算页表项的起始地址

mark

基本地址转换流程小结

mark

文字描述

mark

基本地址转换例题分析

mark

页表项的注意事项

mark

  1. 具有快表的地址变化机构
  • 局部性原理
    • 时间局部性: 如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)
    • 空间局部性: 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的)
  • 快表的概念
    • 又称联想寄存器(TLB) ,是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换的过程。与此对应,内存中的页表常称为慢表
  • 地址变化的过程

mark

  1. 两级页表

mark

  • 单级页表存在的问题
    • 页表需要很大的空间
    • 局部性原理

mark

mark

  • 二级页表的地址结构
    • 对页表再次进行分组

mark

  • 二级页表的地址结构及对应关系

mark

  • 二级页表的地址转换

mark

上面的部分我们解决了问题一,接下来是问题二,这里简单叙述一下,后面的文章会继续深入剖析。

mark

注意事项

mark

2.2 基本分段存储管理

  1. 概念

mark

  • 分页管理方式 : 从计算机角度出发考虑设计的,目的是提高内存的利用率,提供计算机的性能。
  • 分段管理方式: 从用户和程序员角度出发,以满足方便编程,信息共享和保护,动态增长和动态链接的需要

mark

  1. 分段的逻辑地址结构

mark

  • 段号的位数 : 决定了每个进程最多可以分成几个段
  • 段内地址 : 决定了每个段的最大长度可以是多少
  1. 段表

mark

  1. 分段的地址变换

mark

mark

  • 分段和分页的对比

mark

mark

  • 分段实现信息的共享
    • 不能被修改的代码是可以数据共享的
    • 可修改的代码是不能数据共享的

mark

  • 分页不能实现数据共享的理由

mark

2.3 段页式存储管理

  1. 概念

mark

  • 分段和分页的优缺点分析

mark

  1. 分段 + 分页 = 段页式管理

mark

  1. 段页式管理的逻辑地址结构

mark

  1. 段页式存储的段表,页表

mark

  • 每个段对应一个段表项
    • 段号
    • 页表长度
    • 页面存放的块号
  • 每个页对应一个页表项
    • 页号
    • 页面存放的内存块号
  1. 段页式管理的地址转换过程

mark

参考书籍:《王道考研计算机操作系统》

参考博客https://mubu.com/doc/Cd-Y4YOfkh#o-1d01735b78f18c07f

https://blog.csdn.net/weixin_43914604/article/details/104415990

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信