【发布时间】:2014-06-27 13:01:14
【问题描述】:
根据这个问题:Storing and retrieving process control block
PCB包含大量信息,由内核管理(避免用户访问)。
但我对 PC 和 CPU 寄存器有疑问。内核是在每次执行指令时保存这些值还是仅在上下文切换过程中保存这些值?
PCB是链表吗?
【问题讨论】:
标签: operating-system context-switch
根据这个问题:Storing and retrieving process control block
PCB包含大量信息,由内核管理(避免用户访问)。
但我对 PC 和 CPU 寄存器有疑问。内核是在每次执行指令时保存这些值还是仅在上下文切换过程中保存这些值?
PCB是链表吗?
【问题讨论】:
标签: operating-system context-switch
其实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 的形式完成!
【讨论】: