强烈推荐https://toast-lab.sist.shanghaitech.edu.cn/courses/CS110%40ShanghaiTech/Spring-2023/labs/Camera.jar
注意:linux可能会出现显示不全。推荐windows系统。
我们的整个系统包含
Physical Memory(分为若干个page frame,通过page table中的frame number找到 frame,通过虚拟地址中的offset找到具体byte/word)
Virtual Memory:all the pages of virtual memory for this process
Translation Lookaside Buffer: 缓存区(每一行包括:virtual pagenumber与Physical Page Number)
Page Table:每一行(PTE,page table entry,页表条目)包括(Frame number与Valid Bit)
首先,我们拆分地址为PAGE与OFFSET两部分。随后在TLB中依据PAGE遍历寻找,如果没有找到则发生TLB miss
前往page table的对应PTE寻找,如果virtual page number 所对应的该page table entry的valid bit是0,则发生page fault(page table中未保存说明Physical Memory中没有存储相应的数据)。
于是,我们将page从hard disk 中写入physical memory。
如果physical memory有空位,则将数据读入第一个available frame。
如果phisical memory已满,我们需要按照一定策略替换某个page frame。随后我们将替换出来的page frame 原本对应的PTE(page table 中含有 frame number记录)的valid bit置为0. 随后,将新的page frame与page table entry的关系更新进TLB与page table(也就虚拟地址page号与物理地址page号)
最后生成物理地址:page frame(page bit)+ offset(offset bit)
最值得注意的是:page hits+page faults = TLB misses