计算机中与时间有关的部件
(1)点时间和段时间。段时间=点时间-点时间
(2)定时器和实时时钟。定时器(timer) 定的时间就是段时间,实时时钟(RTC) 就是和点时间有关的一个器件。
linux系统如何记录时间
(1)内核在开机启动的时候会读取RTC硬件获取-一个时间作为初始基准时间,这个基准时间对应一个jiffies值 (这个基准时间换算成jiffies值的方法是: 用这个时间减去1970-01-01 00:00:00
+0000(UTC),然后把这个时间段换算成jiffies数值,这个jiffies值作为我们开机时的基准jiffies值存在。然后系统运行时每个时钟节拍的末尾都会给jiffies这个全局变量加1,因此操作系统就使用jiffies这个全局变量记录了下来当前的时间当我们需要当前时间点时,就用jiffies这 个时间点去计算(计算方法就是先把这个jiffies值对应的时间段算出来,然后加上1970-01-01 00:00:00+0000(UTC)即可得到这个时间点。
(2)其实操作系统只在开机时读一次RTC,整个系统运行过程中RTC是无作用的。RTC的真正作用其实是在oS的2次开机之间进行时间的保存。
(3)理解时一定要点时间和段时间结合起来理解。jiffies这个变量记录的其实是段时间(其实就是当前时间和1970-01-0100:00:00 +0000 (UTC)这个时间的差值)。
(4)一个时间节拍的时间取决于操作系统的配置,现代linux系统 一般是10ms或者1ms。这个时间其实就是调度时间,在内核中用HZ来记录和表示。如果HZ定义成1000,那么时钟节拍就是1/HZ,也就是1ms。
linux中时间相关的系统调用
(1)常用的时间相关的API和C库函数有9个: time/ ct ime/ localt ime/ gmt ime