一:判断高速缓存Cache的TLB中是否有页表项对应
若有,就已经可以得到物理地址了
若无
二:判断主存的各页框中是否有对应的页表
若有,则更新TLB并且转换得物理地址
(注意:转换是由MMU完成的)
若无
PS:程序通常只涉及到逻辑地址—而逻辑地址并不对应真实的物理地址
需要用逻辑地址在页表中查对应的主存块号
逻辑地址的组成:页表页号,页内地址即页框号
(页表内有若干页框,页框的组成:主存块号,块内地址)
三:产生缺页中断,当前进程会暂时挂起,等待主存更新对应的页表
首先查看主存中是否存在空闲页框
若有,则直接从磁盘中读入对应的页表
若无
四:运行替换算法
此时,已有对应页表,则更新TLB并得到物理地址
五:判断物理地址是否在Cache中(从TLB得到物理地址则直接跳到这步)
若有,则访问之
若无
Ps:这时的地址组成:主存块号,块内地址,已经算是物理地址了
而不是我们程序中说的逻辑地址
六:产生Cache缺失中断,进程挂起,再判断Cache是否有空闲行
若有,则把对应主存快送入Cache
若无
七:运行Cache的替换算法
然后CPU就可以到Cache中访问数据了