一种数据处理方法及装置与流程

文档序号:12034441阅读:238来源:国知局
一种数据处理方法及装置与流程

本发明涉及计算机技术领域,更具体地说,涉及一种数据处理方法及装置。



背景技术:

进程是一个具有独立功能的程序关于某个数据集合的一次运动活动。他可以申请和拥有系统资源,是一个活动的实体。参见图1,优先级反转问题是指:一个低优先级进程c访问一个被高优先级进程a所需要的资源,高优先级进程a因资源缺乏而处于被阻塞状态,一直等到低优先级进程c结束对资源访问为止,如果在进程a等待过程中,有优先级处于进程c和进程a之间的进程b处于就绪状态,并且不需要进程c访问的资源,则进程b抢占处理器,即暂停运行进程c,且运行进程b。这样来看,本来应该优先级最高的进程a先运行,结果变成了中优先级的进程b先运行,好像进程a和进程b之间的优先级反转了一样,这就是优先级反转问题。

目前,解决优先级反转问题的主要方法是优先级继承,即高优先级进程等待一个低优先级进程访问的资源时,低优先级进程将暂时获得高优先级进程的优先级,在释放资源后,低优先级进程回到原来的优先级。这样由于低优先级进程暂时获得高优先级进程的优先级,则不会出现优先级处于两者之间的进程抢占处理器的情况,即不会出现优先级反转问题。但是该方法会引入因为更改优先级而导致的其他问题。因此,现在亟需一种新的方法来解决优先级反转问题。



技术实现要素:

有鉴于此,本发明提出一种数据处理方法及装置,欲减少优先级反转情况的发生,并且避免频繁更改优先级而导致的额外功率消耗,以及其它因更改优先级而导致的问题。

为了实现上述目的,现提出的方案如下:

一种数据处理方法,包括:

当第一进程占用处理器且访问第一资源时,若有第二进程发起对所述第一资源的访问请求,则将所述第二进程信息发送至第三进程进行保存,所述第二进程信息包括第二进程的优先级,所述第二进程的优先级高于所述第一进程;

当第一进程占用处理器且访问第一资源时,若有第四进程抢占所述处理器,则判断所述第四进程的优先级是否大于所述第三进程保存的最高优先级的第二进程的优先级,所述第四进程的优先级高于所述第一进程;

若所述第四进程的优先级不大于所述第三进程保存的最高优先级的第二进程的优先级,则所述第一进程继续占用所述处理器,且将所述第四进程挂起。

优选的,所述方法还包括:

在所述第一进程结束访问所述第一资源后,选择所述第三进程保存的最高优先级的第二进程占用所述处理器且访问所述第一资源。

优选的,所述方法还包括:

若所述第四进程的优先级大于所述第三进程保存的最高优先级的第二进程的优先级,则允许所述第四进程抢占所述处理器。

一种数据处理装置,包括:

进程信息单元,用于当第一进程占用处理器且访问第一资源时,若有第二进程发起对所述第一资源的访问请求,则将所述第二进程信息发送至第三进程进行保存,所述第二进程信息包括第二进程的优先级,所述第二进程的优先级高于所述第一进程;

判断单元,用于当第一进程占用处理器且访问第一资源时,若有第四进程抢占所述处理器,则判断所述第四进程的优先级是否大于所述第三进程保存的最高优先级的第二进程的优先级,所述第四进程的优先级高于所述第一进程;

第一处理单元,用于若所述第四进程的优先级不大于所述第三进程保存的最高优先级的第二进程的优先级,则所述第一进程继续占用所述处理器,且将所述第四进程挂起。

优选的,所述装置还包括:

第二处理单元,用于在所述第一进程结束访问所述第一资源后,选择所述第三进程保存的最高优先级的第二进程占用所述处理器且访问所述第一资源。

优选的,所述装置还包括:

第三处理单元,用于若所述第四进程的优先级大于所述第三进程保存的最高优先级的第二进程的优先级,则允许所述第四进程抢占所述处理器。

与现有技术相比,本发明的技术方案具有以下优点:

上述技术方案提供的一种数据处理方法及装置,由第三进程保存需要第一资源的第二进程信息,如果抢占处理器的进程的优先级不大于第三进程保存的最高优先级的进程的优先级,则不允许其抢占处理器。进而减少了优先级反转情况的发生,并且避免频繁更改优先级而导致的额外功率消耗,以及其它因更改优先级而导致的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为优先级反转示意图;

图2为本发明实施例提供的一种数据处理方法的流程图;

图3为本发明实施例提供的另一种数据处理方法的流程图;

图4为本发明实施例提供的另一种数据处理方法的流程图;

图5为本发明实施例提供的避免优先级反转的示意图;

图6为本发明实施例提供的避免优先级反转的示意图;

图7为本发明实施例提供的一种数据处理装置的结构示意图;

图8为本发明实施例提供的另一种数据处理装置的结构示意图;

