网站大量收购闲置独家精品文档,联系QQ:2885784924

中断定时和系统调用.pptVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

中断的返回Linux的时钟管理目标时钟中断:系统心跳信号系统时钟:各种时间戳定时器:时钟种类实时钟:RTC时间戳计数器器:TSC可编程定时器:PIT单击此处可添加副标题几个常用的变量和概念HZ系统时钟中断1秒钟内产生的中断次数,100tick系统时钟中断的时间间隔,一个嘀嗒jiffies系统启动后所经历的系统时钟嘀嗒数,即tick数,也就是系统时钟中断的次数。时间片或时间量子(timeslice,timequantum)分配给进程的时间段,以tick为单位。IRQ0:系统时钟中断由一个可编程定时器产生系统时钟中断以HZ为频率产生中断为系统提供基本的时间事件的驱动更新系统启动后经历的时间更新系统时钟的日期和时间判断一个进程是否已经用完所分配的时间量子,决定是否需要进行进程切换用于各种系统资源的统计判断定时器是否到时IRQ0中断服务程序首先作为IRQ被初始化:timt_init()中断服务程序:timer_interrupt()根据硬件时钟读取各种时间值并保存调用do_timer_interrupt()调用do_timer()jiffies++update_process_times()mark_bh(TIMER_BH)其他操作timer_bh():update_times():更新系统时间计算系统负载run_timer_list():负责处理软件定时器软件定时器由软件实现的定时器。使用软件定时器可以实现在给定的时间间隔后执行一个函数。内核提供软件定时器的机制。但这种定时器只能保证定时时刻到时或到时之后才起作用。硬件定时器,如可编程定时器PIT,在定时时刻到时时就会立即发出中断。软件定时器是在系统时钟中断的下半部被处理,不能保证实时性。Linux提供2种定时器动态定时器用于内核中的定时应用时间间隔定时器可由用户空间的进程建立动态定时器添加标题当某些内核过程需要推迟运行时,可以使用动态定时器。添加标题动态定时器可以动态建立和撤销。添加标题动态定时器的数量可以有任意多个。添加标题动态定时器到时后会执行指定的函数,动态定时器到时之前可以被撤销。添加标题动态定时器以tick为最小时间单位。添加标题动态定时器的管理由数据结构timer_list保存并形成一个链表。/**InLinux2.4,statictimershavebeenremovedfromthekernel.*Timersmaybedynamicallycreatedanddestroyed,andshouldbe*initializedbyacalltoinit_timer()uponcreation.**Thedatafieldenablesuseofacommontimeoutfunctionforseveral*timeouts.Youcanusethisfieldtodistinguishbetweenthedifferent*invocations.*/structtimer_list{structlist_headlist;unsignedlongexpires;unsignedlongdata;void(*function)(unsignedlong);};include/linux/timer.h单击此处可添加副标题定时器需要在每个时钟中断时检查是否到期定时器的定时时间可能有非常大的差异使用简单链表或排序的链表在管理大量动态定时器时会消耗很多CPU时间Linux使用分组和链表的方式管理动态定时器tvecs数组:5个元素,指向5个链表组根据剩余到期时间将定时器放到相应的链表中tv1:即将在随后255个tick之后到期的定时器,有256个元素tv2:即将在随后214-1个tick之后到期的定时器,有64个元素...tv5:所有即将在232-1个tick之后到期的定时器动态定时器的管理动态定时器管理用链表结构例1:动态定时器应用假设内核希望当前进程停顿2秒后再继续运行timeout=2*HZ;set_current_state(TASK_INTERRUPTIBLE);/*orTASK_UNINTERRUPTIBLE*/remining=schedule_timeout(timeout);structtimer_listtime

文档评论(0)

135****2083 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档