假设系统中有三个进程ABC,那么操作系统会动态调度这些程序的执行,那么什么时候来执行调度程序呢?调度程序是被谁来执行的呢?
按照时间顺序,程序的执行顺序可能是这样的一个序列:ABABCBABACB。实际的调度是靠计算机外部会有一个外部计时器,调度的工作全靠这个寄存器了。按照一定的频率来产生时钟频率,如果计时器产生了中断,系统就会执行其中断处理函数,进入内核态,并执行调度程序,如果要切换进程,则需要保存上下文,这个时间大概需要1000个时钟周期,因此如果时钟中断特别频繁,将严重的影响系统的性能。一般10ms左右会产生一个中断程序。
一般情况下定时器sleep都无法实现准确的定时功能,这个主要是由于其他进程的时间片还没有执行完,所以不会轮到sleep来执行。
阅读(3171) | 评论(0) | 转发(0) |