我不知道如何表达这个问题,但我会尽力而为。当我们实时安排一些抽象任务时,它是如何按时调用的(任务可以是任何已安排在某个时间点发生的事情,例如早上叫醒你的闹钟)?在软件的最低层会发生什么?例如在.NET WaitHandle.WaitOne(1000)中,它是如何实现的?是否有每个软件平台用来调度其任务的操作系统调度程序(我不是在谈论线程之间的时间切片)?当系统时钟走一滴答时,它是否以某种方式向操作系统说“嘿,一滴答过去了,增加你的系统时间!”。然后操作系统增加它的时间并告诉它的调度程序检查是否有一些事件安排在这个新时间发生?或者调度程序在无限循环中在单独的线程上运行,在每次迭代中检查系统时间并查看它是否有安排要调用的东西?或者没有调度程序,每个组件都自己无限循环?我认为这个想法在每个操作系统上都是一样的,但如果不是,我对 Windows 操作系统和 .NET 上发生的事情特别感兴趣。
亲切的问候,
有一种叫做可编程间隔定时器的东西。它可以被编程为计算滴答数,然后将信号发送到 os。然后操作系统将唤醒该进程。要阅读有关 PIT 的更多信息,请参阅osdev
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句