虚拟内存地址 = (虚拟内存页号,内存页内偏移)
物理内存地址 = (物理内存页号,内存页内偏移)
if 查快表,虚拟内存页在TLB中 then
case 1:
虚拟内存页号 to 物理内存页号;
else // 查快表,虚拟内存页不在TLB中
if 查内表,虚拟内存页有对应的物理内存页 then
case 2:
更新TLB;
goto case 1;
else // 查内表,虚拟内存页没有对应的物理内存页
缺页中断;
if 查外表,虚拟内存页有对应的外存页 then
if 有空闲的物理内存页 then
case 3:
装入对应的外存页到空闲的物理内存页,更新内表;
goto case 2;
else // 没有空闲的物理内存页
case 4:
换出某一物理内存页,更新内表、TLB(若牵扯)、缓存线(若牵扯)、外表;
换入对应的外存页,更新外表、内表;
goto case 2;
end if
else // 查外表,虚拟内存页没有对应的外存页
case 5:
错误;
end if
end if
end if
虚拟内存页号 to 物理内存页号
最新推荐文章于 2023-11-22 14:57:56 发布