我所知的时钟中断有一个很重要的作用就是控制进程调度。
以linux0.11为例,硬件每隔10ms发出一个
时钟中断,并利用一个叫jiffies的变量累加系统时间,下
此时调用timer_interrupt,其中会调用do_timer()
函数,在do_timer()中处理当前进程的时间的相关问题,
然后判断是否在内核,否,则调用schedule()函数,
进行进程调度(即从当前存在的所用进程中选择最适合的进程运行)。
另外,每隔一定时间发出的时钟中断为操作系统提供了一个
统一的步调,便于很多问题的处理。
我的理解是,系统依靠这个由硬件自动进行的中断来定期将控制权强制返还给操作系统。否则,当前正在运行的线程愿意的话,操作系统可能会没机会再运行了,也就不能为每个线程分发时间片了。长期以来,我一直不知道还有这样一个中断,我就纳闷啊:同一时间只有一个线程运行(单处理器),当用户线程运行的时候,操作系统不是可能被永远晾在一边?因此我推测应该有一个自动的硬件中断才对。
如果不是这样,请一定给我纠正uswangfeng@sina.com.谢谢。
这个时钟中断是系统线程设置定时器实现的,还是硬件自动实现的呢?希望有人回答这个火星帖,呵呵。