图9为本发明实施例提供的另一种数据处理装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的核心思想为管理进程维护一条需要当前进程持有的资源的等待进程链,若有进程要抢占当前进程,则管理进程将等待进程链上的最高优先级与要抢占的进程的优先级进行比较,然后判断是否允许。通过添加专门的管理进程来管理可能出现优先级反转的进程抢占,尽可能避免出现优先级反转的情况。使得一些对资源需求紧迫而不希望被其他进程干扰而延迟的进程,能够尽快得到资源而征程运行。

本实施例提供了一种数据处理方法,参见图2,该方法可以包括:

步骤s11:当第一进程占用处理器且访问第一资源时,若有第二进程发起对所述第一资源的访问请求,则将所述第二进程信息发送至第三进程进行保存。

第二进程信息包括第二进程的优先级,第二进程的优先级高于所述第一进程。第一进程即为占用处理器的当前进程。第一资源即为临界资源,一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如打印机等。第三进程即维护需要当前进程持有的资源的等待进程链的管理进程。第二进程处于就绪状态,发起对第一资源的访问请求时,若发现第一资源正在被第一进程访问,则第二进程被挂起,为了保证第二进程不会被优先级低的进程干扰,在挂起第二进程前,向第三进程发送通知,第三进程建立一条等待第一资源的等待进程链。等待进程链包含第二进程的优先级。

步骤s12:当第一进程占用处理器且访问第一资源时,若有第四进程抢占所述处理器,则判断所述第四进程的优先级是否大于所述第三进程保存的最高优先级的第二进程的优先级;

第四进程的优先级高于所述第一进程。传统的数据处理方法,若存在不需求第一资源的进程,抢占第一进程占用的处理器时,只要该进程的优先级高于第一进程的优先级即可抢占成功。而本申请在不需求第一资源的进程,抢占第一进程占用的处理器时,还判断其优先级是否大于第三进程保存的最高优先级的第二进程的优先级。

步骤s13:若所述第四进程的优先级不大于所述第三进程保存的最高优先级的第二进程的优先级,则所述第一进程继续占用所述处理器,且将所述第四进程挂起。

为了防止出现优先级反转的情况,在判断出第四进程的优先级不大于第三进程保存的最高优先级的第二进程的优先级后,禁止第四进程抢占处理器,即将第四进程挂起,第一进程继续占用处理器。

本实施例提供一种数据处理方法,由第三进程保存需要第一资源的第二进程信息,如果抢占处理器的进程的优先级不大于第三进程保存的最高优先级的进程的优先级,则不允许其抢占处理器。进而减少了优先级反转情况的发生,并且避免频繁更改优先级而导致的额外功率消耗,以及其它因更改优先级而导致的问题。

本实施例提供了一种数据处理方法,参见图3,该方法可以包括:

步骤s21:当第一进程占用处理器且访问第一资源时,若有第二进程发起对所述第一资源的访问请求,则将所述第二进程信息发送至第三进程进行保存。

步骤s22:当第一进程占用处理器且访问第一资源时,若有第四进程抢占所述处理器,则判断所述第四进程的优先级是否大于所述第三进程保存的最高优先级的第二进程的优先级;

步骤s23:若所述第四进程的优先级不大于所述第三进程保存的最高优先级的第二进程的优先级,则所述第一进程继续占用所述处理器,且将所述第四进程挂起。

步骤s24:在所述第一进程结束访问所述第一资源后,选择所述第三进程保存的最高优先级的第二进程占用所述处理器且访问所述第一资源。

在第一进程占用处理器且访问第一资源过程中,可能会存在多个第二进程对第一资源发起过访问请求,都因为第一资源被第一进程访问而被阻塞挂起。第三进程维护的等待进程链保存所有在第一进程占用处理器且访问第一资源过程中,对第一资源发起访问请求的第二进程的信息。在第一进程结束访问第一资源后,按照第三进程保存的所有第二进程的优先级从高到低顺序,依次占用所述处理器且访问所述第一资源。例如,第三进程保存的所有第二进程的优先级从高到低顺序为:进程a、进程b、进程c;在第一进程结束访问第一资源后,进程a占用处理器且访问第一资源,此时,进程a为第一进程,继续执行步骤s21、s22、s23。其中,步骤s21、s22、s23分别与步骤s11、s12、s13一致。

本实施例提供了一种数据处理方法,参见图4,该方法可以包括:

步骤s31:当第一进程占用处理器且访问第一资源时,若有第二进程发起对所述第一资源的访问请求,则将所述第二进程信息发送至第三进程进行保存。

步骤s32:当第一进程占用处理器且访问第一资源时,若有第四进程抢占所述处理器,则判断所述第四进程的优先级是否大于所述第三进程保存的最高优先级的第二进程的优先级;

步骤s33:若所述第四进程的优先级不大于所述第三进程保存的最高优先级的第二进程的优先级,则所述第一进程继续占用所述处理器,且将所述第四进程挂起。

步骤34:若所述第四进程的优先级大于所述第三进程保存的最高优先级的第二进程的优先级,则允许所述第四进程抢占所述处理器。

