存储器管理
- 内存:存放数据的硬件,程序执行前需要先放到内存中才能被CPU处理。
- 从写程序到程序运行:
- 编辑源代码文件
- 编译:由源代码文件生成目标模块(高级语言“翻译”为机器语言)
- 链接:由目标模块生成装入模块, 链接后形成完整的逻辑地址
- 装入:将装入模块装入内存,装入后形成物理地址
- 指令的工作原理:操作码+若干参数(可能包含地址参数)
- 以下为内存管理技术:
- 操作系统负责内存空间的分配与回收:
- 单一连续分配:内存中只能有一道用户程序
- 固定分区分配:缺乏灵活性、分区说明表、
- 动态分区分配:使用空闲分区表/链来记录内存的使用情况、拼凑技术解决外部碎片问题
- 非连续分配管理方式:
- 基本分页存储管理:基本地址变换机构(页表、页号、两次访存)、具有快表的地址变换机构(快表命中只需一次访存,未命中则两次访存)、两级页表(多查一级页表)
- 基本分段存储管理:页是物理单位而段是逻辑单位
- 段页式存储管理
- 虚拟技术:操作系统从逻辑上对内存空间进行扩充。
- 操作系统负责实现程序的逻辑地址与物理地址的转换。
- 三种装入方式:
- 绝对装入
- 可重定位装入
- 动态运行时装入(需要设置重定位寄存器,又称为基址寄存器):在现代操作系统中使用
- 内存保护:进程只能访问自己的内存空间,不会越界访问。
- 覆盖技术:缺点-对用户不透明
- 交换技术:具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两个部分、优先换出阻塞进程或优先级比较低的进程(有的系统会考虑进程在内存的驻留时间)、PCB会常驻内存。
- 覆盖与交换的区别:覆盖是在同一程序或进程中(自身的相互覆盖)的,交换是在不同进程(或作业)之间的。
- 高速缓存技术:根据局部性原理,近期频繁访问的数据放到更加高速的存储器中
- 虚拟内存:由操作系统负责将内存中暂时用不到的信息换出到外存,因此在用户看来似乎有一个比实际内存大得多的内存,即虚拟内存。
- 虚拟内存技术:离散分配的内存管理方式。“请求调页/调段(由操作系统从外存调入)”
- 1-请求分页管理方式:页表机制、缺页中断机构(内中断)、地址变换机构
- 1-1-页面置换算法:决定换出哪个页面、追求最少的缺页率
- 最佳置换算法OPT
- 先进先出置换算法FIFO
- 最近最久未使用置换算法LRU
- 时钟置换算法CLOCK
- 改进型的时钟置换算法
- 2-页面分配策略:驻留集、工作集、抖动(颠簸)现象