加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

浅析Linux中的时间编程和实现原理(二)硬件和GLibC库的细节

发布时间:2016-10-31 01:41:20 所属栏目:Linux 来源:网络整理
导读:引子 熟悉了基本的编程方法之后,我们的兴趣就在于,计算机如何实现这一切的呢?在那些应用层 API 和底层系统硬件之间,操作系统和库函数究竟做了些什么? 首先
副标题[/!--empirenews.page--]

引子

熟悉了基本的编程方法之后,我们的兴趣就在于,计算机如何实现这一切的呢?在那些应用层 API 和底层系统硬件之间,操作系统和库函数究竟做了些什么?

首先看下 Linux 时间处理的一般过程:

图 1. 时间处理过程

浅析Linux中的时间编程和实现原理(二)硬件和GLibC库的细节

应用程序部分已经在第一部分详细介绍过了,在第二部分我将介绍硬件和 GlibC 相关实现的一些概况。

硬件

PC 机里常见的时钟硬件有以下这些。

RTC (Real Time Clock,实时时钟)

人们需要知道时间的时候,可以看看钟表。计算机系统中钟表类似的硬件就是外部时钟。它依靠主板上的电池,在系统断电的情况下,也能维持时钟的准确性。计算机需要知道时间的时候,就需要读取该时钟。

在 x86 体系中,这个时钟一般被称为 Real Time Clock。RTC 是主板上的一个 CMOS 芯片,比如 Motorola 146818,该芯片独立于 CPU 和其他芯片,可以通过 0x70 和 0x71 端口操作 RTC。RTC 可以周期性地在 IRQ 8 上触发中断,但精度很低,从 2HZ 到 8192HZ。

以 Motorola 146818 为例,软件可以通过 I/O 指令读写以下这些值:

图 2. Motorola 146818

浅析Linux中的时间编程和实现原理(二)硬件和GLibC库的细节

可以看到,RTC 能提供精确到秒的实时时间值。

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读