linux时钟处理机制-chinaunix操作系统频道

linux时钟处理机制-chinaunix操作系统频道

ID:19410443

大小:100.63 KB

页数:21页

时间:2018-10-02

linux时钟处理机制-chinaunix操作系统频道_第1页
linux时钟处理机制-chinaunix操作系统频道_第2页
linux时钟处理机制-chinaunix操作系统频道_第3页
linux时钟处理机制-chinaunix操作系统频道_第4页
linux时钟处理机制-chinaunix操作系统频道_第5页
资源描述:

《linux时钟处理机制-chinaunix操作系统频道》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Linux时钟处理机制2008年09月10日16:00来源:ChinaUnix文档频道作者:HonestQiao编辑:周荣茂级别:初级赵健博(zhaojianbo@ncic.ac.cn),硕士,中国科学院计算技术研究所2008年9月11日在Linux操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等。所以说,了解Linux操作系统中的时钟处理机制有助于更好地了解Linux操作系统的运作方式。本文分析了Linux2.6.25内核的时钟处理机制,首先介绍了在计算机系统中的一些硬件计时器,然后重点介绍了Linux操作系统中的硬件时

2、钟和软件时钟的处理过程以及软件时钟的应用。最后对全文进行了总结。1计算机系统中的计时器在计算机系统中存在着许多硬件计时器,例如RealTimerClock(RTC)、TimeStampCounter(TSC)和ProgrammableIntervalTimer(PIT)等等。这部分内容不是本文的中点,这里仅仅简单介绍几种,更多内容参见参考文献:·RealTimerClock(RTC):o独立于整个计算机系统(例如:CPU和其他chip)o内核利用其获取系统当前时间和日期·TimeStampCounter(TSC):o从Pentium起,

3、提供一个寄存器TSC,用来累计每一次外部振荡器产生的时钟信号o通过指令rdtsc访问这个寄存器o比起PIT,TSC可以提供更精确的时间测量·ProgrammableIntervalTimer(PIT):o时间测量设备o内核使用的产生时钟中断的设备,产生的时钟中断依赖于硬件的体系结构,慢的为10ms一次,快的为1ms一次·HighPrecisionEventTimer(HPET):oPIT和RTC的替代者,和之前的计时器相比,HPET提供了更高的时钟频率(至少10MHz)以及更宽的计数器宽度(64位)o一个HPET包括了一个固定频率的数值

4、增加的计数器以及3到32个独立的计时器,这每一个计时器有包涵了一个比较器和一个寄存器(保存一个数值,表示触发中断的时机)。每一个比较器都比较计数器中的数值和寄存器中的数值,当这两个数值相等时,将产生一个中断2硬件时钟处理这里所说的硬件时钟处理特指的是硬件计时器时钟中断的处理过程。2.1数据结构和硬件计时器(本文又称作硬件时钟,区别于软件时钟)相关的数据结构主要有两个:·structclocksource:对硬件设备的抽象,描述时钟源信息·structclock_event_device:时钟的事件信息,包括当硬件时钟中断发生时要执行那些

5、操作(实际上保存了相应函数的指针)。本文将该结构称作为“时钟事件设备”。上述两个结构内核源代码中有较详细的注解,分别位于文件clocksource.h和clockchips.h中。需要特别注意的是结构clock_event_device的成员event_handler,它指定了当硬件时钟中断发生时,内核应该执行那些操作,也就是真正的时钟中断处理函数。在2.3节“时钟初始化”部分会介绍它真正指向哪个函数。Linux内核维护了两个链表,分别存储了系统中所有时钟源的信息和时钟事件设备的信息。这两个链表的表头在内核中分别是clocksource

6、_list和clockevent_devices。图2-1显示了这两个链表。图2-1时钟源链表和时钟事件链表2.2通知链技术(notificationchain)在时钟处理这部分中,内核用到了所谓的“通知链(notificationchain)”技术。所以在介绍时钟处理过程之前先来了解下“通知链”技术。在Linux内核中,各个子系统之间有很强的相互关系,一些被一个子系统生成或者被探测到的事件,很可能是另一个或者多个子系统感兴趣的,也就是说这个事件的获取者必须能够通知所有对该事件感兴趣的子系统,并且还需要这种通知机制具有一定的通用性。基于

7、这些,Linux内核引入了“通知链”技术。2.2.1数据结构:通知链有四种类型,1.原子通知链(Atomicnotifierchains):通知链元素的回调函数(当事件发生时要执行的函数)只能在中断上下文中运行,不允许阻塞1.可阻塞通知链(Blockingnotifierchains):通知链元素的回调函数在进程上下文中运行,允许阻塞2.原始通知链(Rawnotifierchains):对通知链元素的回调函数没有任何限制,所有锁和保护机制都由调用者维护3.SRCU通知链(SRCUnotifierchains):可阻塞通知链的一种变体所以

8、对应了四种通知链头结构:·structatomic_notifier_head:原子通知链的链头·structblocking_notifier_head:可阻塞通知链的链头·structraw_notif

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。