内存管理
目录
内存的基础知识
什么是内存,有何作用
进程运行的基本原理
指令的工作原理
逻辑地址 vs 物理地址
如何实现地址转换
装入模块装入内存
绝对装入
静态重定位
动态重定位
从写程序到程序运行的过程
静态链接
装入时动态链接
运行时动态链接
小结
内存管理的概念
内存空间的分配与回收
内存空间的扩充
地址转换
内存保护
操作系统需要提供 内存保护 功能。保证各进程在各自存储空间内运行,互不干扰
小结
覆盖与交换
覆盖与交换是内存空间扩充的两种工作
覆盖工作
交换工作
小结
连续分配
单一连续分配
固定分区分配
动态分区分配
动态分区分配又称为可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时, 根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。(eg:假设某计算机内存大小为 64MB,系统区 8MB,用户区共 56 MB…)
系统要用什么样的数据结构记录内存的使用情况?
当很多个空闲分区都能满足需求时, 应该选择哪个分区进行分配?
如何进行分区的分配与回收操作?
分配
回收
情况二:回收区的前面有一个相邻的空闲分区
两个相邻的空闲分区合并为一个
情况三:回收区的前、后各有一个相邻的空闲分区
三个相邻的空闲分区合并为一个
情况四:回收区的前、后都没有相邻的空闲分区
新增一个表项
注:各表项的顺序不一定按照地址递增顺序排列,具体的排列方式需要依据动态分区分配算法来确定。
小结
动态分区分配算法
在动态分区分配方式中, 当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?
首次适应算法(First Fit)
最佳适应算法(Best Fit)
最坏适应算法(Worst Fit)
邻近适应算法(Next Fit)
小结
非连续分配管理方式
连续分配方式的缺点
基本分页存储管理
把“固定分区分配”改造为“非连续分配版本”
分页存储管理的基本概念
如何实现地址的转换
连续存放时动态重定位思想
计算机是如何快速计算页号和页内偏移量
黑色位的最大范围刚好就是页面大小
页表
小结
基本地址变换机构
对页表项大小的进一步探讨
小结
具有快表的地址变换机构
基本地址变换机构的改进版本,快表相当于缓存。
局部性原理
什么是快表(TLB)
引入快表后,地址的变换过程
小结
两级页表
单级页表存在什么问题?如何解决?
问题一:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。
问题二:没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。
如何解决
两级页表的原理,逻辑地址结构
如何实现地址变换
如何解决问题2
两级页表问题需要注意的几个细节
小结
基本分段存储管理
与“分页”最大的区别就是——离散分配时所分配地址空间的基本单位不同。