3.3 虚拟内存
每个程序拥有的地址空间被分为很多块,每一块称为一页page,page被映射到物理内存。当程序用到的部分不在物理空间时,产生缺页中断;
分页:
1.程序产生的地址称为虚拟地址,构成的空间称为虚拟地址空间;
地址空间的单元称为页面,在物理内存对应的单元称为页框;
2.虚拟地址送给MMU,MMU转换为物理地址;
3.页表:
本质:虚拟地址到页框的映射;
结构:页框号、访问位、在/不在位、等
加速分页:TLB,一个硬件结构,加速找到页框,传入虚拟页号;
多级页表:页表项太多,放在内存占空间;
倒排页表:一个页框对应一个页面;
3.4 页面置换算法
1.最优页面置换算法;
2.最近未使用页面置换算法
3.FIFO
4.第二次机会页面置换算法(FIFO改进,R位)
5.时钟页面置换算法:第二次机会的时钟版(时钟驱动,其余的是任务驱动,新任务进来才换)
6.LRU算法
7.工作集页面置换算法
8.工作集时钟页面置换算法
进程正在使用的页面的集合称为工作集;
最好的算法:老化算法和工作集时钟;
3.5 分页系统设计
1.局部分配策略和全局分配策略
局部:只为单个进程分配和置换,自己处理自己的
全局:在所有运行的进程考虑和动态分配;
2.共享页面
共享I空间;
共享数据:fork,写时复制;
3.动态库
减小可执行文件大小和内存空间;
共享库函数修改后不需要重新编译主程序;
3.6 分页系统实现
1.上下文切换(进程调度):重置MMU、TLB,加载页表;
2.缺页中断:
流程:
陷入内核;
启动汇编,保存寄存器;
分段与分页:
虚拟地址分为段号和段内地址,段内地址有页号和业内偏移量;