四linux内核时钟

四linux内核时钟

ID:27089828

大小:340.32 KB

页数:25页

时间:2018-12-01

四linux内核时钟_第1页
四linux内核时钟_第2页
四linux内核时钟_第3页
四linux内核时钟_第4页
四linux内核时钟_第5页
资源描述:

《四linux内核时钟》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、四Linux内核时钟时钟与定时器基础知识Linux系统时钟原理Linux系统定时器原理定时器的简单应用1时钟与定时器ALinuxsystemactuallyhastwoclocks:Oneisthebatterypowered"RealTimeClock"(alsoknown"CMOSclock",or"Hardwareclock")whichkeepstrackoftimewhenthesystemisturnedoffbutisnotusedwhenthesystemisrunning.Theotheristhe"systemclock"(som

2、etimescalledthe"kernelclock"or"softwareclock")whichisasoftwarecounterbasedontheclocktick.Itdoesnotexistwhenthesystemisnotrunning,soithastobeinitializedfromtheRTC(orsomeothertimesource)atboottime.Linux系统时钟以读取的硬件时钟为起始点,根据系统启动后的滴答数来计算时间,系统内的所有计时均基于它。系统用一个全局变量jiffies表示,该变量每个时钟周期更新一

3、次,即表示系统自启动以来的时钟滴答数目。时钟滴答时钟滴答的长短是由时钟中断的频率决定。譬如每秒有100次时钟中断,那么一个时钟滴答的就是10毫秒(记为10ms),相应地,系统时间就会每10ms增1。不同的操作系统对时钟滴答的设置不同。(DOS为55ms)Linux中用全局变量jiffies表示系统自启动以来的时钟滴答数目。时钟中断的物理产生bottomhalf--任务延迟处理机制硬中断服务程序Tophalf:必须关中断运行。bottomhalf:可以打开中断运行。定时器:是系统提供的一种定时服务机制,它能够在某个特定的时刻唤醒某个进程来完成相应的工作

4、。Linux的链表定时器:定时器nextexpiresdata*function()prevnextexpiresdata*function()prevnextexpiresdata*function()prevexpires=n(s)+当前系统时间//以jiffies时间为单位进程执行有用户模式和核心模式的区别;进程执行时间也分:用户模式下执行时间和核心模式执行时间。进程可用的定时器分为:ITIMER_REAL:不管进程在什么模式(甚至被阻塞的时候),它都在计数。SIGALRM信号。ITIMER_VIRTUAL:当进程在用户模式执行时计数。SIGV

5、TALRM信号。ITIMER_PROF:进程在用户模式和核心模式运行时都计数。SIGPROF信号。2.Linux系统时钟的实现相关的数据结构及变量:include/linux/xtime.hstructtimeval{time_ttv_sec;subseconds_ttv_usec;};Tick:时钟中断周期。初值=(1000000+HZ/2)/HZXtime:保存系统当前时间的结构体变量。Jiffies:系统启动以来的时钟滴答数。相关的数据结构及变量:wall_jiffies:每次bottomhalf时用来记录当前jiffies的变量.TSC:保存

6、CPU的ticks数目.系统时钟初始化:arch/i386/kernel/time.c调用get_cmos_time()函数从cmos中读取硬件时钟赋给tv_sec,初始化tv_usec为0。调用setup_irq()重新设置时钟中断irq0的中断服务程序入口。系统时钟的运行:时钟中断发生时,中断服务程序实际上是依靠do_timer()函数来完成其必须完成的工作;do_timer()进一步调用update_times函数来更新系统时间,调用run_timer_list函数来检查、执行定时服务,即在bottomhalf中完成。系统时钟的设置和调整:系统

7、调用sys_time;//读取,秒级sys_stime;//设置,秒级sys_gettimeofday;//读取,微秒级sys_settimeofday;//设置,微秒级sys_adjtimex;//调整,主要用于网络和分布式系统。时间的准确读取:最近一次bottomhalf运行的时间值xtime+从最近一次bottomhalf到最近一次时钟中断的间隔(jiffies-wall_jiffies)+最近一次时钟中断到当前的时间间隔usec3.Linux定时器的实现数据结构:链表节点include/linux/timer.hstructtimer_lis

8、t{structlist_headlist;unsignedlongexpires;//定时器的激活时刻un

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

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

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