【问题标题】:How processor get to know to switch process with high prioirity process?处理器如何知道切换具有高优先级进程的进程?
【发布时间】:2014-09-15 23:38:45
【问题描述】:

我认为,进程调度器将替换当前正在由 cpu 处理的进程 具有高优先级的进程。在调度程序正在运行以通知 cpu 有关高优先级进程的情况下,当 cpu 忙于执行低优先级进程时,处理器将在任何时候只执行一个进程?

【问题讨论】:

  • @shekharsuman - 不要让张贴者接受你的答案,尤其是在它只有几分钟的时候。
  • @ChrisStratton-对不起!我正在删除我的评论。但是,实际上,我已经厌倦了关于堆栈溢出的不被接受和不赞成的答案。 Stack Exchange Meta 中也提到了请接受所有有效的正确答案并对其进行投票。SORRY though,但如果我是唯一的回答者,这是我的习惯!我会尽力处理的。

标签: process linux-kernel operating-system process-management


【解决方案1】:

进程调度器是操作系统的组件 负责决定当前运行的进程是否应该 继续运行,如果没有,接下来应该运行哪个进程。

为了帮助调度程序监控 processes 和他们使用的 CPU 时间量,a programmable interval timer interrupts the processor periodically (typically 50 or 60 times per second)。该定时器在操作系统自身初始化时被编程。在每次中断时,操作系统的调度程序开始运行并决定是否应该允许当前运行的进程继续运行,或者是否应该暂停它并允许另一个准备好的进程运行。这是用于抢占式调度的机制。

所以,基本上,进程调度程序运行在同一个主内存when active,但只有在被中断调用后才被激活。因此,它们并非一直在运行。

顺便说一句,这是一个很好的概念性问题。祝你的话题好运。

【讨论】:

    【解决方案2】:

    高优先级线程/进程将在中断导致调度程序运行时抢占低优先级线程以决定接下来运行哪组线程,并且调度程序算法决定低优先级线程需要被更高优先级的替换。

    中断有两种形式:

    1. 软件中断,(系统调用)来自已经在运行的线程并改变线程的状态,例如。通过向另一个线程正在等待的事件、互斥体或信号量发出信号,使其准备好运行。

    2. 导致驱动程序运行的硬件中断,并且该驱动程序选择在退出时调用调度程序,因为 I/O 操作已完成或某个超时间隔已过期,需要更改运行线程集(例如. 磁盘、网卡、KB、鼠标、计时器)。

    【讨论】:

    • 这是一个持续检查未决进程的定时器中断吗?
    • @user2773010-是的,这个计时器中断可以检查正在运行的进程或将由进程调度程序调度的进程!
    猜你喜欢
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2011-06-25
    • 2017-02-17
    • 2023-03-11
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多