让我们说进程p1
正在使用自己的地址空间(堆栈,堆,文本)执行。当上下文切换发生时,我知道在加载进程p2
之前,所有当前的cpu寄存器都被推入PCB。然后刷新TLB并加载p2
地址映射并开始使用自己的地址空间执行。
我想知道的是p1
地址空间的状态。是否会在加载进程p2
之前将其复制到磁盘并更新其页表?
答案 0 :(得分:2)
上下文切换的细节取决于底层硬件。但是,即使在不同的系统中,上下文切换也基本相同。
你遇到的错误是“我知道在加载进程p2之前所有当前的cpu寄存器都被压入堆栈”。寄存器存储在存储器区域中,该区域通常称为PROCESS CONTEXT BLOCK(或PCB),其结构由处理器定义。大多数处理器具有用于将过程上下文(即,其寄存器)加载和保存到该结构中的指令。在英特尔的情况下,由于所有不同的寄存器组(例如FPU,MMX),这可能需要多个指令保存到多个块。
不必将传出进程写入磁盘。如果系统需要更多内存,它可能会被分页,但它可能完全保留在内存中并准备好执行。
上下文切换只是将一个处理器保存的寄存器值替换为另一个处理器。