王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理

目录

内存管理概念

内存的基础知识

什么是内存?有何作用?

补充知识:几个常用的数量单位

指令的工作原理 

三种装入方式

绝对装入 

可重定位装入 

动态重定位 

从写程序到程序运行 

链接的三种方式 

总结

内存管理的概念

内存保护 

内存空间的扩充 

覆盖技术

交换技术

内存空间的分配与回收 

连续分配管理方式

 单一连续分配

固定分区分配 

动态分区分配

总结

动态分区分配算法

首次适应算法 

最佳适应算法 

最坏适应算法

邻近适应算法 

总结 

非连续分配管理方式

基本分页存储管理的基本概念 

基本地址变换机构 

具有快表的地址变换机构

两级页表 

基本分段存储管理

分段、分页管理的对比

段页式管理方式 

虚拟内存管理

传统存储管理方式的特征、缺点

虚拟内存的定义和特征 

如何实现虚拟内存技术

请求分页管理方式 

请求页表 

缺页中断

地址转换流程 

页面置换算法

最佳置换算法 (OPT)

先进先出置换算法 (FIFO) 

最近最久未使用置换算法(LRU)

时钟置换算法 (CLOCK)

改进型CLOCK算法 

页面分配策略

驻留集

页面分配、置换策略 

页面调动时机策略

页面调动位置策略 

抖动(颠簸)现象 

内存映射文件 

传统文件访问方式


王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第1张图片

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第2张图片

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第3张图片

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第4张图片

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第5张图片

内存管理概念

内存的基础知识

什么是内存?有何作用?

程序执行前需要先放到内存中才能被CPU处理——缓和CPU与硬盘之间的速度矛盾

补充知识:几个常用的数量单位

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第6张图片

指令的工作原理 

三种装入方式

绝对装入 

可重定位装入 
动态重定位 

从写程序到程序运行 

链接的三种方式 

  • 静态链接:程序运行之前,将库函数连接成一个完整的可执行程序
  • 装入时动态链接:将用户源程序编译后得到目标模块,装入内存时,采用边装入边链接的方式
  • 运行时动态链接:对于某些目标模块的链接,程序需要时才会对其链接 ,便于修改和更新,便于实现对目标模块的共享

总结 


内存管理的概念

内存保护 

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第7张图片


内存空间的扩充 

覆盖技术

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第8张图片


交换技术

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第9张图片

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第10张图片

注意: PCB 会常驻内存,不会被换出外存 

  • 应该在外存(磁盘)的什么位置保存被换出的进程?
    • 具有对换功能的操作系统中,通常把磁盘空间分为文件区对换区两部分。文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式: 对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式(学过文件管理章节后即可理解)。总之,对换区的I/O速度比文件区的更快。
  • 什么时候应该交换?
    • 交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;如果缺页率明显下降,就可以暂停换出。
  • 应该换出哪些进程?
    • 可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间


内存空间的分配与回收 

连续分配管理方式

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

 单一连续分配

固定分区分配 

动态分区分配

动态分区分配没有内部碎片,但是有外部碎片。

  • 内部碎片,分配给某进程的内存区域中,如果有些部分没有用上。
  • 外部碎片,是指内存中的某些空闲分区由于太小而难以利用。

如果内存中空闲空间的总和本来可以满足某进程的要求但由于进程需要的是一整块连续的内存空间,因此这些“碎片”不能满足进程的需求可以通过紧凑(拼凑,Compaction) 技术来解决外部碎片。 


总结


动态分区分配算法

在动态分区分配方式中,当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?

首次适应算法 

算法思想:  每次都从低地址开始查找,找到第一个能满足大小的空闲分区。

如何实现:  空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第11张图片

最佳适应算法 

算法思想:  由于动态分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,可以尽可能多地留下大片的空闲区即,优先使用更小的空闲区。
如何实现:  空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第12张图片

最坏适应算法

又称 最大适应算法 (Largest Fit)

算法思想:  为了解决最佳适应算法的问题-一即留下太多难以利用的小碎片,可以在每次分配时优先使用最大的连续空闲区,这样分配后剩余的空闲区就不会太小,更方便使用。

如何实现: 空闲分区按容量递减次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第13张图片

邻近适应算法 

算法思想:  首次适应算法每次都从链头开始查找的。这可能会导致低地址部分出现很多小的空闲分区,而每次分配查找时,都要经过这些分区,因此也增加了查找的开销。如果每次都从上次查找结束的位置开始检索,就能解决上述问题。

如何实现:  空闲分区以地址递增的顺序排列 (可排成一个循环链表)。每次分配内存时从上次查找结束的位置开始查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

总结 


非连续分配管理方式

为用户进程分配的可以是一些分散的内存空间

基本分页存储管理的基本概念 

页表

        记录了页面实际存放的内存块之间的映射关系

        为了便于在内存中找到进程的每个页面对应的物理块,系统为每个进程建立一张页表,记录页面在内存中对应的物理块号,页表一般放在内存中

