内存管理
# 基本概念
# 内存分页和内存分段
内存分页分为一个页号还有一个偏移量,我们通过页号查找页表,找出对应地址,然后加上偏移量就可以得到最终地址
内存分段的步骤如下
- 先提取段号
- 然后查找段表找出这段的起始物理地址
- 然后比较偏移量和端长度,如果超出则无效
- 物理地址等于 端起始地址+段内偏移量
# 内存置换算法
- 最佳页面置换算法OPT(Optimal replacement algorithm) 置换以后不需要或者最远的将来才需要的页面,是一种理论上的算法,是最优策略;
- 先进先出FIFO 置换在内存中驻留时间最长的页面。缺点:有可能将那些经常被访问的页面也被换出,从而使缺页率升高;
- 第二次机会算法SCR 按FIFO选择某一页面,若其访问位为1,给第二次机会,并将访问位置0;
- 时钟算法 Clock:SCR中需要将页面在链表中移动(第二次机会的时候要将这个页面从链表头移到链表尾),时钟算法使用环形链表,再使用一个指针指向最老的页面,避免了移动页面的开销;
- 最近未使用算法NRU(Not Recently Used) 检查访问位R、修改位M,优先置换R=M=0,其次是(R=0, M=1);
- 最近最少使用算法LRU(Least Recently Used) 置换出未使用时间最长的一页;实现方式:维护时间戳,或者维护一个所有页面的链表。当一个页面被访问时,将这个页面移到链表表头。这样就能保证链表表尾的页面是最近最久未访问的。
- 最不经常使用算法NFU 置换出访问次数最少的页面
# 内部碎片和外部碎片
- 内部碎片:已经被分配出去的的内存空间不经常使用,并且分配出去的内存空间大于请求所需的内存空间。
- 外部碎片:指可用空间还没有分配出去,但是可用空间由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。
# 快表 TLB
也叫地址转换后援缓冲器
实质是cache,它所缓存的是最近使用的数据的页表项(虚拟地址到物理地址的映射)。他的出现是为了加快访问数据(内存)的速度,减少重复的页表查找。当然它不是必须要有的。
# 内存管理单元 MMU
是一种负责处理CPU内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换、内存保护、中央处理器高速缓存的控制。现代 CPU 基本上都选择了使用 MMU。
# Linux内存管理
这东西比较复杂,先暂时不深入,后续再研究研究
编辑 (opens new window)
上次更新: 2021/04/15, 20:11:12