【问题标题】:Process information when interrupted: stack or process control block中断时的进程信息:堆栈或进程控制块
【发布时间】:2014-07-19 20:54:27
【问题描述】:

我正在学习操作系统课程,我们有关于进程的这一章。在本章中,我们定义了进程控制块,它保存有关进程的信息,例如程序计数器、寄存器内容、状态、优先级等。在本章中,它说当处理器(通过中断)切换到另一个进程时,信息将保存在这个进程控制块(PC,寄存器,......)中。在另一章(1.4 中断)中,它说当一个进程被中断时,PSW、PC 和寄存器被放入堆栈,当处理器重新控制这个进程时,它会从堆栈中取出它。

对于发生中断时会发生什么,这里似乎有两种不同的解释。它们是同时发生还是什么?谁能给我解释一下?

提前致谢 砂光机

【问题讨论】:

    标签: process stack controls block interrupt


    【解决方案1】:

    将中断视为函数调用,不同之处在于它将更多信息存储在堆栈上,并且在任何时间中断程序指令的正常流程时发生。因此,如果中断处理函数决定只从中断调用中返回,则从堆栈中恢复状态。

    否则,如果在中断调用内部,OS决定抢占当前用户进程,它会将所有进程状态保存到PCB,并将堆栈切换到另一个进程。

    顺便说一句,切换到另一个进程不仅可以通过中断发生,而且可以在对 OS 内核 API(系统调用)的任何正常调用期间发生。

    【讨论】:

    • 那么当处理器从短期队列中接管一个新进程时,某个进程的PCB去哪了?该过程的PCB是否保留在内存中?因此,如果我理解正确,如果是中断,信息会被放入堆栈,这意味着进程尚未暂停,但处理器被分配给例如当整个进程暂停(中断或系统调用?)并且另一个进程在处理器中占据位置时,I/O 控制器和信息被放入 PCB(或更新)?
    • PCB 始终在内存中。根据en.m.wikipedia.org/wiki/Process_control_block,它可以是内核堆栈的一部分
    • 谢谢你,安东。星期一我有一个关于操作系统(Stallings)的考试,你提供的信息一定会帮助我理解!
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2019-03-29
    • 2022-01-05
    • 2016-02-26
    • 2010-12-29
    • 2013-04-13
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多