1、内核在开机启动的时候会读取RTC硬件获取一个时间作为初始基准时间,这个基准时间对应一个jiiffies值(这个基准时间换算成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的两次开机之间进行时间的保存。

3、理解时一定要点时间和段时间结合起来理解。jiffies这个变量记录的其实是段时间(其实就是当前时间和1970-01-01  00:00:00  +0000(UTC)这个时间的差值)。

4、一个时间节拍的时间取决于操作系统的配置,现代Linux系统一般是10ms或者是1ms。这个时间其实就是调度时间,在内核中用HZ来记录和表示。如果HZ定义为1000,那么时钟节拍就是1/HZ,也就是1ms。学习驱动会用到这些知识。

5、Linux中与时间相关的系统调用

(1)、常用的时间相关的API和C库函数有9个:time、ctime、localtime、gmtime、mktime、asctime、strftime、gettimeofday、settimeofday

它们的关系如下图:

(2)、time系统调用返回当前时间以秒为单位的距离1970-01-01  00:00:00  +0000(UTC)过去的秒数。这个time内部就是用jiffies换算得到的秒数。其他函数基本都是围绕着time来工作的。

(3)、gmtime和localtime会把time得到的秒数变成一个struct tm结构体表示的时间。区别是gmtime得到的是国际时间,而localtime得到的是本地(指的是你运行localtime函数的程序所在的计算机所设置的时区对应的本地时间)时间。mktime用来完成相反方向的转换(struct tm到time_t).

(4)、如果从struct tm出发想得到字符串格式的时间,可以用asctime或者strftime都可以。(如果从time_t出发想得到字符串格式的时间用ctime即可)。

(5)、gettimeofday返回的时间是由struct timeval和struct timezone这两个结构体共同表示的,其中timeval表示时间,而timezone表示时区。settimeofday是用来设置当前的时间和时区的。

总结:不管是用哪一个系统调用,最终得到的时间本质上都是一个时间(这个时间最终都是从kernel中记录的jiffies中计算得来的),只不过不同的函数返回的时间的格式不同,精度不同。

linux 系统时间是在哪里记录的,Linux系统如何记录时间相关推荐

  1. 【项目记录】Linux日志审计系统

    项目时期 大学 项目详情 第一章 作品概述 本作品实现了对客户端的Linux系统日志审计以及警报.使用者只需预留用于警报的邮箱,在客户端部署软件,即可实现对Linux系统日志的转发分析以及通过客户预留 ...

  2. linux使用date命令修改系统日期,使用date命令设置CentOS Linux修改系统日期和时间...

    您可以使用date命令来修改CentOS Linux的时间 修改日期: 将时间设置为2014年6月20日的命令如下: #date -s 2014年6月20日 修改时间: 将系统时间设置为14:20:0 ...

  3. 用C语言做一个公共自行车租赁系统:要求能够提供公共自行车的租赁和管理,能够记录用户的租车记录和时间,能够生成租车报告。

    这是一个比较复杂的项目,需要多方面的知识和技能,包括C语言编程.数据结构.算法等.下面是一个简单的思路,供您参考: 定义数据结构 首先需要定义数据结构,包括自行车.用户.租车记录等,例如: // 自行 ...

  4. 记录ECS Linux系统出现xmrig挖矿程序

    记录ECS Linux系统出现xmrig挖矿程序 最近收到阿里云检测服务器出现了紧急安全事件:挖矿程序,炸一看,额...... ,吓了一跳,这是哪里冒出来的,结果看到如下图所示,开始进行了排查. 原因 ...

  5. win10 linux双系统切换不了,Ubuntu20和windows10 双系统 切换 时间会变不同步的问题...

    时间不一致的原因: Windows 与 Mac/Linux 看待系统硬件时间的方式是不一样的:Windows把计算机硬件时间当作本地时间(local time),所以在Windows系统中显示的时间跟 ...

  6. Linux中针对时间常用的相关操作-时区、系统时间、硬件时间、时间同步等

    玩Linux时,会遇到两个重要的时间:系统时间和硬件时间,分享下这两个时间相关的命令. 系统时间(System Time): 一般说来就是我们执行 date命令看到的时间,linux系统下所有的时间调 ...

  7. 嵌入式linux学习笔记---关于linux系统的时间设置的一些理解、linux系统设置时间的方法

    以下是一份batch 脚本可以用于给嵌入式设备设置同步时间 大概的执行过程就是 ① 从本地的电脑获得当前的时间 ② 给嵌入式设备设置时区 ③ 给嵌入式设备设置时间 ④ 进行时间同步,将时间写入到rtc ...

  8. linux内核实验平台搭建,搭建自己的Linux实验系统(一)

    当你对操作系统已经有了基本的把握:而且对Linux也有了初步的了解,可是,如果你是一个程序员,你肯定还是会觉得惴惴不安:Linux到底是怎么回事? 求知和求实是程序员的天性,我们当然有义务满足自己的天 ...

  9. 鸟哥的Linux私房菜(基础篇)-第二章、 Linux 如何学习(二.3. 有心朝Linux作业系统学习者的学习态度)

    第二章. Linux 如何学习 最近更新日期:2009/08/06 3. 有心朝Linux作业系统学习者的学习态度 3.1 从头学习Linux基础 3.2 选择一本易读的工具书 3.3 实作再实作 3 ...

最新文章

  1. oracle主键增长方式,oracle 自增长主键
  2. Ant Design Pro 2.0/umijs站点配置到非站点根目录下处理
  3. Knowledge Review:超越知识蒸馏,Student上分新玩法!
  4. 第八篇:Spring Boot整合Thymeleaf_入门试炼04
  5. total是什么牌子的电脑_干货!如何用Python在笔记本电脑上分析100GB数据(上)...
  6. (8)Linux内核中的hash与bucket
  7. Java基础之深入认识hashCode和equals
  8. 单身狗应该怎么过七夕节?
  9. Linux计划任务at命令、crontab命令
  10. linux命令学习之sar命令--服务器性能监测
  11. java web邮件收发组件
  12. 通信模块整理(一)JDY-31
  13. wps2005导致图标全无解决方案
  14. 联想微型计算机改win7,联想win10改win7如何实现?联想电脑Win10改Win7方法详解
  15. [docker]dockerfile简介与应用
  16. Dual Attention机制
  17. 运用gm/id法设计二级运放教程
  18. 国产android智能手表,国产安卓手机越来越骚了 这回连手表都用上了
  19. 震惊!催眠居然可以这么简单!
  20. 数学-统计-距-四分位数、箱线图、方差、标准差、标准分(Z分布)

热门文章

  1. 1.13 总结-深度学习第五课《序列模型》-Stanford吴恩达教授
  2. Ardino基础教程 19_舵机控制
  3. ecos无线驱动掉线问题解决方案分析
  4. 深入理解volatile
  5. POJ 3855 计算几何·多边形重心
  6. Python3 os模块应用
  7. 你的Java代码是否符合规范,来测测便知!
  8. VMware vSphere Client安装Centos7
  9. jQuery Ajax全解析
  10. STM32F0308开发环境的选择--CooCox CoIDE篇