【问题标题】:PC and CPU registers when context switching happens?发生上下文切换时的 PC 和 CPU 寄存器?
【发布时间】:2014-06-27 13:01:14
【问题描述】:

根据这个问题:Storing and retrieving process control block

PCB包含大量信息,由内核管理(避免用户访问)。

但我对 PC 和 CPU 寄存器有疑问。内核是在每次执行指令时保存这些值还是仅在上下文切换过程中保存这些值?

PCB是链表吗?

【问题讨论】:

    标签: operating-system context-switch


    【解决方案1】:

    其实CPU registers的值是按照指令的运行顺序修改的。

    说,Instruction Pointer 指向下一条要执行的指令,Stack Pointer,如果处于活动状态,会将最后一个程序请求的地址存储在堆栈中。等等。这些基本上都是CPU寄存器!

    PCB 有一部分Processor state data,就是那些部分 定义进程状态的信息 挂起,允许操作系统稍后重新启动它并仍然执行 正确。这总是包括 CPU 通用的内容 寄存器、CPU 进程状态字、堆栈和帧指针等。 在上下文切换期间,正在运行的进程停止,另一个 进程有机会运行。内核必须停止执行 正在运行的进程,将硬件寄存器中的值复制到 它的PCB,并用来自的值更新硬件寄存器 PCB的新工艺。 //(取自维基百科)

    内核是在每次执行指令时保存这些值还是仅在上下文切换过程中保存这些值?

    所以,您的问题可能已经解决了。内核只在上下文切换的情况下保存硬件(CPU)寄存器的值,而不是通常。否则,它会把负担留给process itself to maintain the registers

    另外,最后一个问题的答案是——PCB 的实现“通常”以doubly linked list data structure 的形式完成!

    【讨论】:

    • 首先感谢您的回复,我还有一个问题是工艺表PCB的双向链表形式?
    • 我认为它是使用双向链表实现的,但我不确定。你最好为此提出一个新问题,你可能会得到你的回应。也许,我会想出一些东西让你知道!
    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 2015-06-28
    • 2014-11-03
    • 2018-11-24
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多