硬件给内核提供一个系统定时器
用以计算和管理时间,内核通过编程预设系统定时器的频率,即节拍率(tick rate),每一个周期称作一个tick(节拍)。Linux内核从2.5版内核开始把频率从100调高到1000(当然带来了很多优点,也有一些缺点).
jiffies
是内核中的一个全局变量,用来记录从系统启动以来产生的节拍数。譬如,如果计算系统运行了多长时间,可以用 jiffies/tick rate 来计算。jiffies定义在文件<linux/jiffies.h>中:
extern unsigned long volatile jiffies;
可以利用jiffies设置超时等,譬如:
unsigned long timeout = jiffies + tick_rate * 2; // 2秒钟后超时
if(time_before(jiffies, timeout){
// 还没有超时
}
else{
// 已经超时
}
内核提供了四个宏来比较节拍计数,这些宏定义在文件<linux/jiffies.h>中:
time_before(unknown, known)
time_after(unknown, known)
time_before_eq(unknown, known)
time_after_eq(unknown, known)
比较的时候用这些宏可以避免jiffies由于过大造成的回绕问题。
除了系统定时器外,还有一个与时间有关的时钟:实时时钟(RTC),这是一个硬件时钟,用来持久存放系统时间,系统关闭后靠主板上的微型电池保持计时。系统启动时,内核通过读取RTC来初始化Wall Time,并存放在xtime变量中,这是RTC最主要的作用。
分享到:
相关推荐
Jiffies 是 Linux 内核中的一个计数器,用于记录从系统启动以来经过的时间。Jiffies 的值是一个无符号长整型数,表示从系统启动以来经过的 Tick 数量。Jiffies 的值会不断增加,直到溢出(overflow),然后重新从 0 ...
HZ、Tick 和 Jiffies 是 Linux 内核中三个重要的时间相关概念,它们之间存在紧密的关系,并且在 Linux 内核中扮演着重要的角色。通过理解这些概念,我们可以更好地了解 Linux 操作系统的工作机理。
在Linux内核中,jiffies是一个重要的全局变量,用于记录系统启动以来所经历的时钟节拍数(ticks)。这一变量对于实现时间相关的功能至关重要,比如定时器管理、进程调度等。jiffies变量在系统启动之初被初始化为0,...
在Linux内核中,jiffies是一个重要的全局变量,用于记录系统启动以来所经历的时钟节拍数(ticks)。这一变量对于实现精确的时间计算与调度至关重要。当系统启动时,jiffies会被初始化为0,并且每经历一次时钟中断,...
`jiffies`是Linux内核中的一个全局变量,用于跟踪系统运行的时间。每当系统硬件时钟中断发生,`jiffies`就会增加。这个值通常与系统的时钟频率有关,因此可以通过计算`jiffies`的变化来获取时间间隔。 四、实现10秒...
Linux内核延时研究是Linux系统中一个重要的概念,主要涉及到驱动程序的延时处理和函数代码的分析。在Linux系统中,驱动程序需要与硬件同步,需要非常短的延迟来实现同步。 Linux内核提供了多种延时函数,包括...
- 在Linux内核中,`jiffies`是一个全局变量,记录了自系统启动以来发生的时钟中断次数。时间片(Time Slice)是分配给每个进程运行的时间长度,通常以jiffies为单位计算。 4. **调度器与时间管理** - Linux内核...
2. **jiffies概念**:在Linux内核中,`jiffies`是一个全局变量,记录自系统启动以来的 ticks(时钟中断)数量。每个tick代表了系统的最小时间单位,通常是毫秒或微秒。定时器的到期时间通常与jiffies关联。 3. **...
Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...
Linux内核引导过程是操作系统启动过程中一个非常关键的步骤。在这一过程中,内核通过一系列复杂的初始化操作,为系统的正常运行奠定基础。本文将深入探讨Linux内核的引导过程,重点介绍内核引导的第一部分——核心...
Linux内核中定义了三种基本的数据类型:标准C语言类型、确定大小的类型和特定内核对象的类型。这些数据类型是Linux内核的基础,确保了内核的可移植性和稳定性。 标准C语言类型是最基本的数据类型,包括整数、...
时间戳记录了事件发生的时间,而jiffies是Linux内核中的一种时间单位,通常用来表示自系统启动以来经过的滴答数。 其次,定时器在Linux内核中的实现和管理是一个关键部分。内核提供了两种主要类型的定时器:软...
本篇将深入探讨Linux内核定时器的编程,包括如何创建、管理以及它们的工作原理。 一、Linux内核定时器工作原理 Linux内核定时器基于软中断(software interrupt)机制,由`hrtimer`(High Resolution Timers)或...
总结来说,Linux内核驱动中的延时处理涉及到HZ的计算、jiffies计数器、宏定义、等待队列、`schedule()`函数、`schedule_timeout()`以及忙等待延时函数等。理解并正确使用这些工具,能够有效地管理驱动程序中的延时,...
Linux内核定时器是操作系统核心中的重要组成部分,用于在特定时间点执行预定的任务。这个实例提供了深入了解和操作Linux内核定时器的机会。在Linux中,定时器被广泛应用于各种场景,如任务调度、I/O超时处理、系统...
Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...
Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先...
3. **定时器数据结构**:Linux内核使用了多种定时器数据结构,如hrtimer(高精度定时器)和jiffies(基本的时间单位)。这些数据结构的设计和工作原理是理解时间管理的关键。 4. **软中断和底半部**:在Linux内核中...
jiffies是Linux内核中的一个计数器,表示自系统启动以来经过的定时器中断次数。学生通过编写驱动函数,实现了将jiffies值输出到proc文件系统,使用户空间可以通过读取这个文件来获取当前的jiffies值。此外,还涉及到...