【问题标题】:What is preemptive multitasking?什么是抢先式多任务?
【发布时间】:2011-04-30 11:28:29
【问题描述】:

什么是抢先式多任务处理?谷歌搜索后我找不到答案,有人可以帮我吗?

【问题讨论】:

  • 你对谷歌搜索是认真的吗?看起来我们有不同版本的谷歌
  • 拼写编辑 - 也许您没有得到搜索结果的原因是它拼写为 preemptive
  • 是的,@Ron Warholic,这可能是它没有出现的原因。
  • @Bobby & @RON 我不知道它是什么!!!!这是我的采访 Q 之一,当我寻找它时,我只是没有看到它......(我不是英语母语,所以我可能不知道什么是抢占但嘲笑别人和那里的分数不是帮助他们的最佳方式...:( )

标签: multitasking


【解决方案1】:

如果一个进程是抢占式的,那么它可以被外部中断(陷阱)停止并发送到就绪队列。

  1. 当进程从运行状态切换到等待状态时(例如,作为 I/O 请求的结果或调用 wait() 以终止子进程)
  2. 当进程从运行状态切换到就绪状态时(例如,发生中断时)
  3. 当进程从等待状态切换到就绪状态时(例如,在 I/O 完成时)
  4. 进程终止时

对于情况1和4,不存在抢占式

【讨论】:

    【解决方案2】:

    抢先式多任务需要两个主要组件:一个定时器中断(比如每 10 毫秒)和一个“连接”到该中断的调度程序。然后调度程序将“中断/抢占”任务的“上下文”(这是所有寄存器/堆栈指针的花哨术语)保存在某个区域(如堆栈)中,然后通过其调度算法确定哪个(其他)任务可以“跑”下一个。 如果找到,它会展开/恢复该任务的上下文并从定时器中断返回。顺便说一句,就像放置返回地址的“调用”(通常是在堆栈上调用指令之后的地址,中断的工作方式相同,当中断“返回”时,它使用堆栈上的内容并跳转到它。因此,当我们从其他任务返回到它的“中断”点时,我们只需要操作堆栈,并将该任务的返回地址放在堆栈的顶部并执行“Return-from_Interrupt”指令。与正常返回。我敢打赌你现在很抱歉你问了! 干杯,

    【讨论】:

      【解决方案3】:

      http://en.wikipedia.org/wiki/Preemption_(computing)

      阅读维基百科文章。这样想,这是一种允许您一次运行许多不同程序的方法,而无需编写每个程序以放弃处理器的时间——操作系统会处理它。这个想法是每个进程在某个时候被“抢占”。

      【讨论】:

        猜你喜欢
        • 2014-04-25
        • 2013-05-21
        • 2011-11-20
        • 2017-12-12
        • 2016-09-26
        • 1970-01-01
        • 2013-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多