Cha8虚拟存储器
Cha8 虚拟存储器
要求掌握 程序的局部性,抖动 页表和段表的支持 地址转换过程 快表 替换策略
要求掌握 • 程序的局部性,抖动 • 页表和段表的支持 • 地址转换过程 • 快表 • 替换策略
分页与分段管理的突破 运行时动态的地址转换 允许程序在内存中分散存放 程序不必全部进入内存 驻留集 resident set
分页与分段管理的突破 • 运行时动态的地址转换 • 允许程序在内存中分散存放 • 程序不必全部进入内存 驻留集resident set
程序执行 1程序部分进入内存 a 1 3 OS 2页表显示内存错误 a3 3OS启动读盘 a1 240S调度另个作业 5读入要用的页 6结束时发出中断 b2 唤醒原进程 5 a3 6
程序执行 a1 a1 1 OS p1 2 b2 a3 3 4 a3 5 6 1程序部分进入内存 2页表显示内存错误 3OS启动读盘 4OS调度另个作业 5读入要用的页 6结束时发出中断 唤醒原进程
实存与虚存 内存中存放更多的进程 进程长度可以大于内存 实存 real memory 虚存 virtual memory
实存与虚存 • 实存real memory • 虚存virtual memory • 内存中存放更多的进程 • 进程长度可以大于内存
程序的局部性原理 °减少程序占用内存 °减少挂起时的传输量 °抖动 thrashing 刚刚被换出的页面很快又要用到 CPU忙于调出和调入页面 OS根据最近的历史猜测将来不会用到的页面
程序的局部性原理 • 减少程序占用内存 • 减少挂起时的传输量 • 抖动thrashing – 刚刚被换出的页面很快又要用到 – CPU忙于调出和调入页面 OS根据最近的历史猜测将来不会用到的页面
典型的内存管理格式 虚地址 虚地址 页号偏移量 段号偏移量 页表项 段表项 PM|其他页框号 M其他长度基地址 仅仅分页 仅仅分段 虚地址 修改位 段号页号偏移量 存在位 段表项 页表项 其他长度基地址PM其他页框号 分段和分页结合
典型的内存管理格式 页号 偏移量 P M 其他 页框号 虚地址 页表项 仅仅分页 段号 偏移量 虚地址 段表项 仅仅分段 段号 页号 偏移量 其他 长度 基地址 虚地址 段表项 分段和分页结合 P M 其他 页框号 页表项 P M 其他 长度 基地址 修改位 存在位
页表结构-两级页表 根页表 页面长度4K 页表项4字节 用户页表 用户地址空间 4M 4G
页表结构-两级页表 …… …… …… 用户地址空间 4G 用户页表 4M 根页表 4K 页面长度4K 页表项4字节
两级分页系统的地址转换 10位10位12位 页框偏移量 根页表指针 二级页表 一级页表
两级分页系统的地址转换 10位 10位 12位 根页表指针 + 页框 偏移量 二级页表 一级页表 +
页号偏移量 页框偏移量 页号表项指针 Hash函数 反向页表 Hash表 页表结构一反向页表
页表结构-反向页表 页号 表项 指针 页号 偏移量 页框 偏移量 Hash表 反向页表 Hash函数