12-软件时钟(jiffies)
10.6 软件时钟(jiffies)
在本书中所描述的时间相关的各种系统调用的精度是受限于系统软件时钟(software clock)的分辨率,它的度量单位被称为jiffies。jiffies的大小是定义在内核源代码的常量HZ。这是内核按照round-robin的分时调度算法(35.1节)分配CPU 进程的单位。
在2.4或以上版本的Linux/x86-32内核中,软件时钟速度是100赫兹,也就是说,一个jiffy是10毫秒。
自Linux面世以来,由于CPU的速度已大大增加,Linux / x86- 32 2.6.0内核的软件时钟速度已经提高到1000赫兹。更高的软件时钟速率意味着定时器可以有更高的操作精度和时间可以拥有更高的测量精度。然而,这并非可以任意提高时钟频率,因为每个时钟中断会消耗少量的CPU时间,这部分时间CPU无法执行任何操作。
经过内核开发人员之间的的讨论,最终导致软件时钟频率成为一个可配置的内核的选项(包括处理器类型和特性,定时器的频率)。自2.6.13内核,时钟频率可以设置到100、250(默认)或1000赫兹,对应的jiffy值分别为10、4、1毫秒。自内核2.6.20,增加了一个频率:300赫兹,它可以被两种常见的视频帧速率25帧每秒(PAL)和30帧每秒(NTSC)整除。