我刚刚意识到,在学习了许多关于各种调度算法的知识之后,上下文切换是如何进行的,等等,有一件事我仍然不清楚。
以单处理器系统为例:
如果进程A
正在运行,并且它的时间段应该在5秒后结束,那么调度器或操作系统如何知道如何在5秒后结束它?当A正在运行时,操作系统的任何部分都不能运行。调度程序应该监控它,但是如果它不能运行,它怎么能监控它呢?操作系统的调度程序是否会写入ISR并每5秒生成一次中断?这个是可能的吗?即使是这样,它似乎也不是实现它的好方法。
调度器到底是如何做到这一点的?
发布于 2011-03-13 12:11:30
操作系统的调度程序是否会写入一个ISR并每5秒生成一个中断?这个是可能的吗?即使是这样,它似乎也不是实现它的好方法。
是的,这正是它在抢占式多任务系统上的工作方式(尽管在桌面系统上,间隔通常更像是10毫秒)。
是的,还有其他方案,例如协作多任务,其中每个进程自己决定何时放弃。
发布于 2011-03-13 12:08:44
是的,通常会触发某种类型的计时器中断。然后内核可以运行一段时间,并在需要时切换进程上下文-通常情况下,中断触发的频率比每5秒触发一次要频繁得多。为什么它看起来不像是实现它的好方法呢?
https://stackoverflow.com/questions/5287341
复制相似问题