时间片:

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

相对时间绝对时间区别:

​ 如果某个时间在5s后呗调度执行,那么系统所需要的不是绝对时间,而是相对时间(比如,相对现在5s后);相反,如果被要求管理当前日期和当前时间,则内核不但要计算流逝的时间而且还要计算绝对时间.

实时时钟(又名硬件时钟,时钟硬件,系统定时器):(理解为一个电子设备)

​ A real-time clock (RTC) is an electronic device (most often in the form of an integrated circuit) that measures the passage of time.
实时时钟(RTC)是一种测量时间流逝的电子设备(通常以集成电路的形式出现)。

​ 它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准, 实时时钟芯片一般使用精度较高的晶体振荡器作为时钟源

​ RTC时间是以振荡频率来计算的(简称晶振,固定频率发出脉冲)。

​ 可以当做计数器来用

​ 系统时间以它作为基频。

​ 组成:晶体振荡器,计数器,寄存器;

​ 这种时钟称为可编程时钟, 可编程时钟有两种模式,-种是一键式(one-shot mode) ,当时钟启动时,会把存储器中的值复制到计数器中,然后,每次晶体的振荡器的脉冲都会使计数器-1。当计数器变为0时,会产生一个中断,并停止工作,直到软件再- -次显示启动。还有一种模式时方波(square-wave mode)模式, 在这种模式下,当计数器变为0并产生中断后,存储寄存器的值会自动复制到计数器中,这种周期性(频率)的中断称为一个时钟周期。该中断叫做时钟中断

时钟中断(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的定义:

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

​ 所以增加了变量 jiffies_64
​ 定义如下
extern u64 __jiffy_data jiffies_64;

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

linux设置时钟的一些命令

#设置系统时间
date -s "2012-05-18 04:53:00"#查看硬件时间
clock --show#系统时间保存到硬件时间里面去 以下命令二选一
hwclock --systohc
clock -w#修改硬件时间
hwclock --set --date='2012-05-18 04:53:00'#硬件时间同步到系统时间
hwclock --hctosys

—The end—

感谢大家看到最后,文章持续更新,欢迎大家指出我文章的不足,也欢迎大家关注,收藏+分享
如果这个办法对您有用,或者您希望持续关注,也可以扫描下方二维码或者微信关注【游戏服务器学习】共同学习,不要让我一个人学习。

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

  1. 一文搞懂 | Linux 驱动的来龙去脉

    驱动相关的学习资料网上很多,但大部分都是碎片化的记录,很少有系统化的总结整理.本文旨在系统化的讲清楚 Linux 驱动的来龙去脉.先从总线,设备,驱动介绍内核对于驱动的模型设计:然后引入设备树的概念, ...

  2. 一文搞懂Linux内核怎么提升UDP收包的效率

    现在很多人都在诟病Linux内核协议栈收包效率低,不管他们是真的懂还是一点都不懂只是听别人说的,反正就是在一味地怼Linux内核协议栈,他们的武器貌似只有DPDK. 但是,即便Linux内核协议栈收包 ...

  3. 一文搞懂linux的proc文件

    目录 proc文件夹是干嘛用? proc下都有什么系统信息? /proc/bus /proc/buddyinfo /proc/cgroups /proc/cmdline /proc/consoles ...

  4. 一文搞懂Linux系统内核升级及下载当前内核源代码

    1. 下载当前内核源代码 为什么下载内核源代? 一是便于查看或学习linux内核代码的底层实现方法: 二是便于编写或调试Linux设备驱动程序,因为驱动程序的编译需要内核源代码. 怎么下载? 如果你是 ...

  5. 一文搞懂Linux 内存管理原理

    导语 linux 内存是后台开发人员,需要深入了解的计算机资源.合理的使用内存,有助于提升机器的性能和稳定性.本文主要介绍 linux 内存组织结构和页面布局,内存碎片产生原因和优化算法,linux ...

  6. fseek linux 大文件_一文搞懂Linux系统开发

    文章目录 Linux系统开发会用到什么? C语言基础 shell脚本 慢慢学会使用Makefile 常规Linux系统编程知识都有什么?哪些常用?哪些不常用? 常规Linux编程知识 文件IO 文件与 ...

  7. linux程序打桩,一文搞懂linux的库打桩

    Linux下的链接器支持一个强大的库打桩(library interpositioning),允许你阻拦对系统标准库中某个目标函数的调用,取而代之执行自己的包装函数.它可以给我们带来两个好处,一是通过 ...

  8. 一文搞懂Linux rm命令 删除文件/文件夹

    文章目录 一 rm命令简介 二 rm命令通用格式 三 使用示例 删除文件/文件夹 3.1 rm删除文件 3.2 rm删除文件夹 四 总结 一 rm命令简介 rm命令是Linux系统的一个命令.rm命令 ...

  9. 一文搞懂Linux系统开发

    列一下Linux系统开发要掌握的知识. 欢迎关注我的微信公众号:fensnote 文章目录 Linux系统开发会用到什么? C语言基础 shell脚本 学会使用Makefile 常规Linux系统编程 ...

最新文章

  1. R语言plotly可视化:plotly可视化累积cumulative直方图(Cumulative Histogram)
  2. io在Linux,在Linux进行IO的正确姿势
  3. Redis操作List相关API
  4. CPU亲缘性及网卡中断绑定
  5. 中国如何引进CMM评估,促进软件产业发展
  6. 3D视觉公开课 | TOF系统设计与分析
  7. 在WPF TreeView中使用复选框
  8. android p wifi一直在扫描_Android Wifi 扫描及自动连接
  9. 双向循环链表---仿照linux内核实现
  10. iostream.h和iostream 区别
  11. Tarjan算法——强连通分量
  12. java获取oracle自增_java相关:MyBatis Oracle 自增序列的实现方法
  13. 【极客学院】-iOS学习笔记-2-Xcode(安装,创建项目,工作空间)
  14. android 刷机及基础常识
  15. fflush(stdout)和fflush(stdin)
  16. 19. 卫健委官网医院查询爬虫+验证码识别(云打码)综合案例
  17. 报错:RuntimeError: view size is not compatible with input tensor‘s size and stride (at least one dimen
  18. 带你领略MotionLayout的魅力(中)
  19. 题目:请写一段将正整数转化为四进制字符串的函数(十进制正整数转四进制字符串)
  20. html链接加入qq群,获取QQ群加群链接

热门文章

  1. linux微信原生版2.1.5,优麒麟版重新打包,适用于debian内核系统
  2. c语言寄存器头文件共用重复定义,C语言头文件的使用
  3. 为什么打开CAD显示驱动该文件(.hdi)缺少或已损坏?
  4. 计算机软件数据处理,[计算机软件及应用]总帐数据处理.ppt
  5. LINK : fatal error LNK1168: cannot open Debug/xxx.exe for writing
  6. java界面的面板重绘
  7. WindowsXP支持最多64G内存的工具震撼登场
  8. 我和ChatGPT聊了聊:它承认自己没有人性
  9. android手机传文件,Android手机间如何高速互传文件?
  10. css 全屏显示一张图片_css 如何让图片全屏的问题