内存补充|青训营笔记

57 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 20 天

请求分页存储管理方式

请求分页=基本分页+请求调页功能+页面置换功能。触发缺页中断,将缺少的页从外存调入内存。

缺页中断

访问的页面不在内存,触发缺页中断,产生缺页中断信号,程序被中断,内核态的中断处理程序,将外存调入内存。

如果有空闲页分配空闲页,没有则选择淘汰页,淘汰页内内容如果更改则写回外存,没有则直接覆盖读取即可。

页面置换算法

最佳置换:淘汰后不再使用或最迟被用,无法实现

FIFO:会发生belady异常(分配的物理块越多,反而缺页可能更多,原因:换出页选的不好·)

LRU/LFU

时钟置换:访问置1,缺页则第一遍遍历淘汰0同时1变0,还没有就第二遍找0。淘汰0时优先淘汰没被修改的,修改的还要写到外存,这样可以减少IO次数

页分配策略:

固定分配局部替换 分配一定数量物理内存页,不够就自身换出一部分再换入新的
可变分配全局替换 只要缺页就分配新的内存页
可变分配局部替换 根据缺页率调整新的内存页/换出换入

MMU内存管理单元

虚拟地址和物理地址的转换,控制访问权限

TLB地址转换后援缓冲器:也叫快表,高速缓存,存放最可能访问的页表项。在用户进程切换时只需要flush掉其他用户进程的TLB内容,多个用户进程共享的内核部分的TLB不需要flush。在内核进程和用户进程切换时不需要flush。通过ASID在TLB中区分不同进程,可以不flush

 

段错误:用户访问虚拟地址,MMU查找后无权访问,产生异常,cpu执行异常处理,把进程终止