時鐘中斷
時鐘中斷是一種硬中斷,由時間硬件(系統(tǒng)定時器,一種可編程硬件)產(chǎn)生,CPU處理后交由時間中斷處理程序來完成更新系統(tǒng)時間、執(zhí)行周期性任務等。linux時間中斷處理程序分種兩部分:體系結構相關部分與體系結構無關部分。體系結構相關部分被注冊到內核中,確保中斷產(chǎn)生時能執(zhí)行,這部分不能有耗時操作,主要是更新時間與調用結構無關部分列程(異步)。已到期的定時器由體系結構無關部分來處理,其它的一些耗時操作,如顯示時間的更新也在這一部分。
定時器
內核定時器
內核定時器產(chǎn)生的是軟中斷,軟中斷是進程相關的,它不會中斷CPU的處理。使用定時器時,將軟中斷注冊入內核。在每個時鐘中斷周期中,系統(tǒng)會檢測到期到期定時器,觸發(fā)軟中斷,判斷時間到期,則執(zhí)行定時器處理函數(shù),最后清除掉定時器軟中斷。
用戶定時器
用戶定時器是線程相關的,定時器產(chǎn)生的消息只會發(fā)送給注冊線程。定時器消息屬于最低優(yōu)先級的消息,當線程的隊列中沒有其他消息時,才檢索該消息。