一种动态调整时钟中断的方法及装置的制造方法

文档序号:8361278阅读:489来源:国知局
一种动态调整时钟中断的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种动态调整时钟中断的方法及装置。
【背景技术】
[0002]随着科学技术的进步,尤其是计算机硬件和软件的更新速度越来越快,对计算机的响应和性能的要求也逐渐增高,传统操作系统中广泛应用的周期性时钟中断往往带来许多十分不必要的开销进而影响计算机的性能。
[0003]在传统操作系统中存在许多硬件计时器,例如RTC(Real Time Clock,实时时钟)、TSC (Time Stamp Counter,时间戮计数器)和 PIT (Programmable Interval Timer,可程序规划间隔定时器)等。这些硬件计时器通过提供不同频率的时钟来帮助操作系统完成一些常规的功能操作。这些功能操作包括系统时钟的维护,超时错误的处理,时钟中断处理等。其中,最常见的是周期性时钟中断,操作系统依靠周期性时钟中断来进行系统时间维护,时钟同步,进程时间片计算等操作。
[0004]虽然周期性时钟中断十分必要,但是周期性时钟中断会造成不必要的资源占用,从而对应用的性能带来干扰。尤其是对于并行应用,独占应用,高优先级应用来说,这种干扰不可忽略。如Linux上一个简单的整数加法程序,因为周期性时钟中断带来的延时就长达23%。而对于并行应用SPhot,周期性时钟中断的开销就占系统总开销的46.1%。另外,在多核操作系统的通用解决方案中,系统服务和应用独占核资源执行非常常见,对于这种独占应用或服务来说,周期性时钟中断尤其不能容忍。周期性时钟中断带来的开销包括:硬件时钟中断,硬件时钟中断处理程序和软件时钟中断处理程序三部分的开销。虽然每次时钟中断本身的开销比较小,但由于长尾效应(Long Tail Effect),这些开销仍然会大幅度降低应用的执行性能,然而现有技术并没有很好的解决方法。

【发明内容】

