系统定时器频率是通过静态预处理定义的,在系统启动时按照 HZ 值对硬件进行设置。体系结构不同,HZ的值也不同。对于某些体系结构,甚至是机器不同,HZ的值也会不同。
内核在 <asm/param.h> 中定义了 HZ 的值。我们接下来就来比较一下具体源码:
1、arm 体系结构(文件路径:/arm/include/asm/param.h)
可以看到,在 arm 体系结构中,系统定时器频率默认值为100,即时间中断的频率就是100 HZ。
2、x86体系结构(文件路径: /x86/include/asm/param.h)
内核在 <asm/param.h> 中定义了 HZ 的值。我们接下来就来比较一下具体源码:
1、arm 体系结构(文件路径:/arm/include/asm/param.h)
#ifdef __KERNEL__
# define HZ CONFIG_HZ /* Internal kernel timer frequency */
# define USER_HZ 100 /* User interfaces are in "ticks" */
# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
#else
# define HZ 100
#endif
可以看到,在 arm 体系结构中,系统定时器频率默认值为100,即时间中断的频率就是100 HZ。
2、x86体系结构(文件路径: /x86/include/asm/param.h)
#include <asm-generic/param.h>
文件路径:/include/asm-generic/param.h
#ifndef HZ
#define HZ 100
#endif