【发布时间】:2012-08-27 13:07:25
【问题描述】:
我在Galvin的书中读到,将cpu从一个进程切换到另一个进程需要保留当前进程的地址空间。为什么需要保留这个地址空间?
【问题讨论】:
-
假设我正确理解了这个问题,如果没有,您认为会发生什么?
-
我感觉他指的是上下文,而不是地址空间。
我在Galvin的书中读到,将cpu从一个进程切换到另一个进程需要保留当前进程的地址空间。为什么需要保留这个地址空间?
【问题讨论】:
通过地址空间,我想你是想问为什么在上下文切换时需要保存进程的页表。
想象一下,当一个进程在上下文切换时,虚拟页100映射到物理页400。这个信息保存在这个进程对应的页表中。如果在上下文切换时没有保存这个表,下一次这个进程计划运行我们将如何知道虚拟页面 100 在物理空间中的映射位置。保存页表可以为您提供有关虚拟到物理地址映射的信息。
实际上发生的情况是,当发生上下文切换时,x86 上的寄存器 (cr3) 保存一个指向页表的指针,当发生上下文切换时,它指向一个新表,因此虚拟到物理的映射当我们进行地址转换时,新流程可用。
【讨论】: