【问题标题】:Context switch of a process and memory changes进程的上下文切换和内存变化
【发布时间】:2014-08-25 16:34:49
【问题描述】:

我不明白上下文切换完整操作。

当一个正在运行的进程 A 由于调度程序而进入就绪/阻塞状态以支持另一个进程 B 时,调度程序将 A 的 PSW 和 GPR 保存在其 PCB 中,并将 B 的 PSW 和 GPR 存储到 CPU 中。 所以PCB的队列被更新了。

进程 A 使用的帧(代码/数据/堆栈)呢?它们是交换到交换区还是保留在内存中?

A 的页表还在内存中吗? 进程的页表是否在进程创建时保存到内存中?或者什么时候进入运行状态?

A 的打开文件表呢?

我想了解进程上下文切换的准确操作,因为重要的是要看到线程的速度上下文切换和进程的繁重的上下文切换之间的差异。

【问题讨论】:

    标签: memory process operating-system switch-statement context-switch


    【解决方案1】:

    这都是系统特定的。在硬件a级别,上下文切换通常只是将寄存器保存到上下文块中并从另一个上下文块中读取寄存器。

    非活动进程的页表可能会或可能不会保留在内存中。这完全取决于操作系统的内存管理。通常,操作系统会将它们保留在物理内存中,直到其他东西需要该内存为止。

    【讨论】:

    • 正如我所说的......与线程一相比,进程上下文切换所做的额外操作是什么?
    • 线程上下文切换通常只需要保存/更改通用寄存器。进程上下文切换需要更改地址空间(线程切换不需要)。
    • 地址空间变化是什么意思?
    猜你喜欢
    • 1970-01-01
    • 2017-09-09
    • 2011-07-23
    • 2011-07-27
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多