目录
第一章:【王道考研 操作系统】【第一章】操作系统的概述、特征、发展、体系结构 中断与系统调用
第二章:【王道考研 操作系统】【第二章】进程概念 进程控制 进程通信 线程概念和多线程模型
【王道考研 操作系统】【第二章】处理机调度 进程调度算法
【王道考研 操作系统】【第二章】进程同步、进程互斥的实现方法 软件&硬件 优点&缺点 信号量机制
【王道考研 操作系统】【第二章】管程 用管程解决进程互斥和同步问题
【王道考研 操作系统】【第二章】死锁的概念 预防死锁 避免死锁 死锁的检测和解除
第三章 1:【王道考研 操作系统】【第三章】内存的基础知识 进程的运行原理 逻辑地址vs物理地址
第三章
2. 内存管理
2.1 内存空间的分配与回收
2.1.1 连续分配管理方式
连续分配:指为用户进程分配的必须是一个 连续的内存空间。
2.1.1.1 单一连续分配

2.1.1.2 固定分区分配


2.1.1.3 动态分区分配

用什么样的数据结构记录内存的使用情况?
当有很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?
2.1.1.4 动态分区分配算法
- 首次适应算法 First Fit:每次从低地址开始查找,找到第一个能满足大小的空闲分区。

- 最佳适应算法 Best Fit:为了保证当 ”大进程“ 到来时能有连续的大片空间,尽可能多地留下大片的空闲区,即优先选择更小的空闲区。(空闲链表需要重新排列)

- 最坏适应算法 Worst Fit:为了避免留下太多小碎片,分配时优先使用最大的空闲区。(空闲链表需要重新排列)

- 邻近适应算法 Next Fit:为了解决First Fit算法导致的低地址部分出现很多小的 空闲区,增加了查找的开销的问题,分配时从上次查找结束的位置开始检索。

- 总结

如何进行分区的分配与回收操作?
2.1.2 非连续分配管理方式
为用户进程分配的可以是一些 分散的内存空间。
2.1.2.1 基本分页存储管理
基本思想
把内存分为一个个大小相等的分区——页框 / 页帧,每个页框有一个编号,即 页框号,从0开始。(页框不能太大,否则可能产生过大的内部碎片)
将用户进程的地址空间也分为与页框大小相等的一个个区域——页 / 页面,每个页面也有一个编号,即 页号,从0开始。(进程的最后一个页面大小可能小于页框)

如何实现地址转换?



如何找到页号对应页面在内存中的起始地址——页表
为了能知道进程的每个页面在内存中存放的位置,操作系统要 为每个进程建立一张页表。

页号是隐含的?
基本地址变换机构
用于实现逻辑地址到物理地址转换的一组硬件机构。

流程:

注意!访问一个逻辑地址要访问两次内存。具有块表的地址变换机构
基本地址变换机构的改进版本。在基本地址变换机制中,每访问一个逻辑地址,都需要查询内存中的页表,可能连续很多次查到的都是同一个页表项,产生了重复查询。
1)局部性原理

2)快表又称 联想寄存器 TLB,是一种访问速度比内存块很多的高速缓冲存储器,用来存放当前访问的若干页表项,以加快地址变换的过程。与此对应,内存中的页表常称为 慢表。
3)引入快表后的地址变换过程

查询快表的速度比查询页表的速度快很多,因此只要快表命中,就可节省很多时间。4)与基本地址变换的差异

两级页表
1)单级页表存在的问题

2)两级页表的原理

3)地址转换的过程
4)补充

2.1.2.2 基本分段存储管理
与“分页”最大的区别就是——离散分配时所分配地址空间的基本单位不同。
基本原理
进程的地址空间:按照程序自身的逻辑关系 划分 为若干个 段,每个段都有一个 段名,每段从0开始编址。
内存分配规则:以段为单位进行分配,每个段 在内存中占据 连续空间,各段之间可不相邻。

分段系统的逻辑地址结构


段表
为每个进程建立一张段映射表,称为 段表。记录了各个逻辑段到实际物理内存地址的映射关系。

地址变换过程

- 分段、分页管理的对比




- 分段、分页管理的对比
2.1.2.3 段页式存储管理
分页、分段管理方式中最大的优缺点

段页式管理 = 分段 + 分页
将进程按逻辑模块分段,再将各段分页,再将内存空间分为大小相同的内存块,将进程的各页面分别装入各内存块中。

逻辑地址结构

分段对用户是可见的,程序员编程时需要显式地给出段号、段内地址;而将段分页对用户是不可见的,系统会根据段内地址自动划分页号和页内偏移地址。
因此,段页式管理的地址结构是二维的。
地址转换过程
一个进程会对应一个段表和多个页表。

