Linux时钟
文章平均质量分 76
wh8_2011
这个作者很懒,什么都没留下…
展开
-
Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)
在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工作于低分辨率模式,还是高精度模式,内核都竭尽所能,用不同的方式提供周期时钟,以产生定期的tick事件,tick事件或者用于全局的时间管理(jiffies和时间的更新),或者用于本地cpu的进程统计、时转载 2016-01-23 10:08:33 · 733 阅读 · 0 评论 -
linux动态时钟探索
在早期的linux内核版本的时间概念都是由周期时钟提供的。虽然比较有效,但是,对于关注能耗电量的系统上,就不能满足长时间休眠的需求,因为周期系统要求必须在一定的频率下,周期性的处于活动状态。因此,linux提出了tickless system,即无时钟系统。其关键就是判定系统当前是否无事可做,若是则禁用时钟系统。判定系统当前无事可做的依据是:如果运行队列时没有活动进程,内核将选择idle进程来运行转载 2016-05-23 10:15:43 · 520 阅读 · 0 评论 -
tick_init 函数
static struct notifier_block tick_notifier = {.notifier_call = tick_notify,};//函数所在文件// kernel\time\tick-common.c/** * tick_init - initialize the tick control * * Register the notif原创 2016-05-08 08:19:33 · 1089 阅读 · 0 评论 -
初始化定时器中断
5.10.4 初始化定时器中断回到start_kernel,612行time_init函数:void __init time_init(void){ late_time_init = x86_late_time_init;} 函数x86_late_time_init实际上是初始化tsc时钟源。在time_init中只是把该函数转载 2016-05-10 23:05:29 · 1516 阅读 · 0 评论 -
Linux时间子系统之(四):timekeeping
一、前言timekeeping模块是一个提供时间服务的基础模块。Linux内核提供各种time line,real time clock,monotonic clock、monotonic raw clock等,timekeeping模块就是负责跟踪、维护这些timeline的,并且向其他模块(timer相关模块、用户空间的时间服务等)提供服务,而timekeeping模块维护timeli转载 2016-05-10 22:52:03 · 1591 阅读 · 0 评论 -
定时器函数执行原理揭秘
我们总是在无法满足条件的时候调用sleep()是系统睡眠,在编写网络程序的时候,总是调用poll、select,想明白内核是如何实现基于精确时间的调度操作吗?或许我们该交流交流...1 前言延期执行有两种:第一种是不需要精确地时间控制,比如软中断和tasklet机制,在每个异步中断处理结束时处理或者调用内核线程 ksoftirqd执行。第二种需要精确地时间控制,转载 2016-05-24 10:24:54 · 6713 阅读 · 0 评论 -
Linux内部的时钟处理机制全面剖析
在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等。所以说,了解 Linux 操作系统中的时钟处理机制有助于更好地了解 Linux 操作系统的运作方式。本文分析了 Linux 2.6.25 内核的时钟处理机制,首先介绍了在计算机系统中的一些硬件计时器,然后重点介绍了 Linux 操作系统中的硬件时钟和软件时钟的处理过程以及软件时钟的应用。最后对全文进行了总结。◆1、转载 2016-05-24 10:22:32 · 2861 阅读 · 0 评论 -
late_time_init
在timer_init()中,我们将late_time_init初始化为x86_late_time_init():[cpp] view plain copystatic __init void x86_late_time_init(void) { x86_init.timers.timer_init(); //最终调用转载 2016-01-29 10:14:14 · 980 阅读 · 0 评论 -
Linux时间子系统之一:clock source(时钟源)
clock source用于为linux内核提供一个时间基线,如果你用linux的date命令获取当前时间,内核会读取当前的clock source,转换并返回合适的时间单位给用户空间。在硬件层,它通常实现为一个由固定时钟频率驱动的计数器,计数器只能单调地增加,直到溢出为止。时钟源是内核计时的基础,系统启动时,内核通过硬件RTC获得当前时间,在这以后,在大多数情况下,内核通过选定的时钟源更新实时时转载 2016-01-23 10:15:43 · 1294 阅读 · 0 评论 -
Linux时间子系统之二:表示时间的单位和结构
人们习惯用于表示时间的方法是:年、月、日、时、分、秒、毫秒、星期等等,但是在内核中,为了软件逻辑和代码的方便性,它使用了一些不同的时间表示方法,并为这些表示方法定义了相应的变量和数据结构,本节的内容就是阐述这些表示方法的意义和区别。/*************************************************************************转载 2016-01-23 10:14:52 · 768 阅读 · 0 评论 -
Linux时间子系统之三:时间的维护者:timekeeper
本系列文章的前两节讨论了用于计时的时钟源:clocksource,以及内核内部时间的一些表示方法,但是对于真实的用户来说,我们感知的是真实世界的真实时间,也就是所谓的墙上时间,clocksource只能提供一个按给定频率不停递增的周期计数,如何把它和真实的墙上时间相关联?本节的内容正是要讨论这一点。1. 时间的种类内核管理着多种时间,它们分别是:RTC时间wall转载 2016-01-23 10:13:54 · 608 阅读 · 0 评论 -
Linux时间子系统之四:定时器的引擎:clock_event_device
早期的内核版本中,进程的调度基于一个称之为tick的时钟滴答,通常使用时钟中断来定时地产生tick信号,每次tick定时中断都会进行进程的统计和调度,并对tick进行计数,记录在一个jiffies变量中,定时器的设计也是基于jiffies。这时候的内核代码中,几乎所有关于时钟的操作都是在machine级的代码中实现,很多公共的代码要在每个平台上重复实现。随后,随着通用时钟框架的引入,内核需要支持高转载 2016-01-23 10:12:57 · 495 阅读 · 0 评论 -
Linux时间子系统之五:低分辨率定时器的原理和实现
利用定时器,我们可以设定在未来的某一时刻,触发一个特定的事件。所谓低分辨率定时器,是指这种定时器的计时单位基于jiffies值的计数,也就是说,它的精度只有1/HZ,假如你的内核配置的HZ是1000,那意味着系统中的低分辨率定时器的精度就是1ms。早期的内核版本中,内核并不支持高精度定时器,理所当然只能使用这种低分辨率定时器,我们有时候把这种基于HZ的定时器机制成为时间轮:time wheel。虽转载 2016-01-23 10:12:05 · 531 阅读 · 0 评论 -
Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
上一篇文章,我介绍了传统的低分辨率定时器的实现原理。而随着内核的不断演进,大牛们已经对这种低分辨率定时器的精度不再满足,而且,硬件也在不断地发展,系统中的定时器硬件的精度也越来越高,这也给高分辨率定时器的出现创造了条件。内核从2.6.16开始加入了高精度定时器架构。在实现方式上,内核的高分辨率定时器的实现代码几乎没有借用低分辨率定时器的数据结构和代码,内核文档给出的解释主要有以下几点:转载 2016-01-23 10:10:58 · 2221 阅读 · 0 评论 -
Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
我们已经在前面几章介绍了低分辨率定时器和高精度定时器的实现原理,内核为了方便其它子系统,在时间子系统中提供了一些用于延时或调度的API,例如msleep,hrtimer_nanosleep等等,这些API基于低分辨率定时器或高精度定时器来实现,本章的内容就是讨论这些方便、好用的API是如何利用定时器系统来完成所需的功能的。/*********************************转载 2016-01-23 10:09:57 · 847 阅读 · 0 评论 -
RTC系统
一. RTC及驱动简介 RTC即real time clock实时时钟,主要用于为操作系统提供可靠的时间;当系统处于断电 的情况下,RTC记录操作系统时间,并可在电池供电情况下继续正常工作,当系统正常启动后,系统可从RTC读取时间信息,来确保断电后时间运行连续性。 目前,很多CPU中都已集成RTC系统,且有许多独立的外接RTC芯片可用于实现RTC功能;转载 2015-12-08 23:09:00 · 467 阅读 · 0 评论