第一章:【王道考研 操作系统】【第一章】操作系统的概述、特征、发展、体系结构 中断与系统调用
第二章:【王道考研 操作系统】【第二章】进程概念 进程控制 进程通信 线程概念和多线程模型
【王道考研 操作系统】【第二章】处理机调度 进程调度算法
【王道考研 操作系统】【第二章】进程同步、进程互斥的实现方法 软件&硬件 优点&缺点 信号量机制
【王道考研 操作系统】【第二章】管程 用管程解决进程互斥和同步问题
【王道考研 操作系统】【第二章】死锁的概念 预防死锁 避免死锁 死锁的检测和解除
第三章 1:【王道考研 操作系统】【第三章】内存的基础知识 进程的运行原理 逻辑地址vs物理地址
第三章 2.1:【王道考研 操作系统】【第三章】内存空间的分配与回收 连续分配 动态分区分配算法 分页式、分段式、段页式存储管理
第三章
2. 内存管理
2.2 内存空间扩充
提供某种技术从逻辑上对内存空间进行扩充。
2.2.1 覆盖技术
内存分为一个 固定区 和 若干个 覆盖区。常驻内存的段放在固定区中,调入后不再调出;不常用的段放在覆盖区,需要时调入内存,用不到时调出内存(不会同时访问的程序共享同一覆盖区)。
2.2.2 交换技术
内存空间紧张时,系统将内存中某些进程暂时 换出 外存,把外存中某些已具备运行条件的进程 换入 内存(进程在内存与磁盘间动态调度)。
2.2.3 虚拟存储技术
-
传统存储管理方式的特征、特点
-
局部性原理
高速缓冲技术:将近期会频繁访问到的数据放到更高速的存储器中。
-
虚拟内存
操作系统的虚拟性:实际的物理内存大小没有变,只是在逻辑上进行了扩充。
虚拟内存的三个主要 特征:
-
如何实现?
虚拟内存的实现需要建立在 离散分配 的内存管理方式基础上。
2.2.3.1 请求分页存储管理
-
页表机制
为实现 “请求调页”,操作系统需要知道每个页面是否已经调入内存;若还没调入,则需要知道该页面在外存中存放的位置。
为实现 “页面置换”,操作系统需要通过某些指标 (是否被修改) 来决定换出哪些页面:没被修改过的页面就不用再写回外存;修改过的页面需要将外存中的旧数据覆盖。
请求页表 中的特殊字段:状态位、访问字段、修改位、外存地址。
-
缺页中断机构
缺页中断是因为当前执行的指令想要访问的目标也秒未调入内存而产生的,因此属于 内中断。一条指令在执行期间,可能产生多次缺页中断。
-
地址变换机构
注意!快表中的页面一定是在内存中的!若某个页面被换出外存,则快表中的相应表项要删除。
换入换出页面都需要启动慢速的I/O操作,如果过于频繁,会产生很大的开销。
页面调入内存后,需要修改慢表,也需要将表项复制到快表中。
2.2.3.2 页面置换算法
若内存空间不够,由操作系统负责 将内存中暂时用不到的信息换出外存。
缺页率 = 缺页中断次数 / 总访问次数。缺页时未必发生页面置换,因为如果有可用的空闲内存块,就不用进行页面置换。
-
最佳置换 OPT (Optimal):每次选择淘汰的页面将是 以后永不使用 / 在最长时间内不再被访问 的页面,以保证最低的缺页率。
缺页率 = 9 / 20 = 45%
-
先入先出置换 FIFO:每次选择淘汰的页面是 最早进入内存 的页面。
把调入内存的页面根据调入顺序排成一个队列,换出时选择队头页面即可。
缺页率 = 9 / 20 = 45%
-
最近最久未使用置换 LRU (Least Recently Used):每次淘汰 最近最久未使用 的页面。
页表项中用 访问字段 记录该页面自上次被访问以来经历的时间t,换出时选择t最大的页面。
该算法的实现需要专门的硬件支持,性能好,但实现困难、开销大。
-
时钟置换 CLOCK
又称为 最近未用算法 NRU (Not Recently Used),此算法的性能和开销较均衡。
页表项中用 访问字段 记录该页面最近是否有被访问过。
-
改进型时钟置换
除了考虑一个页面最近有没有被访问过,还应考虑页面有没有被修改过。在其他条件都相同时,应 优先淘汰没有修改过的页面,避免I/O操作。
页表项中用 修改位 记录该页面是否有被修改过。
- 总结:
2.2.3.3 页面分配策略
-
驻留集
指请求分页存储管理中给进程分配的物理块的集合。若采用了虚拟存储技术,驻留集大小一般小于进程的总大小。
-
页面分配、置换策略
-
何时调入页面?
-
从何处调入页面?
-
抖动 / 颠簸 现象
刚刚换出的页面马上又换入内存,刚刚换入的页面又换出,频繁的页面调度。
产生抖动的主要原因:进程频繁访问的页面数目高于可用的物理块数(分配给进程的物理块不够)
-
工作集
在某段时间间隔里,进程实际访问页面的集合。
2.3 地址转换
负责程序的逻辑地址与物理地址的转换。
2.4 存储保护
保证各进程在各自存储空间内运行,互不干扰。