内核时间尺度

内核时间

1. TSC(Time Stamp Counter)

定义:

TSC 是 CPU 中的一个硬件寄存器,记录自 CPU 启动以来的时钟周期数(每个 CPU 周期递增一次)。

特点:

高精度:基于 CPU 主频,可达纳秒级精度。

低开销:直接读取寄存器,无需系统调用或中断。

稳定性问题:早期多核 CPU 中,不同核心的 TSC 可能不同步;现代 CPU 通常支持恒定 TSC(Constant TSC)和同步多核 TSC。

用途:

性能分析(如计算代码段的执行时间)。

高精度时间戳(如网络数据包时间标记)。

替代传统计时器(如 rdtsc 指令直接读取)。

示例:

unsigned long long start, end;
start = __rdtsc();
// 执行待测代码
end = __rdtsc();
printf("耗时周期数: %llu\n", end - start);

2. jiffy

定义:

jiffy 是 Linux 内核中的时间单位,表示两次定时器中断之间的时间间隔。全局变量 jiffies 记录自系统启动以来的 jiffy 数量。

特点:

依赖 HZ 值:HZ 是内核配置参数,定义每秒的定时器中断次数(如 HZ=1000 时,1 jiffy = 1ms)。

软件实现:通过定时器中断(IRQ 0)更新 jiffies。

有限精度:毫秒级(取决于 HZ),低于 TSC。

用途:

内核调度(如进程时间片轮转)。

超时处理(如网络请求超时)。

统计系统运行时间(cat /proc/uptime)。

示例:

// 内核代码中设置 2 秒超时
unsigned long timeout = jiffies + 2 * HZ;
while (time_before(jiffies, timeout)) {
    // 等待
}

3. RTC(Real-Time Clock)

定义:

RTC 是主板上的独立硬件芯片(如 DS1307),由电池供电,持续记录真实时间(年月日时分秒)。

特点:

持久化:断电后依靠电池维持运行。

低精度:通常为秒级,部分支持亚秒级(如 30ms)。

独立于系统:不依赖操作系统或 CPU。

用途:

系统启动时初始化系统时钟(hwclock 命令)。

记录事件时间戳(如日志时间)。

闹钟或定时开机功能。

示例:

# 读取硬件时间
hwclock --show
# 将系统时间同步到 RTC
hwclock --systohc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值