操作系统之内存管理

目录

什么是内存管理

逻辑地址转成物理地址的基本思路

内存空间的扩充

内存空间的分配与回收

动态分区分配算法

分页存储管理

分段存储管理

段页式管理方式

虚拟内存

内存映射文件


什么是内存管理

内存管理需要做四件事

内存空间的分配与回收

内存空间的扩展

地址转换

内存保护

操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰。

小结

逻辑地址转成物理地址的基本思路

内存的更多基础知识可学习计算机组成原理,此处仅记录操作系统相关内容

指令的工作原理

因为指令不能总是存放在0开始的内存空间,所以程序中不能直接使用物理地址。

重要概念:逻辑地址

如果装入模块装入内存时起始地址不是0

所以,如何将指令中的逻辑地址转换成物理地址呢?

编译链接后得到的是逻辑地址,但是要装入的是实际的物理地址。

那么,怎么才能使得装入时能定位到实际地址呢?

绝对装入

静态重定位

动态重定位

补充:从写程序到程序运行

其实链接也有三种方式

静态链接

装入时动态链接

运行时动态链接

小结

内存空间的扩充

覆盖技术

交换技术

小结

内存空间的分配与回收

连续分配:指为用户进程分配的必须是一个连续的内存空间

单一连续分配

固定分区分配

动态分区分配

动态分区分配时会动态更新空闲分区表

内存回收的四种情况

小结

动态分区分配算法

首次适应算法

最佳适应算法

最坏适应算法

邻近适应算法

小结

上面讲的几种都是连续内存分配;

接下来讲离散内存分配; 

二者地址转换的思路是类似的,只是离散内存分配时的地址转换中间多了一些计算。

分页存储管理

页表

总结的内容:

具体计算过程直接参考:

3.1_6_基本分页存储管理的概念_哔哩哔哩_bilibili

3.1_7_基本地址变换机构_哔哩哔哩_bilibili

注意,地址变换机构指的是硬件实现。

3.1_8_具有快表的地址变换机构_哔哩哔哩_bilibili

快表也是一种硬件实现。

引入快表后的地址变换过程

能否把整个页表都放在快表中?

为什么快表的命中率通常能达到90%以上?

局部性原理

快表小结

两级页表

单级页表存在的问题

解决第一个问题

解决第二个问题

两级页表小结

分段存储管理

段名会被转成对应的段号

和页表类似,分段存储有一个段表

注意,分段是将进程分段,这里并不涉及将内存分段

地址变换过程

分页管理和分段管理的对比

分段管理小结

段页式管理方式

分段和分页存储管理的优缺点

结合二者的优缺点,就有了段页式管理

段页式的逻辑地址结构

段表和页表

逻辑地址到物理地址的转换过程

虚拟内存

传统存储管理方式的缺点

重新回顾局部性原理

虚拟内存的定义和特征

虚拟内存的三个主要特征

如何实现虚拟内存技术

 

小结

请求分页存储管理

页表机制

缺页中断机构

地址变换机构

页面置换算法

最佳置换算法

无法被实现

先进先出置换算法

该算法性能差

最近最久未使用置换算法

时钟置换算法

改进型的时钟置换算法

页面分配策略

页面分配和置换策略

附:

考虑一个极端情况,若某进程共有100个页面,则该进程的驻留集大小为100时进程可以全部放入内存,运行期间不可能再发生 缺页。若驻留集大小为1,则进 程运行期间必定会极频繁地缺页。

具体的三种分配策略

附:系统会锁定一些页面,这些页面中的内容不能置换出外存,比如重要的内核数据可以设为“锁定”。

何时调入页面

实际应用中,一般是二者的结合使用。

从何处调入页面

抖动现象

 

工作集

小结

 

内存映射文件

传统的文件访问方式

如果系统采用了内存映射

内存映射还能实现进程间的内存共享

小结

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值