我对操作系统中的内存管理有疑问,我知道缓存是用来加速内存访问的临时存储位置,而tlb则用来加速从虚拟地址到物理地址的转换。
现在,如果生成了一个虚拟内存地址,第一步是什么?
如果第一步是引用tlb并生成物理地址,那么第二步是什么?(是否指缓存以查看该数据是否存储在缓存中)?
现代计算机使用TLB吗?
CPU如何知道页表的位置?
最佳答案
这取决于你所说的“生成”是什么意思。如果您真正的意思是“read”,那么第一步将是查看tlb(如果地址已经被转换),或者,如果您的缓存支持虚拟地址,则查看缓存本身是否有与该虚拟地址相对应的条目(如果它属于适当的进程,虚拟地址本身是不够的)。
如果第一步是虚拟到物理的转换,则缓存用于物理地址。假设您想读取,那么下一步实际上是查看缓存。
是的。大多数使用虚拟内存的处理器都使用TLB。
是的,但是这取决于你的架构。例如,在英特尔(x86)处理器上,页表指针存储在cr3
寄存器中。