操作系统如何获取进程切换。我想谈谈它更普遍。我们处于多任务时代,我知道有一些基本概念,即有一些权威性地指出现在将运行哪个过程的调度程序。我的问题是处理器如何保证某个进程将消耗X时间然后执行下一个进程。在某个特定时间之后是否存在中断过程的低级机制?或者它是某种抽象方法来实现这一目标?
是否有可能在没有特殊处理器帮助的情况下实现破坏当前任务并将执行切换到另一个的东西?如果不是,我们需要实施什么。让我们假设我想在像Atmega8这样的简单uC中实现类似的东西(它只是uC的一个例子,我们可以使用其他家族的其他产品)
答案 0 :(得分:0)
在许多操作系统设计中,特别是在有限的硬件上,没有“处理器保证某些进程会消耗X时间”的事情。其他人则在调度程序中内置了反饥饿算法。
还有其他调度算法试图提供保证,但面对来自系统调用和硬件中断的I / O完成事件的冲突,这非常困难
答案 1 :(得分:0)
有两种方法(我可以想到这些方法可以引起上下文切换):
1)进程/线程产生。这往往是上下文切换的最常见原因。线程队列和I / O请求并等待响应。等待导致线程/进程产生。
2)定时器,如上所述。对于计算绑定进程(所有处理,无I / O,无页面错误),CPU计时器生成在内核模式下处理的中断。操作系统将具有一组内务处理任务以执行定时器中断。其中之一就是看当前的过程是否超过了它的量。如果是,并且有另一个进程准备好更高的优先级,请执行上下文切换。