内核时间
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
6780

被折叠的 条评论
为什么被折叠?



