操作系统如何获得进程切换

时间:2015-04-06 14:37:08

标签: operating-system scheduling scheduler

操作系统如何获取进程切换。我想谈谈它更普遍。我们处于多任务时代,我知道有一些基本概念,即有一些权威性地指出现在将运行哪个过程的调度程序。我的问题是处理器如何保证某个进程将消耗X时间然后执行下一个进程。在某个特定时间之后是否存在中断过程的低级机制?或者它是某种抽象方法来实现这一目标?

是否有可能在没有特殊处理器帮助的情况下实现破坏当前任务并将执行切换到另一个的东西?如果不是,我们需要实施什么。让我们假设我想在像Atmega8这样的简单uC中实现类似的东西(它只是uC的一个例子,我们可以使用其他家族的其他产品)

2 个答案:

答案 0 :(得分:0)

谷歌正在打断'中断'使用现代抢占式内核,运行线程/进程的系统调用以及导致驱动程序运行的硬件中断是可以驱动操作系统内核调度状态机的事件,因此可以驱动下一个核心上运行的进程/线程集

在许多操作系统设计中,特别是在有限的硬件上,没有“处理器保证某些进程会消耗X时间”的事情。其他人则在调度程序中内置了反饥饿算法。

还有其他调度算法试图提供保证,但面对来自系统调用和硬件中断的I / O完成事件的冲突,这非常困难

答案 1 :(得分:0)

有两种方法(我可以想到这些方法可以引起上下文切换):

1)进程/线程产生。这往往是上下文切换的最常见原因。线程队列和I / O请求并等待响应。等待导致线程/进程产生。

2)定时器,如上所述。对于计算绑定进程(所有处理,无I / O,无页面错误),CPU计时器生成在内核模式下处理的中断。操作系统将具有一组内务处理任务以执行定时器中断。其中之一就是看当前的过程是否超过了它的量。如果是,并且有另一个进程准备好更高的优先级,请执行上下文切换。