码迷,mamicode.com
首页 > 系统相关 > 详细

linux源码分析之节拍率 -- param.h

时间:2015-05-24 11:41:44      阅读:483      评论:0      收藏:0      [点我收藏+]

标签:linux   ubuntu   源码   内核   能耗   

       系统定时器频率是通过静态预处理定义的,在系统启动时按照 HZ 值对硬件进行设置。体系结构不同,HZ的值也不同。对于某些体系结构,甚至是机器不同,HZ的值也会不同。
      内核在 <asm/param.h> 中定义了 HZ 的值。我们接下来就来比较一下具体源码:

1、arm 体系结构(文件路径:/arm/include/asm/param.h)

#ifndef __ASM_PARAM_H
#define __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

#define EXEC_PAGESIZE   4096

#ifndef NOGROUP
#define NOGROUP         (-1)
#endif

/* max length of hostname */
#define MAXHOSTNAMELEN  64

#endif

可以看到,在 arm 体系结构中,系统定时器频率默认值为100,即时间中断的频率就是100 HZ。

2、x86体系结构(文件路径: /x86/include/asm/param.h)

#include <asm-generic/param.h>

文件路径:/include/asm-generic/param.h

#ifndef __ASM_GENERIC_PARAM_H
#define __ASM_GENERIC_PARAM_H


#ifndef HZ
#define HZ 100
#endif

#ifndef EXEC_PAGESIZE
#define EXEC_PAGESIZE   4096
#endif

#ifndef NOGROUP
#define NOGROUP         (-1)
#endif

#define MAXHOSTNAMELEN  64      /* max length of hostname */

#endif /* __ASM_GENERIC_PARAM_H */

可以看到,在x86体系结构中,系统定时器频率默认值为100,即时间中断的频率就是100 HZ。

3、alpha (文件路径:/alpha/include/asm/param.h)
#ifndef _ASM_ALPHA_PARAM_H
#define _ASM_ALPHA_PARAM_H

#ifdef __KERNEL__
#define HZ              CONFIG_HZ
#define USER_HZ         HZ
#else
#define HZ              1024
#endif

#define EXEC_PAGESIZE   8192

#ifndef NOGROUP
#define NOGROUP         (-1)
#endif

#define MAXHOSTNAMELEN  64      /* max length of hostname */

#ifdef __KERNEL__
# define CLOCKS_PER_SEC HZ      /* frequency at which times() counts */
#endif

#endif /* _ASM_ALPHA_PARAM_H */

可以看到, alpha 机型的节拍率为1024.

总结:
       对比以上三种不同体系结构,发现体系结构不同,HZ的值会有所改变。节拍率越高,不但能够提高时间驱动的准确性,而且提高了时间驱动事件的解析度;但是这也意味着中断处理程序占用的处理器时间越多,系统的负担越重。
       另外,HZ 的值不是固定不变的,大多数体系结构的节拍率是可调的。当编译内核时设置了 CONFIG_HZ 选项,系统不是每隔固定的时间间隔触发时钟中断,而是根据这个选项动态调度时钟中断。对于无节拍的系统,在空闲期间不会被不必要的时间中断打断,这样做有利于减少系统开销,即节省能耗,达到省电的效果。

linux源码分析之节拍率 -- param.h

标签:linux   ubuntu   源码   内核   能耗   

原文地址:http://blog.csdn.net/liuruiqun/article/details/45950049

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!