Linux 时钟处理机制
在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等.说,了解 Linux 操作系统中的时钟处理机制有助于更好地了解 Linux 操作系统的运作方式.本文分析了 Linux 2.6.25 内核的时钟处理机制,介绍了在计算机系统中的一些硬件计时器,然后重点介绍了 Linux 操作系统中的硬件时钟和软件时钟的处理过程以及软件时钟的应用.对全文进行了总结. 在计算机系统中存在着许多硬件计时器,例如 Real Timer Clock ( RTC )、Time Stamp Counter ( TSC ) 和 Programmable Interval Timer ( PIT ) 等等. 这部分内容不是本文的中点,这里仅仅简单介绍几种,更多内容参见参考文献: ●Real Timer Clock ( RTC ): 这里所说的硬件时钟处理特指的是硬件计时器时钟中断的处理过程. 2.1 数据结构 和硬件计时器(本文又称作硬件时钟,区别于软件时钟)相关的数据结构主要有两个: struct clocksource :对硬件设备的抽象,描述时钟源信息
上述两个结构内核源代码中有较详细的注解,分别位于文件 clocksource.h 和 clockchips.h 中.需要特别注意的是结构 clock_event_device 的成员 event_handler ,它指定了当硬件时钟中断发生时,内核应该执行那些操作,也就是真正的时钟中断处理函数. 在2.3节“时钟初始化”部分会介绍它真正指向哪个函数. Linux 内核维护了两个链表,分别存储了系统中所有时钟源的信息和时钟事件设备的信息.这两个链表的表头在内核中分别是 clocksource_list 和 clockevent_devices .图2-1显示了这两个链表.
2.2 通知链技术( notification chain ) 在时钟处理这部分中,内核用到了所谓的“通知链( notification chain )”技术.在介绍时钟处理过程之前先来了解下“通知链”技术. 在 Linux 内核中,各个子系统之间有很强的相互关系,一些被一个子系统生成或者被探测到的事件,很可能是另一个或者多个子系统感兴趣的,也就是说这个事件的获取者能够通知所有对该事件感兴趣的子系统,并且还需要这种通知机制具有一定的通用性.基于这些, Linux 内核引入了“通知链”技术. 2.2.1 数据结构: 通知链有四种类型, 1原子通知链( Atomic notifier chains ):通知链元素的回调函数(当事件发生时要执行的函数)只能在中断上下文中运行,不允许阻塞 |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |