3.1.1 内存管理的概念
内存分配与回收 地址转换 空间扩充 存储保护
链接 将编译后的目标模块与库函数连接在一起
装入 绝对装入 可重定位装入(地址变换在装入时一次性完成) 动态运行时装入(与基址相加)
内存保护
3.1.2 覆盖与交换
覆盖 程序活跃部分放在固定区;不活跃部分按调用关系分段,要访问的段放入覆盖区,其他段放在外存中;需要调用前将其放入覆盖区
交换 将处于阻塞状态的程序从内存移动到外存;或者相反的过程
交换技术在不同进程之间进行,覆盖技术在同一程序中进行。
3.1.3 连续分配管理方式(为一个用户程序分配一个连续的内存空间)
单一分配 固定分区分配 动态分配(首次适应,找最前;最佳适应,找最小;最坏适应,找最大;临近适应,找离上次查找最近)
3.1.4 非连续分配
基本分页存储 将内存空间划分为固定大小的块 进程执行时以块为单位申请内存空间
快表 联想寄存器TLB 加速查找过程
基本分段存储 把用户的地址空间划分为若干段(段内要求连续 段间不要求连续)
段页式管理方式
3.2 虚拟内存管理
3.2.1 虚拟内存的概念
时间局部性: 同一指令以后会再次执行;
空间局部性: 一旦程序访问了某个存储单元, 该附近的存储单元也会被访问
虚拟存储器 提供了部分装入 请求调入和置换功能的 比实际物理内存大得多的存储器
3.2.2 请求分页管理
页表 缺页中断机构 地址变换机构
3.2.3 页面置换算法
最佳置换 淘汰以后永不使用的页面
先进先出 移除驻留时间最长的页面(违背局部性原理)
最近最久未使用LRU 移除最近最长时间没有访问的页面 理由是: 长时间未访问, 以后也不太可能访问了; 那些刚刚访问过的, 以后很可能再次访问; 这是局部性原理
时钟算法CLOCK/NRU 试图用比较小的开销接近LRU的性能 查找和替换访问位为0的帧就是查找最长时间没有访问的帧
3.2.4 页面分配策略
3.2.5 抖动 频繁的页面调度称为抖动