基础概念
- 程序的装入
- 绝对装入:编译时确定最终物理地址,装入时直接放入指定内存位置。
- 静态重定位:编译时生成相对地址,装入时一次性修改为物理地址。
- 动态重定位:运行时通过 MMU 将逻辑地址映射为物理地址。
- 程序的链接
- 静态链接:把依赖代码复制进最终可执行文件。
- 装入时链接:程序启动时加载并解析所有需要的动态库。
- 运行时链接:程序运行过程中按需加载和解析动态库。
内存空间的分配与回收
连续分配管理方式
一个进程占用一段连续物理内存
- 单一连续分配
- 整个内存分配给一个用户程序
- 固定分区分配
- 内存划分为若干固定大小分区
- 分区大小可相同或不同
- 动态分区分配
- 根据程序需求动态划分内存
动态分区分配算法
- 首次适应(First Fit)
- 按地址递增顺序查找
- 选择第一个满足要求的空闲分区
- 最佳适应(Best Fit)
- 按容量递增顺序查找
- 选择最小且满足要求的空闲分区
- 最坏适应(Worst Fit)
- 按容量递减顺序查找
- 选择最大的空闲分区
- 邻近适应(Next Fit)
- 首次适应的改进版
- 从上次查找结束位置继续查找
- 选择第一个满足要求的空闲分区
非连续分配管理方式
- 页式存储管理


- 快表(TLB):


- 段式存储管理

缺页与页面置换
- 缺页中断:访问页面不在内存时产生
- 页面置换:缺页且内存已满时发生
- 页面置换一定由缺页中断触发
- 缺页中断不一定导致页面置换
页面淘汰(置换)算法
- FIFO:淘汰最先进入内存的页
- LRU:淘汰最近最久未被访问的页
- LFU:淘汰最近最少未被访问的页
- OPT :淘汰未来最长时间不会被访问的页(无法实现)
例题
