让我们关注单处理器计算机系统。据我所知,当创建进程时,就会建立页表,将虚拟地址映射到物理内存地址空间。每个进程都有自己的页表,存储在内核地址空间中。但是,由于不仅有一个进程在运行,并且会发生很多上下文切换,MMU 如何为进程选择正确的页表呢?
任何帮助表示赞赏!
最好的,
西蒙
处理器有一个特权寄存器,称为页表基址寄存器 (PTBR),在 x86 上它是CR3。在上下文切换时,操作系统会更改 PTBR 的值,以便处理器现在知道要使用哪个页表。除了 PTBR 之外,许多现代处理器还有地址空间编号 (ASN) 的概念。进程被赋予一个地址空间编号(来自有限池),并且该 ASN 也被设置在上下文切换的寄存器中。该 ASN 用作 TLB 匹配的一部分,并允许来自多个地址空间的 TLB 条目共存。仅当 ASN 被重用时才需要刷新 TLB,并且仅针对与该 ASN 匹配的条目。大多数 x86 实现比这更粗粒度,并且存在全局页面的概念(用于共享库和共享数据)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)