Process 系统如何选择正确的页表?

Process 系统如何选择正确的页表?,process,x86,computer-science,processor,computer-architecture,Process,X86,Computer Science,Processor,Computer Architecture,让我们关注单处理器计算机系统。据我所知,当创建一个进程时,会设置页表,将虚拟地址映射到物理内存地址空间。每个进程都有自己的页表,存储在内核地址空间中。但是,既然不仅有一个进程在运行,而且会发生许多上下文切换,MMU如何为该进程选择正确的页表呢 感谢您的帮助 最好的, Simon在这种情况下,MMU完全不知道流程是什么。操作系统跟踪进程,正如您所说,在创建进程时,它会为每个进程生成一个页表。上下文切换的过程如下所示: 操作系统告诉MMU使用位于物理地址0xFOO的页表 操作系统对可编程中断计时器(

让我们关注单处理器计算机系统。据我所知,当创建一个进程时,会设置页表,将虚拟地址映射到物理内存地址空间。每个进程都有自己的页表,存储在内核地址空间中。但是,既然不仅有一个进程在运行,而且会发生许多上下文切换,MMU如何为该进程选择正确的页表呢

感谢您的帮助

最好的,
Simon

在这种情况下,MMU完全不知道流程是什么。操作系统跟踪进程,正如您所说,在创建进程时,它会为每个进程生成一个页表。上下文切换的过程如下所示:

  • 操作系统告诉MMU使用位于物理地址0xFOO的页表

  • 操作系统对可编程中断计时器(PIT)进行编程,以在BAR毫秒后引起硬件中断

  • 操作系统恢复进程状态(CPU寄存器、程序计数器等)并跳转到正确的地址

  • 进程一直运行,直到PIT触发中断

  • 处理PIT中断的操作系统例程随后保存程序状态(寄存器等),使用调度算法确定要运行的下一个进程(在简单情况下为循环链表),然后在步骤1重新开始


  • 我希望这能消除你的疑虑。简短的回答是:MMU是进程不可知的,不知道进程是什么。

    处理器有一个特权寄存器,称为页表基址寄存器(PTBR),在x86上是。在上下文开关上,操作系统更改PTBR的值,以便处理器现在知道要使用哪个页表。除了PTBR之外,许多现代处理器都有地址空间号(ASN)的概念。进程被赋予一个地址空间号(来自一个有限的池),这个ASN也被设置在上下文开关的寄存器中。此ASN用作TLB匹配的一部分,并允许来自多个地址空间的TLB条目共存。只有在重新使用ASN时,才需要刷新TLB,然后才需要刷新与该ASN匹配的条目。大多数x86实现都比这更粗粒度,并且有全局页面的概念(用于共享库和共享数据)。

    感谢您的快速回复。那么你说操作系统会刷新和恢复每个上下文开关上的页表?@user1435023。操作系统将表作为指针告知MMU在物理内存中的位置,然后MMU处理TTL刷新和其他硬件任务。根据MMU的不同,操作系统可以对低级细节进行更细粒度的控制,但这并不是严格必要的。在最简单的层面上,操作系统关心的只是告诉MMU使用哪个页面表。@user143523更正:是指上面的TLB,而不是TTL。Nathan Binkert回答了更多关于TLB方面的问题