若第四进程的优先级大于第三进程保存的最高优先级的第二进程的优先级,允许第四进程抢占第一进程占用的处理器,则不属于优先级反转的情况。因此,在第四进程的优先级大于所述第三进程保存的最高优先级的第二进程的优先级时,允许第四进程抢占第一进程占用处理器,即暂停运行第一进程,而运行第四进程。

其中,步骤s31、s32、s33分别与步骤s11、s12、s13一致。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。

举例说明,参见图5,系统中有三个不同优先级的进程。

进程a为高优先级,进程b为中优先级,进程c为低优先级。进程c正在运行中,且访问资源s未结束;这时高优先级的进程a处于就绪状态并被调用,但是进程a需要正被进程c访问的资源s,因而进程a被阻塞挂起;之后中优先级的进程b处于就绪状态并被调用,由于进程b不需要资源s,且优先级高于进程c,因此,进程b将抢占进程c占用的处理器。如果允许这种情况发生,将会出现优先级反转。

为了避免中优先级的进程b比高优先级的进程a先运行,设置专门的管理进程m来管理。当进程a处于就绪状态并被调度时,发现所需的资源s正被进程c访问,进程a将会被挂起。为保护进程a不会被相对其优先级低的进程先运行,在挂起a之前,想管理进程m发送通知,进程m建一条等待资源s的等待进程链l。进程b试图抢占进程c占用的处理器时,将进程b的优先级与等待进程链l中进程a的优先级比较,进程b的优先级小于进程a的优先级,因此,将进程b挂起,进程c继续运行。待进程c结束后,进程a和进程b按照优先级从高到低依次执行。

参见图6,系统中有八个不同优先级的进程。

进程1~8的优先级分别为15、18、16、20、19、22、17、23。数值越大表示优先级越高。进程1正在访问资源s,进程2、进程4、进程6需要访问资源s,进程3、进程5、进程7、进程8不需要方位资源s。

在时刻1,进程1访问资源s并运行;在时刻2,进程2准备运行,由于需要资源s而挂起,在挂起之前进程2首先告知管理进程需要创建并维护一条等待资源s的等待进程链,此时链中只有进程2的相关信息;在时刻3,进程3准备运行,进程3的优先级16大于正在运行的进程1的优先级15,但小于等待进程链l中进程最高优先级18,这时禁止进程3抢占处理器;在时刻4,进程4准备运行,进程4需要访问资源s,因此也将挂起,并加入到等待进程链l中,此时等待进程链l中进程最高优先级为20;在时刻5,进程5准备运行,进程5不需要访问资源s,进程5的优先级19大于正在运行的进程1的优先级15,但小于等待进程链l中进程的最高优先级20,这时禁止进程5抢占处理器;在时刻6,进程6准备运行,进程6需要访问资源s,因此也将挂起,并加入到等待进程链l中,此时等待进程链l中进程的最高优先级为22;在时刻7,进程7准备运行,进程7不需要访问资源s,进程7的优先级17大于正在运行的进程1的优先级15,但小于等待进程链l中进程的最高优先级22,禁止进程7抢占处理器。

在时刻8,进程8准备运行,此时等待进程链l中有进程2、进程4和进程6的相关信息,最高优先级为22,而进程8的优先级为23,因此允许进程8抢占正在运行的进程1占用的处理器。每时刻的进程运行情况及等待进程链l的状态如下表所示。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

本实施例提供一种数据处理装置,参见图7,该装置包括:进程信息单元11、判断单元12和第一处理单元13;

进程信息单元11,用于当第一进程占用处理器且访问第一资源时,若有第二进程发起对所述第一资源的访问请求,则将所述第二进程信息发送至第三进程进行保存,所述第二进程信息包括第二进程的优先级,所述第二进程的优先级高于所述第一进程;

判断单元12,用于当第一进程占用处理器且访问第一资源时,若有所述第四进程抢占所述处理器,则判断所述第四进程的优先级是否大于所述第三进程保存的最高优先级的第二进程的优先级;

第一处理单元13,用于若所述第四进程的优先级不大于所述第三进程保存的最高优先级的第二进程的优先级,则所述第一进程继续占用所述处理器,且将所述第四进程挂起。

本实施例提供一种数据处理装置,由第三进程保存需要第一资源的第二进程信息,如果抢占处理器的进程的优先级不大于第三进程保存的最高优先级的进程的优先级,则不允许其抢占处理器。进而减少了优先级反转情况的发生,并且避免频繁更改优先级而导致的额外功率消耗,以及其它因更改优先级而导致的问题。

本实施例提供另一种数据处理装置,参见图8,该装置相对于图6公开的数据处理装置,还包括:

第二处理单元14,用于在所述第一进程结束访问所述第一资源后,选择所述第三进程保存的最高优先级的第二进程占用所述处理器且访问所述第一资源。

本实施例提供另一种数据处理装置,参见图9,该装置相对于图6公开的数据处理装置,还包括:

第三处理单元15,用于若所述第四进程的优先级大于所述第三进程保存的最高优先级的第二进程的优先级,则允许所述第四进程抢占所述处理器。

对于装置实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

对本发明所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1