[0005]本发明的实施例提出一种动态调整时钟中断的方法及装置,以解决周期性时钟中断带来的许多不必要的开销,进而提高计算机操作系统的性能。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]第一方面,本发明实施例提供一种动态调整时钟中断的方法,包括:
[0008]检测当前任务是否发生任务切换;
[0009]若所述当前任务未发生任务切换,则获取所述当前任务执行的时间;
[0010]若所述当前任务执行的时间大于预设门限值,则判断当前的第一时钟中断周期是否小于预设的最大时钟中断周期;
[0011]若所述当前的第一时钟中断周期小于预设的最大时钟中断周期,则按照第一预设规则,将所述当前的第一时钟中断周期更新为第二时钟中断周期,所述第二时钟中断周期大于第一时钟中断周期,且不大于预设的最大时钟中断周期;
[0012]若所述当前的第一时钟中断周期等于预设的最大时钟中断周期,则不更新所述当前的第一时钟中断周期。
[0013]在第一方面的第一种可能的实现方式中,所述获取所述当前任务执行的时间的方法包括:
[0014]记录在所述当前任务执行的过程中时钟中断的次数;
[0015]根据所述时钟中断的次数以及所述当前的第一时钟中断周期计算所述当前任务执行的时间。
[0016]在第一方面的第二种可能的实现方式中,所述按照第一预设规则,将所述当前的第一时钟中断周期更新为第二时钟中断周期,具体包括:
[0017]将所述当前的第一时钟中断周期更新为所述第二时钟中断周期,所述第二时钟中断周期为所述第一时钟中断周期的η倍;或者,
[0018]将所述当前的第一时钟中断周期更新为所述第二时钟中断周期,所述第二时钟中断周期为所述第一时钟中断周期的η倍与预设值的和;或者,
[0019]将所述当前的第一时钟中断周期更新为所述第二时钟中断周期,所述第二时钟中断周期为预设的先验值。
[0020]在第一方面的第三种可能的实现方式中,所述预设的最大时钟中断周期的取值,为最小的高优先级任务时钟、最近堵塞周期、剩余时间片以及预设经验上限值中的最小值;
[0021]其中,所述最小的高优先级任务时钟周期,为当前就绪队列中优先级高于当前任务的就绪任务的最小时钟周期;
[0022]所述最近堵塞周期,为当前任务的上一次进行阻塞操作的时长;
[0023]所述剩余时间片,为初始化任务部署时最初分配的执行时间在当前剩余的时间。
[0024]在第一方面的第四种可能的实现方式中,若所述当前任务发生任务切换,则根据所述当前任务的优先级以及被切换任务的优先级,按照第二预设规则,将所述当前的第一时钟中断周期更新为第三时钟中断周期。
[0025]在第一方面的第四种可能的实现方式中,所述方法还包括:
[0026]若所述当前任务发生任务切换,记录所述当前的第一时钟中断周期为调用时钟中断周期,所述调用时钟中断周期用于指示当所述被切换任务在响应于操作系统的调度时,再一次被调度执行时的时钟中断周期。
[0027]在第一方面的第四种可能的实现方式中,所述若所述当前任务发生任务切换,记录所述当前的第一时钟中断周期为调用时钟中断周期,所述调用时钟中断周期用于指示当所述被切换任务在响应于操作系统的调度时,再一次被调度执行时的时钟中断周期,具体包括:
[0028]若所述当前任务的优先级高于所述被切换任务,并且所述当前任务被调用过,则将所述当前的第一时钟中断周期更新为所述调用时钟中断周期;
[0029]若所述当前任务的优先级高于所述被切换任务的优先级,并且所述当前任务第一次被调用,则将所述当前的第一时钟中断周期更新为所述第三时钟中断周期,所述第三时钟中断周期为默认预设值;
[0030]若所述当前任务的优先级低于所述被切换任务的优先级,则将所述当前的第一时钟中断周期更新为所述第三时钟中断周期,所述第三时钟中断周期为默认预设值。
[0031]在第一方面的第五种可能的实现方式中,所述方法还包括:
[0032]对系统时间进行同步补偿,以使得操作系统消除由于动态时钟调整而造成的系统时间差。
[0033]第二方面,本发明实施例提供一种动态调整时钟中断装置,包括:
[0034]检测模块,用于检测当前任务是否发生任务切换;
[0035]判断模块,用于判断当前任务是否发生任务切换以及判断所述当前任务执行的时间是否大于预设门限值,以及判断当前的第一时钟中断周期是否小于预设的最大时钟中断周期;
[0036]获取模块,用于若所述当前任务未发生任务切换,则获取所述当前任务执行的时间;
[0037]第一调整模块,用于将所述当前的第一时钟中断周期更新为第二时钟中断周期,所述第二时钟中断周期大于第一时钟中断周期。
[0038]在第二方面的第一种实现方式中,所述获取模块包括:
[0039]记录模块,用于记录在所述当前任务执行的过程中时钟中断的次数;
[0040]计算模块,用于根据所述时钟中断的次数以及所述当前的第一时钟中断周期计算所述当前任务执行的时间。
[0041]在第二方面的第二种实现方式中,所述第一调整模块具体用于:
[0042]将所述当前的第一时钟中断周期更新为所述第二时钟中断周期,所述第二时钟中断周期为所述第一时钟中断周期的η倍;或者,
[0043]将所述当前的第一时钟中断周期更新为所述第二时钟中断周期,所述第二时钟中断周期为所述第一时钟中断周期的η倍与预设值的和;或者,
[0044]将所述当前的第一时钟中断周期更新为所述第二时钟中断周期,所述第二时钟中断周期为预设的先验值。
[0045]在第二方面的第三种实现方式中,所述预设的最大时钟中断周期的取值,为最小的高优先级任务时钟、最近堵塞周期、剩余时间片以及预设经验上限值中的最小值;
[0046]其中,所述最小的高优先级任务时钟周期,为当前就绪队列中优先级高于当前任务的就绪任务的最小时钟周期;
[0047]所述最近堵塞周期,为当前任务的上一次进行阻塞操作的时长;
[0048]所述剩余时间片,为初始化任务部署时最初分配的执行时间在当前剩余的时间。
[0049]在第二方面的第四种实现方式中,所述装置还包括:
[0050]第二调整模块,用于根据所述当前任务的优先级以及被切换任务的优先级,按照第二预设规则,将所述当前的第一时钟中断周期更新为第三时钟中断周期。
[0051]在第二方面的第四种实现方式中,所述装置还包括:
[0052]存储模块,用于记录所述当前的第一时钟中断周期为调用时钟中断周期,所述调用时钟中断周期用于指示当所述被切换任务在响应于操作系统的调度时,再一次被调度执行调用时的时钟中断周期。
[0053]在第二方面的第四种实现方式中,所述第二调整模块具体用于:
[0054]若所述当前任务的优先级高于所述被切换任务,并且所述当前任务被调用过,则将所述当前的第一时钟中断周期更新为所述调用时钟中断周期;
[0055]若所述当前任务的优先级高于所述被切换任务的优先级,并且所述当前任务第一次被调用,则将所述当前的第一时钟中断周期更新为所述第三时钟中断周期,所述第三时钟中断周期为默认预设值;
[0056]若所述当前任务的优先级低于所述被切换任务的优先级,则将所述当前的第一时钟中断周期更新为所述第三时钟中断周期,所述第三时钟中断周期为默认预设值。
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1