一文搞懂linux时间片,硬件时钟,软件时钟,实时时钟,时间中断,墙上时间

时间片:

时间片是一个数值,它表明程序在被抢占前所持续运行的时间。

一文搞懂linux时间片,硬件时钟,软件时钟,实时时钟,时间中断,墙上时间
时钟中断(CPU中断):

可以理解为周期性产生的事件–比如每10ms一次;都是由系统定时器驱动的。系统定时器是一种可编程的硬件芯片。它能以固定的频率产生中断,该中断就叫做定时器中断,

可以大概的理解为硬件时钟的一个开始到结束的周期。并且以固定频率自行触发。该频率叫做节拍率(tick rate)

由可编程硬件芯片(RTC),它能以固定的频率产生中断。该中断就是所谓的定时器中断

预编的节拍率对内核来说已知的。

节拍:

连续两次时钟中断的间隔时间。这个间隔时间就称为节拍,它等于节拍率分支一(1/(tick rate)) 秒。

内核用这种已知时间间隔.来计算墙上时间,和系统运行时间。内核通过控制时钟中断来维护实际时间。也为用户空间提供了对应的API接口来获取实际日期,实际时间。

节拍率(HZ):

系统定时器频率( 节拍率),是通过静态预处理定义的,也就是HZ(赫兹),在系统启动的时候按照HZ值对硬件进行设置。

系统时间(又名时钟软件,软件时钟):

时钟硬件所做的全部工作是根据已知的时间间隔产生中断。那么其他关于时间的工作需要由时钟软件来完成。通常做的事

  • 维护日常时间(也称为实际时间)
  • 防止进程超时运行。
    • 可以理解为时间片,时钟软件在后面操作。
  • 对CPU的使用情况记账
    • 进程使用时长记录。因为当中断发生的时候时间必须要停止计算。中断结束后,在恢复倒计时。参考时间片
  • 处理用户进程提出alarm系统调用。
  • 为系统本身各个部分提供监视定时器。
墙上时间(实际时间):

也就是通常看到的 2021年11月8日 20:06:16 或者 Mon Nov 8 20:06:23 CST 2021 这种格式

jiffies:

全局变量jiffies用来记录自系统启动以来产生的节拍的总数。系统启动的时候内核将此变量初始化为0,此后每次时钟中断处理程序就会增加该变量的值。因为一秒钟的时钟中断的次数等于HZ(节拍率),所以jiffies一秒增加的值也为HZ。(系统运行时间以秒为单位计算)系统运行的时间为jiffies/HZ(节拍率)

jiffies的定义:

jiffies变量类型为:(unsigned long)因为,在32位编辑器(系统)上是32位,在64位编辑器(系统)上是64位,32位的jiffies到达一定的值的时候会溢出,需要进行特殊处理。

所以增加了变量 ;
定义如下

虽然,jiffies和jiffies_64是两个变量,但它们最终指向相同的地址,只是jiffies取的是jiffies_64变量的低32位。这种效果通过链接程序实现的
如图

一文搞懂linux时间片,硬件时钟,软件时钟,实时时钟,时间中断,墙上时间

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24908 人正在系统学习中

来源:yu_1992_11_25

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月7日
下一篇 2021年10月7日

相关推荐