什么是抢先式多任务处理?

时间:2010-10-25 22:15:23

标签: multitasking

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果进程是抢占式进程,则可以将其停止并通过外部中断(陷阱)发送到就绪队列。

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

在情况1和4中,不是抢先