一种基于分区操作系统的阻塞性系统调用处理方法

文档序号:9646483阅读:480来源:国知局
一种基于分区操作系统的阻塞性系统调用处理方法
【技术领域】
[0001]本发明属于计算机系统软件专业技术领域,具体涉及一种基于分区操作系统的阻塞性系统调用处理方法。
【背景技术】
[0002]随着航空电子系统的加速发展,航空电子系统综合度和复杂度越来越高,原先的联合式、分散的各种航空电子子系统被集成到一起,以减轻飞机系统的重量,提高硬件资源利用率,并提高未来飞机的作战能力。模块化、综合化航空电子系统要求使用分区操作系统,保证随硬件综合之后的软件在时间和空间上的隔离性。
[0003]而在分区操作系统的背景下,分区内的进程通过系统调用请求核心操作系统服务,当系统调用的服务为阻塞性服务且所请求的资源无法得到满足时,将导致整个分区被阻塞,影响分区的正常执行。所以需要为这种情况提供一个专门的处理机制,提升系统运行效率。

【发明内容】

[0004]为了解决【背景技术】中的问题,本发明提出了一种在分区内某进程调用阻塞性系统调用时,不阻塞分区,仅阻塞该进程,分区内其他进程在等待阻塞性系统调用完成时依然可以运行的基于分区操作系统的阻塞性系统调用处理方法。
[0005]本发明的具体技术方案是:
[0006]本发明提出了一种基于分区操作系统的阻塞性系统调用处理方法,其特征在于,包括以下步骤:
[0007]1)在核心操作系统内创建worker任务;所述worker任务用来代替分区任务调用阻塞性服务;所述worker任务的优先级高于分区任务优先级;
[0008]2)分区内某进程开始调用阻塞性系统调用;
[0009]3)核心操作系统将步骤2)调用的阻塞性系统调用交由worker任务执行;
[0010]4) worker任务调用阻塞性系统调用,导致worker任务阻塞;
[0011]5)分区操作系统阻塞步骤2)中所述的进程;
[0012]6)当条件满足时,解除核心操作系统中worker任务阻塞状态,worker任务通知分区操作系统阻塞性系统调用完成;
[0013]7)分区操作系统解除步骤5)中所述的阻塞状态,阻塞性系统调用完成。
[0014]上述步骤6)中的条件包括worker任务获取到等待的资源或worker任务等待超时。
[0015]上述等待的资源包括信号量、消息队列。
[0016]本发明的思路是分区内某进程调用阻塞性系统调用,则仅阻塞该进程,使得分区内其他进程可以执行。
[0017]每个分区都作为核心操作系统的一个任务,按照调度表进行调度;分区内每个进程按照优先级抢占原则进行调度。
[0018]当分区中一个进程调用阻塞性系统调用时,该分区任务会调用该系统调用,从而导致整个分区阻塞,分区内的所有进程都不能执行。这种情况下,造成CPU资源的浪费,整个系统性能低下。
[0019]本发明的思路是当分区中某进程调用阻塞性系统调用时,不使用分区任务调用阻塞性系统调用,而是启动另一个任务(称为worker任务,通常优先级高于分区任务)调用阻塞性系统调用,然后在分区中阻塞该进程直到系统调用完成,当worker任务调用阻塞性系统调用完成后通知分区,分区接到通知后,解除该进程的阻塞状态,该进程可继续运行。
[0020]本发明的优点在于:
[0021]1、采用本发明的方法分区不会因为一个进程调用阻塞性系统调用而影响整个分区的运行,大幅提高了 CPU资源的利用率,提升了分区执行效率。
【附图说明】
[0022]图1是阻塞性系统调用流程图;
【具体实施方式】
[0023]本发明提出了一种基于分区操作系统的阻塞性系统调用处理方法,其特征在于,包括以下步骤:
[0024]1)在核心操作系统内创建worker任务;所述worker任务用来代替分区任务调用阻塞性服务;所述worker任务的优先级高于分区任务优先级;
[0025]2)分区内某进程开始调用阻塞性系统调用;
[0026]3)核心操作系统将步骤2)调用的阻塞性系统调用交由worker任务执行;
[0027]4) worker任务调用阻塞性系统调用,导致worker任务阻塞;
[0028]5)分区操作系统阻塞步骤2)中所述的进程;
[0029]6)当条件满足时,解除核心操作系统中worker任务阻塞状态,worker任务通知分区操作系统阻塞性系统调用完成;
[0030]其中,条件包括worker任务获取到等待的资源或worker任务等待超时。
[0031 ] 其中,等待的资源包括信号量、消息队列。
[0032]7)分区操作系统解除步骤5)中所述的阻塞状态,阻塞性系统调用完成。
[0033]本发明的思路是分区内某进程调用阻塞性系统调用,则仅阻塞该进程,使得分区内其他进程可以执行。
[0034]每个分区都作为核心操作系统的一个任务,按照调度表进行调度;分区内每个进程按照优先级抢占原则进行调度。
[0035]当分区中一个进程调用阻塞性系统调用时,该分区任务会调用该系统调用,从而导致整个分区阻塞,分区内的所有进程都不能执行。这种情况下,造成CPU资源的浪费,整个系统性能低下。
[0036]本发明的思路是当分区中某进程调用阻塞性系统调用时,不使用分区任务调用阻塞性系统调用,而是启动另一个任务(称为worker任务,通常优先级高于分区任务)调用阻塞性系统调用,然后在分区中阻塞该进程直到系统调用完成,当worker任务调用阻塞性系统调用完成后通知分区,分区接到通知后,解除该进程的阻塞状态,该进程可继续运行。
[0037]根据本方法调用阻塞性系统调用示例,如图1所示:
[0038]1.进程1在分区中调用阻塞性系统调用从设备读取数据;
[0039]2.核心操作系统将该阻塞性系统调用交由worker任务执行;
[0040]3.worker任务向设备发送请求,然后阻塞自身等待设备回应;
[0041]4.分区操作系统阻塞调用进程1,以等待阻塞性系统调用完成;
[0042]5.优先级稍低的进程2运行;
[0043]6.设备回应请求,解除对worker任务的阻塞;
[0044]7.worker任务执行完成,通知分区操作系统;
[0045]8.分区操作系统接到通知,解除进程1的阻塞状态,由于进程1优先级较高,抢占进程2运行,阻塞性系统调用完成。
【主权项】
1.一种基于分区操作系统的阻塞性系统调用处理方法,其特征在于,包括以下步骤: 1)在核心操作系统内创建worker任务;所述worker任务用来代替分区任务调用阻塞性服务;所述worker任务的优先级高于分区任务优先级; 2)分区内某进程开始调用阻塞性系统调用; 3)核心操作系统将步骤2)调用的阻塞性系统调用交由worker任务执行; 4)worker任务调用阻塞性系统调用,导致worker任务阻塞; 5)分区操作系统阻塞步骤2)中所述的进程; 6)当条件满足时,解除核心操作系统中worker任务阻塞状态,worker任务通知分区操作系统阻塞性系统调用完成; 7)分区操作系统解除步骤5)中所述的阻塞状态,阻塞性系统调用完成。2.根据权利要求1所述的基于分区操作系统的阻塞性系统调用处理方法,其特征在于:所述步骤6)中的条件包括worker任务获取到等待的资源或worker任务等待超时。3.根据权利要求2所述的基于分区操作系统的阻塞性系统调用处理方法,其特征在于:所述等待的资源包括信号量、消息队列。
【专利摘要】本发明属于计算机系统软件专业技术领域,涉及两级操作系统架构的阻塞性系统调用方法。该方法包括1)核心操作系统内创建worker任务;2)分区内某进程开始调用阻塞性系统调用;3)核心操作系统将步骤2)调用的阻塞性系统调用交由worker任务执行;4)worker任务调用阻塞性系统调用,导致worker任务阻塞;5)分区操作系统阻塞步骤2)中所述的进程;6)worker任务解除阻塞状态;7)解除调用系统的阻塞状态。该方法在分区内某进程调用阻塞性系统调用时,不阻塞分区,仅阻塞该进程,分区内其他进程在等待阻塞性系统调用完成时依然可以运行,提高了工作性能。
【IPC分类】G06F9/48
【公开号】CN105404550
【申请号】CN201510902249
【发明人】张东, 时磊, 曹原, 卫一芃, 梅涛
【申请人】中国航空工业集团公司西安航空计算技术研究所
【公开日】2016年3月16日
【申请日】2015年12月8日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1