sai*_*imn 7 x86 computer-science processor process computer-architecture
让我们关注单处理器计算机系统.创建进程时,据我所知,页面表会被设置,将虚拟地址映射到物理内存地址空间.每个进程都有自己的页表,存储在内核地址空间中.但是MMU如何为流程选择正确的页面表,因为不仅有一个流程在运行,而且会发生许多上下文切换?
任何帮助表示赞赏!
最好,西蒙
在这种情况下,MMU 完全不知道进程是什么。正如您所说,跟踪进程的操作系统会在创建每个进程时为每个进程生成一个页表。上下文切换的流程如下:
操作系统告诉MMU使用位于物理地址0xFOO的页表
操作系统对可编程中断定时器 (PIT) 进行编程,以在 BAR 毫秒后引发硬件中断。
操作系统恢复进程状态(CPU寄存器、程序计数器等)并跳转到正确的地址。
该进程一直运行,直到 PIT 触发中断。
然后,用于处理 PIT 中断的操作系统例程保存程序状态(寄存器等),使用调度算法来确定要运行的下一个进程(在简单的情况下,是循环链表),然后从步骤 1 重新开始。
我希望这能消除您的任何疑虑。简短的回答是:MMU 与进程无关,并且不知道进程是什么。