定时器和时间管理

一、计时体系的目的—内核中有大量的函数都是基于时间驱动的:

 内核会周期性执行:

  • 更新系统运行时间(自系统启动以来所经过的时间)
  • 更新墙上时间(实际时间)
  • 确定当前进程占用CPU的时间
  • 更新资源使用数
  • 检查每个软定时器是否超时

二、体系结构提供了两种设备进行计时:

 1)实时时钟(RTC):用来持久存放(即使系统关闭,也可靠主板上的电池保持系统的计时)系统时间的设备。系统启动时,内核通过读取RTC来初始化墙上时间。

 2)系统定时器:X86体系中,时钟中断源主要采用可编程中断时钟(PIT)、本地APIC、时间戳计数器(Time Stamp Counter)、电源管理定时器(ACPI PMT)、高精度时间定时器(HPET)

  •   PIT:一种可编程硬件设备,以固定频率(节拍率)自行触发定时器中断。系统启动时,内核对其进行编程初始化,设定其节拍率。通过节拍(节拍率的倒数),内核就可以知道两次时钟中断的间隔。

三、定时器:

  流程:执行初始化,设定超时时间,指定超时发生后执行的函数,激活定时器。

  指定的函数在超时后自动执行,定时器则自行撤销。

  分类:linux提供两种定时器:动态定时器和间隔定时器。动态定时器由内核使用,间隔定时器由进程在用户态创建。

原文地址:https://www.cnblogs.com/wenxuanguan/p/3164528.html