CN102567104A - 实时操作系统的软中断实现方法及装置 - Google Patents
实时操作系统的软中断实现方法及装置 Download PDFInfo
- Publication number
- CN102567104A CN102567104A CN2010106163678A CN201010616367A CN102567104A CN 102567104 A CN102567104 A CN 102567104A CN 2010106163678 A CN2010106163678 A CN 2010106163678A CN 201010616367 A CN201010616367 A CN 201010616367A CN 102567104 A CN102567104 A CN 102567104A
- Authority
- CN
- China
- Prior art keywords
- soft
- priority
- interruption
- triggered
- interrupt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明揭示了一种实时操作系统的软中断实现方法,包括:步骤1、判断是否存在被触发的软中断,其优先级高于当前软中断的优先级;其中,优先级为预先设置;步骤2、当存在被触发的软中断,其优先级高于当前软中断的优先级时,将预设的嵌套计数器加预设值;步骤3、执行被触发软中断的优先级队列中最高优先级的软中断;步骤4、将嵌套计数器减预设值,并返回步骤1,直到嵌套计数器为0。本发明还提出了相应的装置。本发明提供的一种实时操作系统的软中断实现方法及装置,实现高优先级抢占低优先级的软中断嵌套服务机制。
Description
技术领域
本发明涉及到计算机领域,特别涉及到一种实时操作系统的软中断实现方法及装置。
背景技术
目前的操作系统可以在任务/线程或硬中断中触发软中断,其中断处理优先级是硬中断优先级高于软中断优先级,软中断优先级高于任务优先级。软中断可以触发其他软中断(包括触发自身),支持优先级调用但不支持优先级抢占,即如果低优先级软中断触发高优先级软中断,必须等低优先级中断处理完后才能响应高优先级软中断。
发明内容
本发明的主要目的为提供一种实时操作系统的软中断实现方法及装置,实现高优先级抢占低优先级的软中断嵌套服务机制。
本发明提出一种实时操作系统的软中断实现方法,包括:
判断是否存在被触发的软中断,其优先级高于当前软中断的优先级;其中,优先级为预先设置;
当存在被触发的软中断,其优先级高于当前软中断的优先级时,将预设的嵌套计数器加预设值;
执行被触发软中断的优先级队列中最高优先级的软中断;
将嵌套计数器减预设值,并返回判断是否存在被触发的软中断,直到嵌套计数器为0。
优选地,在执行所述执行被触发软中断的优先级队列中最高优先级的软中断之前,包括:
将所述最高优先级的软中断标识为已触发,并从该队列中删除该软中断;
当该队列为空时,更改该队列的队空标识。
优选地,在执行所述判断是否存在被触发的软中断,其优先级高于当前软中断的优先级之后,包括:
当不存在被触发的软中断,其优先级高于当前软中断的优先级时,判断嵌套计数器是否为0;
在嵌套计数器不为0时,返回执行被触发软中断的优先级队列中最高优先级的软中断;
在嵌套计数器为0时,返回任务调度。
优选地,在执行所述判断是否存在被触发的软中断,其优先级高于当前软中断的优先级之前,包括:
判断被触发的软中断是否硬中断触发;
当被触发的软中断为硬中断触发时,执行该硬中断。
优选地,在执行所述判断被触发的软中断是否为硬中断触发之后,包括:
当被触发的软中断非硬中断触发时,判断嵌套计数器是否为0;
当嵌套计数器为0时,切换系统栈。
本发明还提出一种实时操作系统的软中断实现装置,包括:
第一判断模块,用于判断是否存在被触发的软中断,其优先级高于当前软中断的优先级;其中,优先级为预先设置;
加数模块,用于当存在被触发的软中断,其优先级高于当前软中断的优先级时,将预设的嵌套计数器加预设值;
执行模块,用于执行被触发软中断的优先级队列中最高优先级的软中断;
减数模块,用于将嵌套计数器减预设值,并利用第一判断模块继续进行判断,直到嵌套计数器为0。
优选地,所述实时操作系统的软中断实现装置还包括:
删除中断模块,用于将所述最高优先级的软中断标识为已触发,并从该队列中删除该软中断;
更改标识模块,用于当该队列为空时,更改该队列的队空标识。
优选地,所述实时操作系统的软中断实现装置还包括:
第二判断模块,用于当不存在被触发的软中断,其优先级高于当前软中断的优先级时,判断嵌套计数器是否为0;
返回软中断模块,用于在嵌套计数器不为0时,利用执行模块执行被触发软中断的优先级队列中最高优先级的软中断;
返回任务模块,用于在嵌套计数器为0时,返回任务调度。
优选地,所述实时操作系统的软中断实现装置还包括:
第四判断模块,用于判断被触发的软中断是否为硬中断触发;
硬中断模块,用于当被触发的软中断为硬中断触发时,执行该硬中断。
优选地,所述实时操作系统的软中断实现装置还包括:
第三判断模块,用于当被触发的软中断非硬中断触发时,判断嵌套计数器是否为0;
栈切换模块,用于当嵌套计数器为0时,切换系统栈。
本发明提出的一种实时操作系统的软中断实现方法及装置,通过中断嵌套,实现高优先级软中断抢占低优先级软中断嵌套服务机制。
附图说明
图1为本发明一种实时操作系统的软中断实现方法一实施例的流程示意图;
图2为本发明一种实时操作系统的软中断实现方法又一实施例的流程示意图;
图3为本发明一种实时操作系统的软中断实现方法另一实施例的流程示意图;
图4为本发明一种实时操作系统的软中断实现装置一实施例的结构示意图;
图5为本发明一种实时操作系统的软中断实现装置又一实施例的结构示意图;
图6为本发明一种实时操作系统的软中断实现装置另一实施例的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
本发明提出的一种实时操作系统的软中断实现方法及装置,通过中断嵌套,实现高优先级软中断抢占低优先级软中断。
参照图1,提出本发明一种实时操作系统的软中断实现方法一实施例,包括:
步骤S101,判断是否存在被触发的软中断,其优先级高于当前软中断的优先级,其中,优先级为预先设置;
本发明的操作系统首先设置一实时操作系统的软中断实现装置,该装置内置于操作系统。实时操作系统的软中断实现装置在任务、软中断或硬中断中调用接口触发软中断,如果该软中断的触发标记显示该软中断的当前状态为已触发,则直接返回触发调用处,此次触发无效。
如该软中断的触发标记显示该软中断的当前状态为未触发,将软中断入相应的优先级队列进行管理,软中断的优先级为根据需要预先设置。
判断各软中断优先级队列中是否存在比当前在执行的软中断更高优先级的软中断。
步骤S102,当存在被触发的软中断,其优先级高于当前软中断的优先级时,将预设的嵌套计数器加1;
如果存在比当前在执行的软中断更高优先级的软中断,则将预设的嵌套计数器加预设值,该预设值通常为1,表明存在嵌套。并可将最高优先级队列的首个软中断标识为已触发。
步骤S103,执行被触发软中断的优先级队列中最高优先级的软中断;
执行被触发软中断的优先级队列中最高优先级队列中的一软中断,通常为该队列中的首个软中断,执行过程为:开中断,进行软中断的中断服务程序,再关中断。
步骤S104,将嵌套计数器减预设值,并返回步骤S101,直到嵌套计数器为0。
当执行完最高优先级队列中的一软中断后,将嵌套计数器减1,并重新判断是否存在被触发的软中断,其优先级高于当前软中断,直到嵌套计数器为0。
以任务A触发软中断B为例,首先根据软中断B的触发标识判断该软中断B之前没有被触发,将软中断B放入相应的优先级队列如优先级2的队列。由于软中断的优先级高于任务,则嵌套计数器加1,可将软中断B标识为已触发,并开中断,执行软中断B,当执行过程中,软中断B又触发软中断C,如软中断C的优先级为1,则由于软中断C的优先级高于软中断B的优先级,则嵌套计数器再加1,执行软中断C,执行完软中断C后嵌套计数器减1,返回判断是否存在比软中断B更高优先级的软中断,如不存在则继续执行软中断B,软中断B执行完毕后返回执行任务A。
本发明提出的一种实时操作系统的软中断实现方法,通过中断嵌套,实现高优先级软中断抢占低优先级软中断嵌套服务机制。
参照图2,提出本发明一种实时操作系统的软中断实现方法又一实施例,本实施例中,在执行上述步骤S103之前,包括:
步骤S1021,将最高优先级的软中断标识为已触发,并从该队列中删除该软中断;
步骤S1022,当该队列为空时,更改该队列的队空标识。
优先级队列的队空标识可以为0或者1,当队列中有队员时则置1,当队列中队空时则置0,实时操作系统的软中断实现装置可以根据队空标识判断该队列是否为空。
本实施例中,可将执行的软中断从优先级队列中删除,并更改队空标识,在上述实施例的基础上,节约了系统资源。
参照图3,提出本发明实时操作系统的软中断实现方法另一实施例,本实施例中,在执行上述步骤S101之前,还包括:
步骤S97,判断被触发的软中断是否为硬中断触发;
步骤S98,当被触发的软中断为硬中断触发时,执行该硬中断;
当被触发的软中断为硬中断触发时,则优先执行硬中断。
步骤S99,当被触发的软中断非硬中断触发时,判断嵌套计数器是否为0;
当被触发的软中断非硬中断触发时,判断嵌套计数器是否为0,即该软中断是否为第一个被触发的软中断。
步骤S100,当嵌套计数器为0时,切换系统栈。
当嵌套计数器为0时,则由当前任务栈切换到系统栈。
在执行步骤S101之后,还包括:
步骤S1011,当不存在被触发的软中断,其优先级高于当前软中断的优先级时,判断嵌套计数器是否为0;
当不存在被触发的软中断,其优先级高于当前软中断时,表明当前软中断的优先级最高,则判断嵌套计数器是否为0,即所有软中断是否执行完毕。
在嵌套计数器不为0时,返回执行被触发软中断的优先级队列中最高优先级的软中断;
嵌套计数器不为0,则已触发的软中断未执行完毕,返回到正在执行的软中断。
在嵌套计数器为0时,返回任务调度。
嵌套计数器为0,则所有已触发的软中断已执行完毕,返回任务调度。
本实施例在上述实施例在基础上,将软中断和硬中断的执行都在系统栈执行,节约了内存空间。
参照图4,提出本发明一种实时操作系统的软中断实现装置一实施例,包括:
第一判断模块10,用于判断是否存在被触发的软中断,其优先级高于当前软中断的优先级,其中,优先级为预先设置;
加数模块20,用于当存在被触发的软中断,其优先级高于当前软中断的优先级时时,将预设的嵌套计数器加预设值;
执行模块30,用于执行被触发软中断的优先级队列中最高优先级的软中断;
减数模块40,用于将嵌套计数器减预设值,并利用第一判断模块10继续进行判断,直到嵌套计数器为0。
本发明的实时操作系统的软中断实现装置,可内置于操作系统。实时操作系统的软中断实现装置在任务或软中断中调用接口触发软中断,如果该软中断的触发标记显示该软中断的当前状态为已触发,则直接返回触发调用处,此次触发无效。
如该软中断的触发标记显示该软中断的当前状态为未触发,将软中断入相应的优先级队列进行管理,软中断的优先级为根据需要预先设置。
第一判断模块10判断各软中断优先级队列中是否存在比当前在执行的软中断更高优先级的软中断。
如果存在比当前在执行的软中断更高优先级的软中断,加数模块20将预设的嵌套计数器加预设值,该预设值通常为1,表明存在嵌套。并可将最高优先级队列的首个软中断标识为已触发。
执行模块30执行被触发软中断的优先级队列中最高优先级队列中的一软中断,通常为该队列中的首个软中断,执行过程为:开中断,进行软中断的中断服务程序,再关中断。
当执行完最高优先级队列中的一软中断后,减数模块40将嵌套计数器减1,并由第一判断模块10重新判断是否存在被触发的软中断,其优先级高于当前软中断,直到嵌套计数器为0。
以任务A触发软中断B为例,首先根据软中断B的触发标识判断该软中断B之前没有被触发,将软中断B放入相应的优先级队列如优先级2的队列。由于软中断的优先级高于任务,则嵌套计数器加1,可将软中断B标识为已触发,并开中断,执行软中断B,当执行过程中,软中断B又触发软中断C,如软中断C的优先级为1,则由于软中断C的优先级高于软中断B的优先级,则嵌套计数器再加1,执行软中断C,执行完软中断C后嵌套计数器减1,返回判断是否存在比软中断B更高优先级的软中断,如不存在则继续执行软中断B,软中断B执行完毕后返回执行任务A。
本发明提出的一种实时操作系统的软中断实现装置,通过中断嵌套,实现高优先级软中断抢占低优先级软中断嵌套服务机制。
参照图5,提出本发明一种实时操作系统的软中断实现装置又一实施例,本实施例中,上述装置还包括:
删除中断模块50,用于将最高优先级的软中断标识为已触发,并从该队列中删除该软中断;
更改标识模块60,用于当该队列为空时,更改该队列的队空标识。
优先级队列的队空标识可以为0或者1,当队列中有队员时则置1,当队列中队空时则置0,实时操作系统的软中断实现装置可以根据队空标识判断该队列是否为空。
本实施例中,可将执行的软中断从优先级队列中删除,并更改该队列的队空标识,在上述实施例的基础上,节约了系统资源。
参照图6,提出本发明一种实时操作系统的软中断实现装置另一实施例,上述装置还包括:
第四判断模块130,用于判断被触发的软中断是否为硬中断触发;
硬中断模块70,用于当被触发的软中断为硬中断触发时,执行该硬中断。
第三判断模块80,用于当被触发的软中断非硬中断触发时,判断嵌套计数器是否为0;
栈切换模块90,用于当嵌套计数器为0时,切换系统栈。
第二判断模块100,用于当不存在被触发的软中断,其优先级高于当前软中断的优先级时,判断嵌套计数器是否为0;
返回软中断模块110,用于在嵌套计数器不为0时,利用执行模块30执行被触发软中断的优先级队列中最高优先级的软中断;
返回任务模块120,用于在嵌套计数器为0时,返回任务调度。
第四判断模块130判断被触发的软中断是否为硬中断触发,当被触发的软中断为硬中断触发时,则硬中断模块70优先执行硬中断。
当被触发的软中断非硬中断触发时,第三判断模块80判断嵌套计数器是否为0,即该软中断是否为第一个被触发的软中断。
当嵌套计数器为0时,则栈切换模块90由当前任务栈切换到系统栈。
当不存在被触发的软中断,其优先级高于当前软中断时,表明当前软中断的优先级最高,则第二判断模块100判断嵌套计数器是否为0,即所有软中断是否执行完毕。
嵌套计数器不为0,则已触发的软中断未执行完毕,返回软中断模块110返回到正在执行的软中断。
嵌套计数器为0,则所有已触发的软中断已执行完毕,返回任务模块120返回任务调度。
本实施例在上述实施例在基础上,将软中断和硬中断的执行都在系统栈执行,节约了内存空间。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种实时操作系统的软中断实现方法,其特征在于,包括:
步骤1、判断是否存在被触发的软中断,其优先级高于当前软中断的优先级;其中,优先级为预先设置;
步骤2、当存在被触发的软中断,其优先级高于当前软中断的优先级时,将预设的嵌套计数器加预设值;
步骤3、执行被触发软中断的优先级队列中最高优先级的软中断;
步骤4、将嵌套计数器减预设值,并返回步骤1,直到嵌套计数器为0。
2.如权利要求1所述的实时操作系统的软中断实现方法,其特征在于,在执行所述执行被触发软中断的优先级队列中最高优先级的软中断之前,包括:
将所述最高优先级的软中断标识为已触发,并从该队列中删除该软中断;
当该队列为空时,更改该队列的队空标识。
3.如权利要求1或2所述的实时操作系统的软中断实现方法,其特征在于,在执行所述判断是否存在被触发的软中断,其优先级高于当前软中断的优先级之后,包括:
当不存在被触发的软中断,其优先级高于当前软中断的优先级时,判断嵌套计数器是否为0;
在嵌套计数器不为0时,返回执行被触发软中断的优先级队列中最高优先级的软中断;
在嵌套计数器为0时,返回任务调度。
4.如权利要求1或2所述的实时操作系统的软中断实现方法,其特征在于,在执行所述判断是否存在被触发的软中断,其优先级高于当前软中断的优先级之前,包括:
判断被触发的软中断是否为硬中断触发;
当被触发的软中断为硬中断触发时,执行该硬中断。
5.如权利要求4所述的实时操作系统的软中断实现方法,其特征在于,在执行所述判断被触发的软中断是否为硬中断触发之后,包括:
当被触发的软中断非硬中断触发时,判断嵌套计数器是否为0;
当嵌套计数器为0时,切换系统栈。
6.一种实时操作系统的软中断实现装置,其特征在于,包括:
第一判断模块,用于判断是否存在被触发的软中断,其优先级高于当前软中断的优先级;其中,优先级为预先设置;
加数模块,用于当存在被触发的软中断,其优先级高于当前软中断的优先级时,将预设的嵌套计数器加预设值;
执行模块,用于执行被触发软中断的优先级队列中最高优先级的软中断;
减数模块,用于将嵌套计数器减预设值,并利用第一判断模块继续进行判断,直到嵌套计数器为0。
7.如权利要求6所述的实时操作系统的软中断实现装置,其特征在于,还包括:
删除中断模块,用于将所述最高优先级的软中断标识为已触发,并从该队列中删除该软中断;
更改标识模块,用于当该队列为空时,更改该队列的队空标识。
8.如权利要求6或7所述的实时操作系统的软中断实现装置,其特征在于,还包括:
第二判断模块,用于当不存在被触发的软中断,其优先级高于当前软中断的优先级时,判断嵌套计数器是否为0;
返回软中断模块,用于在嵌套计数器不为0时,利用执行模块执行被触发软中断的优先级队列中最高优先级的软中断;
返回任务模块,用于在嵌套计数器为0时,返回任务调度。
9.如权利要求6或7所述的实时操作系统的软中断实现装置,其特征在于,还包括:
第四判断模块,用于判断被触发的软中断是否为硬中断触发;
硬中断模块,用于当被触发的软中断为硬中断触发时,执行该硬中断。
10.如权利要求9所述的实时操作系统的软中断实现装置,其特征在于,还包括:
第三判断模块,用于当被触发的软中断非硬中断触发时,判断嵌套计数器是否为0;
栈切换模块,用于当嵌套计数器为0时,切换系统栈。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106163678A CN102567104A (zh) | 2010-12-30 | 2010-12-30 | 实时操作系统的软中断实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106163678A CN102567104A (zh) | 2010-12-30 | 2010-12-30 | 实时操作系统的软中断实现方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102567104A true CN102567104A (zh) | 2012-07-11 |
Family
ID=46412595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106163678A Pending CN102567104A (zh) | 2010-12-30 | 2010-12-30 | 实时操作系统的软中断实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567104A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103676727A (zh) * | 2013-11-27 | 2014-03-26 | 南京国电南自美卓控制系统有限公司 | 基于嵌入式芯片的可抢占、可嵌套中断控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490722A (zh) * | 2003-09-19 | 2004-04-21 | 清华大学 | 基于PowerPC处理器结构的分级任务切换方法 |
CN101140550A (zh) * | 2007-08-22 | 2008-03-12 | 中兴通讯股份有限公司 | 一种嵌入式实时系统中断处理装置及方法 |
-
2010
- 2010-12-30 CN CN2010106163678A patent/CN102567104A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490722A (zh) * | 2003-09-19 | 2004-04-21 | 清华大学 | 基于PowerPC处理器结构的分级任务切换方法 |
CN101140550A (zh) * | 2007-08-22 | 2008-03-12 | 中兴通讯股份有限公司 | 一种嵌入式实时系统中断处理装置及方法 |
Non-Patent Citations (3)
Title |
---|
《邵阳学院学报(自然科学版)》 20080630 夏菽兰 嵌入式OS中的多任务调度算法及性能 第37-40页 第5卷, 第2期 * |
夏菽兰: "嵌入式OS中的多任务调度算法及性能", 《邵阳学院学报(自然科学版)》 * |
黄守明等: "嵌入式实时操作系统中的一种互斥方法", 《福建电脑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103676727A (zh) * | 2013-11-27 | 2014-03-26 | 南京国电南自美卓控制系统有限公司 | 基于嵌入式芯片的可抢占、可嵌套中断控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101658035B1 (ko) | 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법 | |
CN107800546B (zh) | 一种广播消息的管理方法及装置 | |
CN102043667A (zh) | 一种嵌入式操作系统的任务调度方法 | |
CA2849565C (en) | Method, apparatus, and system for scheduling processor core in multiprocessor core system | |
US7689749B2 (en) | Interrupt control function adapted to control the execution of interrupt requests of differing criticality | |
CN101246437A (zh) | 一种嵌入式实时系统进程均衡调度方法 | |
CN106406991B (zh) | 一种ThreadX操作系统在ARM处理器上的运行方法 | |
JP2003345612A5 (zh) | ||
CN104536827A (zh) | 一种数据调度方法和装置 | |
CN105027081B (zh) | 一种轮询和中断的切换方法及装置 | |
CN106155803B (zh) | 一种基于信号量的线程池共享方法及系统 | |
EP3056991A1 (en) | Apparatus and method for managing a plurality of threads in an operating system | |
US10271326B2 (en) | Scheduling function calls | |
CN110427257A (zh) | 多任务调度方法、装置及计算机可读存储介质 | |
CN102323895A (zh) | 一种基于机顶盒嵌入式操作系统实时调度方法 | |
CN103676727A (zh) | 基于嵌入式芯片的可抢占、可嵌套中断控制方法 | |
CN102541642A (zh) | 一种增强实时性能的任务管理方法 | |
JP2007148746A (ja) | ヘテロマルチプロセッサシステムおよびそのos構成方法 | |
JP2004512590A5 (zh) | ||
CN105373425A (zh) | 一种嵌入式Linux系统性能优化的方法及装置 | |
CN107015931A (zh) | 用于中断处理的方法和加速器单元 | |
CN102567104A (zh) | 实时操作系统的软中断实现方法及装置 | |
CN100535864C (zh) | 一种系统进程调度下无效超时消息的方法及消息发送方法 | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 | |
CN102117261A (zh) | 一种芯片内部处理器之间的通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120711 |