页表项:

        页号+物理内存中的块号(不要与地址结构搞混)页表项的物理内存块号+地址结构中的页内偏移=物理地址

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第14张图片

总结


基本地址变换机构 

用于实现逻辑地址到物理地址转换的一组硬件机构

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第15张图片

总结


具有快表的地址变换机构

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第16张图片

局部性原理

TLB和普通Cache 的区别--TLB 中只有表项的副本,而普通Cache 中可能会有其他各种数据的副本 


两级页表 
  • 根据页号查询页表的方法: K 号页对应的页表项存放位置 = 页表始址 + K*4要在所有的页表项都连续存放的基础上才能用这种方法找到页表项
  • 根据局部性原理可知,很多时候,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此没有必要让整个页表都常驻内存。

由上述分析可得到单级页表的问题如下: 

  • 页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框.
  • 没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第17张图片王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第18张图片


基本分段存储管理

与“分页”最大的区别就是--离散分配时所分配地址空间的基本单位不同


分段、分页管理的对比

分段比分页更容易实现信息的共享和保护 

不能被修改的代码称为纯代码或可重入代码 (不属于临界资源),这样的代码是可以共享的。可修改的代码是不能共享的(比如,有一个代码段中有很多变量,各进程并发地同时访问可能造成数据不一致)

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第19张图片

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第20张图片


段页式管理方式 


虚拟内存管理

传统存储管理方式的特征、缺点

虚拟内存的定义和特征 

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第21张图片

  • 多次性:作业在运行时,分多次调入内存运行
  • 对换性:作业不必一直驻留内存,允许作业在运行过程中进行换进换出
  • 虚拟性:从逻辑上扩充内存容量,使用户看到的内存容量远大于实际的内存容量

如何实现虚拟内存技术

        虚拟内存技术,允许一个作业分多次调入内存。如果采用连续分配方式,会不方便实现。因此,虚拟内存的实现需要建立在离散分配的内存管理方式基础上。

主要思想:在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存

  • 操作系统要提供请求调页 (或请求调段) 功能
  • 操作系统要提供页面置换 或段置换) 的功能


请求分页管理方式 

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第22张图片

请求页表 

缺页中断

地址转换流程 


页面置换算法

最佳置换算法 (OPT)

        最佳置换算法 (OPT,Optimal):  每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问的页面,这样可以保证最低的缺页率。

最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的是哪个页面。操作系统无法提前预判页面访问序列。因此,最佳置换算法是无法实现的。 


先进先出置换算法 (FIFO) 

        先进先出置换算法(FIFO): 每次选择淘汰的页面是最早进入内存的页面

        实现方法:把调入内存的页面根据调入的先后顺序排成一个队列,需要换出页面时选择队头页面即可

        队列的最大长度取决于系统为进程分配了多少个内存块。

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第23张图片


最近最久未使用置换算法(LRU)

最近最久未使用置换算法 (LRU,least recently used): 每次淘汰的页面是最近最久未使用的页面

实现方法: 赋予每个页面对应的页表项中,用访问字段记录该页面自上次被访问以来所经历的时间t.当需要淘汰一个页面时,选择现有页面中t值最大的,即最近最久未使用的页面。


时钟置换算法 (CLOCK)


改进型CLOCK算法 


页面分配策略

驻留集

        驻留集:  指请求分页存储管理中给进程分配的物理块的集合。
在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。

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


页面分配、置换策略 
  • 固定分配:操作系统为每个进程分配一组固定数目的物理块,在进程运行期间不再改变。即,驻留集大小不变
  • 可变分配:先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。即,驻留集大小可变 
  • 局部置换:发生缺页时只能选进程自己的物理块进行置换。
  • 全局置换:可以将操作系统保留的空闲物理块分配给缺页进程,也可以将别的进程持有的物理块置换到外存,再分配给缺页进程。

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第24张图片


页面调动时机策略
  • 预调页策略:根据局部性原理,一次调入若工个相邻的页面可能比一次调入一个页面更高效。但如果提前调入的页面中大多数都没被访问过,则又是低效的。因此可以预测不久之后可能访问到的页面,将它们预先调入内存,但目前预测成功率只有50%左右。故这种策略主要用于进程的首次调入由程序员指出应该先调入哪些部分。(运行前调入)
  • 请求调页策略:进程在运行期间发现缺页时才将所缺页面调入内存。由这种策略调入的页面一定会被访问到,但由于每次只能调入一页,而每次调页都要磁盘I/0操作,因此I/0开销较大。(运行时调入)

页面调动位置策略 


抖动(颠簸)现象 

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第25张图片


内存映射文件 

内存映射文件一一操作系统向上层程序员提供的功能(系统调用)

  • 方便程序员访问文件数据
  • 方便多个进程共享同一个文件
传统文件访问方式

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第26张图片

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第27张图片

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理_第28张图片 

 

你可能感兴趣的:(完整长篇学习笔记,操作系统,学习,笔记,linux)