CN100349149C - 嵌入式实时操作***的进程调度方法 - Google Patents
嵌入式实时操作***的进程调度方法 Download PDFInfo
- Publication number
- CN100349149C CN100349149C CNB031152104A CN03115210A CN100349149C CN 100349149 C CN100349149 C CN 100349149C CN B031152104 A CNB031152104 A CN B031152104A CN 03115210 A CN03115210 A CN 03115210A CN 100349149 C CN100349149 C CN 100349149C
- Authority
- CN
- China
- Prior art keywords
- priority
- queue
- ready
- delay
- formation
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本发明提出一种嵌入式实时操作***的进程调度方法,包括建立进程所需资源的步骤和调度进程的步骤;建立进程所需资源主要是定义进程的模型、队列以及映射表、逆映射表的内容;调度进程则针对进程在就绪队列、阻塞队列、延迟队列和挂起队列的进出过程进行了描述。本发明所述进程调度方法采用了“映射表+逆映射表+链表”的技术措施,在进程切换时间、支持的最大进程数、支持的优先级数等方面都取得了很大的进步,达到了商用实时***的性能要求;本发明采用简洁高效的延迟进程队列处理方法,极大地减轻了***的负荷;本发明具有高效、高可靠性、适用范围广的特点,支持256个优先级,无穷多进程,具有更短的微秒级常数的进程切换时间。
Description
技术领域
本发明涉及计算机操作***的进程调度方法,尤其涉及嵌入式***和实时***的进程调度方法。
背景技术
进程调度(或称任务调度)是嵌入式实时操作***(Real-Time OperatingSystem,简称RTOS)中最关键、最核心的部分,进程调度的效率高低,直接关系到RTOS的效率和性能。对于RTOS的进程调度技术,通常采用下述指标进行衡量:a)***支持的优先级的个数Np:优先级的个数越多,进行上层应用程序设计的余地越大,对于现代RTOS***,Np数应当大于等于64;b)***支持的进程(任务)个数Nt:进程个数Nt越大,上层应用程序所受的限制就越小,设计也更方便,通信***中采用的RTOS***,要求进程个数Nt应当不小于256,理想的进程个数Nt应该无穷大,即进程个数不受限于进程调度,而仅受限于***资源;c)进程的切换时间Ts:Ts越小越好,且应当为常数。
现有的μC/OS-II操作***是开放源码的、基于优先级可抢占式多进程***,每一个优先级只容纳一个进程,其进程状态较为简单,包括运行、就绪、休眠和挂起四个状态。μC/OS-II操作***的上述三个指标分别为Np=64,Nt=64,Ts为微秒级且是常数,其主要缺点是优先级与进程的紧密结合,导致Np和Nt的大小严重受限,使得该***无法在大型通信***中使用。
此外,美国风河公司(Wind River System)的商用嵌入式实时操作***VxWorks也是基于优先级可抢占式多进程***,支持256个优先级,每个优先级可容纳的进程数不受限制,但其获得最高优先级就绪进程的算法耗时较多,对于延迟进程队列的处理所需时间很长。
发明内容
本发明所要解决的技术问题是提出一种嵌入式实时***的进程调度方法,满足进程调度的指标,达到商用实时***的性能要求,解决现有技术中存在的处理时间长的问题。
本发明所述嵌入式实时操作***的进程调度方法,包括建立进程所需资源的步骤和调度进程的步骤;
所述建立进程所需资源的步骤,包括:
一、确定进程的状态;
二、建立就绪队列,所述就绪队列包括由16位无符号变量和大小为16的数组构成的头部以及一个大小为256的数组;
三、建立并初始化映射表为
unsigned char const MapTbl[]={
0×0001,0×0002,0×0004,0×0008,0×0010,0×0020,0×0040,0×0080,
0×0100,0×0200,0×0400,0×0800,0×1000,0×2000,0×4000,0×8000};
四、建立并初始化逆映射表为
unsigned char const UnMapTbl[]={
0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0
};
五、建立挂起队列,所述挂起队列是初始化为空的链表;
六、为每一种互斥共享的资源标识建立一个阻塞队列,所述阻塞队列是初始化为空的先进先出链表;
七、建立延迟队列,所述延迟队列是根据节点被延迟时间进行排序的有序链表,被延迟时间短的节点在前;
八、建立包含标识进程状态的进程控制块结构;
所述调度进程的步骤包括:
一、创建进程,指定进程的优先级;
二、进程进入挂起队列;
三、如果进程被激活,则进入就绪队列;
四、根据就绪队列的头部查找逆映射表,获得当前就绪的最高优先级的进程;
五、根据最高优先级进程的进程控制块内容确定进程进入的队列;
六、如果进程进入就绪队列,则依据进程的优先级挂入就绪队列的相应位置,并根据优先级查找映射表,修改就绪队列的头部;如果进程被阻塞,则从进程原来所在队列中取出对应进程控制块,根据其优先级修改就绪队列的头部,并将其进程控制块以优先级为关键字放入阻塞队列;如果进程被延迟,则从进程原来所在队列中取出对应进程控制块,根据其优先级修改就绪队列的头部,并将其进程控制块以延迟时间为关键字***延迟队列;如果进程被挂起,则进程进入挂起队列。
本发明所述进程调度方法采用了“映射表+逆映射表+链表”的技术措施,在进程切换时间、支持的最大进程数、支持的优先级数等方面都取得了很大的进步,达到了商用实时***的性能要求;本发明采用简洁高效的延迟进程队列处理方法,极大地减轻了***的负荷;本发明具有高效、高可靠性、适用范围广的特点,支持256个优先级,无穷多进程,具有更短的微秒级常数的进程切换时间,更加高效的延迟队列处理,解决了现有技术中对优先级数Np和进程数Nt的限制,使其能够广泛适用于通信、航空、工业控制、新型智能设备等领域。
附图说明
图1是进程的状态迁移示意图;
图2是就绪队列的结构示意图;
图3是进程优先级和就绪队列头部中的BitTbl数组的对应关系;
图4是就绪队列的头部中BitTblSign变量和BitTbl数组的对应关系;
图5是进程进出延迟队列的示意图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
在进行进程调度之前,需要先建立进程调度的有关资源。
首先确定进程的状态模型。进程状态分为4种基本态:就绪、阻塞、延迟、阻塞且延迟,还有一种附加态——挂起。进程无论处于哪一种基本态,均可被挂起,从而形成就绪且挂起、阻塞且挂起、延迟且挂起、阻塞且延迟且挂起4种组合态。因此,进程的实际状态共有8种,即4种基本态加上4种组合态。
图1介绍了进程状态以及相互间的迁移关系,其中进程状态用含有英文字母的圆圈表示,S表示挂起状态;R表示就绪状态;B表示阻塞状态;D表示延迟状态;B&D表示阻塞且延迟状态;D&S表示延迟且挂起状态;B&S表示阻塞且挂起状态;B&D&S表示阻塞且延迟且挂起状态。当进程创建后,处于挂起状态(S态),可以被其它进程激活(Activate)而进入就绪态(R态),随后可以延迟(Delay)自身进入延迟态(D态),此期间可能被其它进程反延迟(Undelay)回到就绪态(R态),也可能被其它进程挂起,从而进入延迟且挂起状态(D&S态),延迟且挂起状态(D&S态)和延迟状态(D态)的进程在延迟到时后分别进入挂起状态(S态)和就绪状态(R态)。
处于就绪状态(R态)的进程如果以“坚持式获取”(Spoony Take)方式申请互斥共享的资源,且资源目前不可用,则进程进入阻塞态(B态),B态的进程可能被其它进程挂起,从而进入阻塞且挂起状态(B&S态),B&S态和B态的进程在资源变为可用之后分别进入S态和R态。
处于就绪状态(R态)的进程如果以“暂待式获取”(Ticks Take)方式申请互斥共享的资源,且资源目前不可用,则进程进入阻塞且延迟状态(B&D态),如果B&D态的进程在等待期间资源变为可用(对应至少一个Give操作),则返回R态,否则在等待超时(TimeOut)后返回D态,且返回错误;B&D态的进程可能被其它进程挂起,从而进入阻塞且延迟且挂起状态(B&D&S态)。如果B&D&S态的进程在等待期间资源变为可用(Give),则返回挂起状态(S态);如果在此期间被激活,则返回B&D态,如果等待超时则返回B态,且返回错误。
在***中仅有一个就绪队列、一个延迟队列和一个挂起队列,每一种互斥共享的资源标识(比如一个信号量)有一个阻塞队列。就绪队列中仅存入处于就绪状态(R态)的进程;处于延迟状态(D态)、延迟且挂起状态(D&S态)、阻塞且延迟且挂起状态(B&D&S态)的进程存在延迟队列中;处于组合态的进程均存在挂起队列中;处于阻塞状态(B态)、阻塞且挂起状态(B&S态)、阻塞且延迟且挂起状态(B&D&S态)的进程存在对应资源标识的阻塞队列中。进程是用进程控制块唯一标识的,由于采用指针挂接的方式,一个进程可以同时存在于多个队列中。
其次,建立就绪队列,图2是就绪队列(Ready Q)的结构示意图。该队列由一个头部和一个大小为256的Prio数组组成,其中队列头部包含一个16位的无符号变量BitTblSign和一个大小为16的BitTbl数组,其数组元素为16位无符号变量;Prio数组的元素是指向链表节点的头指针和尾指针,头指针指向其下属链表的第一个节点,尾指针指向其下属链表的最后一个节点,链表的节点即是进程。
下面定义挂起队列、阻塞队列和延迟队列。挂起队列用链表来实现,其初始值为空。对于每一种互斥共享的资源标识,都需建立一个阻塞队列,阻塞队列也采用链表实现,其初始值为空,进程采用先进先出的方式进出队列。延迟队列是一个有序链表,其排序依据是根据节点被延迟的时间,被延迟时间短的进程排在前面。
由于进程是由进程控制块唯一标识的,对进程的操作只能通过对进程控制块的操作来实现,因此在对进程进行调度前需要对进程控制块的结构进行说明,进程控制块结构中应当包含标识进程状态的数据。
然后,建立并初始化映射表和逆映射表。映射表大小是16,定义映射表为
unsigned char const MapTbl[]={
0×0001,0×0002,0×0004,0×0008,0×0010,0×0020,0×0040,0×0080,
0×0100,0×0200,0×0400,0×0800,0×1000,0×2000,0×4000,0×8000};
逆映射表的大小是256,定义为
unsigned char const UnMapTbl[]={
0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0};
以上介绍了在进程调度前所需的资源准备情况,建立了相应的队列、映射表和逆映射表,下面将详细介绍进程调度的方法。
进程创建后,处于挂起状态,进程的优先级也随之确定,进程进入挂起队列中。如果进程被激活,则进入就绪状态,进程依据其优先级挂入就绪队列的相应位置,利用优先级查找映射表,根据结果修改就绪队列头部的BitTbl数组和BitTblSign变量。如果进程转向其他状态,则需要把一个进程变为非就绪状态,首先从就绪队列中删除此进程的进程控制块,其次判定是否有与此进程同优先级的进程处于就绪状态,若有,则不需要改变BitTblSign变量和BitTbl数组的值;否则清除BitTblSign数组和BitTbl变量的对应位的值。这里需要注意对进程的操作顺序,必须先删除对应的进程控制块,再判定是否有与此进程同优先级的进程处于就绪状态,否则可能因待删除进程控制块的存在而导致判定错误。
图3介绍了进程优先级和就绪队列头部中BitTbl数组的对应关系。一个进程的优先级对应BitTbl数组中的一位。进程优先级是一个8位的无符号变量,其高4位(Y)确定其对应点位于BitTbl数组的哪一个元素,低4位(X)则确定其对应点位于此元素的哪一位。如果把BitTbl数组视为一个16×16的矩阵,那么进程优先级的高4位和低4位分别确定其对应点的纵坐标和横坐标。例如某进程的优先级为108,对应十六进制值为0x6C,则其Y坐标(从上往下)为6,其X坐标(从右往左)为0xC,即13,对应图2中标记为“108”的方格。若此进程已经就绪,则对应的“108”方格应为1,即BitTbl数组的对应位置为1。
图4是就绪队列头部中BitTblSign变量和BitTbl数组的对应关系示意图。BitTbl数组的第K个元素对应BitTblSign变量的第K位,如果变量BitTbl[K]不为零,则BitTblSign数组的第K位为1,否则BitTblSign数组的第K位为0。
结合图3与图4可以看出,256个优先级分别对应BitTbl数组的256个比特,这256个比特又分为16组,并使用BitTblSign变量实现对每一组的监控,从而解决了快速高效获得当前就绪最高优先级的问题。
获得当前就绪进程的最高优先级是调度部分最重要的任务。当需要获得当前就绪的最高优先级进程时,使用BitTblSign数组和BitTbl变量查逆映射表,获得当前最高优先级值,然后从就绪队列中取出此优先级对应链表的第一个节点(即进程控制块)。具体过程是首先把一个16位的数分为两个8位的部分查找逆映射表分别获得Y坐标和X坐标,然后通过图3所示的X、Y坐标与优先级的关系计算得出所求的优先级。
当获得了当前就绪进程的最高优先级后,以此值为下标在就绪队列的Prio数组中找到对应元素,其head指针指向的节点即为当前就绪最高优先级进程的进程控制块。
按照公平分配资源的原则,同一个优先级下的不同进程之间采用时间片轮转的方式,当预定的时间片到达时,原head指针指向节点的下一节点提升为head指针指向的节点,该节点所代表的进程变为当前运行进程,原head指针指向的节点移动到链表尾部。
进行重新调度的时机是全部嵌套的中断处理结束或退出内核模式或预定的时间片到时。
当就绪的进程转入阻塞状态时,从就绪队列中取出对应进程控制块,依据其优先级修改BitTblSign变量和BitTbl数组,并将其进程控制块以优先级为关键字放入阻塞队列。
当阻塞的进程转入就绪状态时,从阻塞队列中取出对应进程控制块,依据其优先级挂入就绪队列的相应位置。并利用优先级查找映射表,根据结果修改BitTbl数组和BitTblSign变量。
当就绪的进程被延迟时,从就绪队列中取出对应进程控制块,依据其优先级修改BitTblSign数组和BitTbl变量,并将其进程控制块以延迟时间为关键字***延迟队列中。
图5介绍了延迟队列(Delay Q)的***操作和删除操作。延迟队列Delay Q是一个有序的链表,越靠近队列头的节点越先到时(Time Out)。
当进程***时,从延迟队列的头部开始搜索***位置,具体方法是依据节点(进程控制块)的延迟时间,依次减去已跨越的节点的延迟时间,直到剩余值小于下一个节点的延迟时间时,挂入节点,再从下一个节点的延迟时间中减去剩余值。图5(a)、图5(b)、图5(c)说明了此过程。
当从延迟队列中删除进程时,只需将待删除节点的延迟时间加到其后继节点的延迟时间上,然后删除节点即可。图5(d)、图5(e)说明了此过程。
由于采用了上述方法,每一个时间单位过后,只需将延迟队列Delay Q的第一个节点的延迟时间减1,如果结果为零,则表明该节点的延迟时间已到,然后按图1所示的状态转移进行处理。该方法不需要在每个时间单位都遍历一次延迟队列,极大地减轻了***的负荷。
当延迟的进程超时后,依据其被延时前的状态决定将其放入哪个队列中。
Claims (6)
1、一种嵌入式实时操作***的进程调度方法,包括建立进程所需资源的步骤和调度进程的步骤;
所述建立进程所需资源的步骤,包括:
一、确定进程的状态;
二、建立就绪队列,所述就绪队列包括由16位无符号变量和大小为16的数组构成的头部以及一个大小为256的数组;
三、建立并初始化映射表为
unsigned char const MapTbl[]={
0×0001,0×0002,0×0004,0×0008,0×0010,0×0020,0×0040,0×0080,
0×0100,0×0200,0×0400,0×0800,0×1000,0×2000,0×4000,0×8000};
四、建立并初始化逆映射表为
unsigned char const UnMapTbl[]={
0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0
};
五、建立挂起队列,所述挂起队列是初始化为空的链表;
六、为每一种互斥共享的资源标识建立一个阻塞队列,所述阻塞队列是初始化为空的先进先出链表;
七、建立延迟队列,所述延迟队列是根据节点被延迟时间进行排序的有序链表,被延迟时间短的节点在前;
八、建立包含标识进程状态的进程控制块结构;
所述调度进程的步骤包括:
一、创建进程,指定进程的优先级;
二、进程进入挂起队列;
三、如果进程被激活,则进入就绪队列;
四、根据就绪队列的头部查找逆映射表,获得当前就绪的最高优先级的进程;
五、根据最高优先级进程的进程控制块内容确定进程进入的队列;
六、如果进程进入就绪队列,则依据进程的优先级挂入就绪队列的相应位置,并根据优先级查找映射表,修改就绪队列的头部;如果进程被阻塞,则从进程原来所在队列中取出对应进程控制块,根据其优先级修改就绪队列的头部,并将其进程控制块以优先级为关键字放入阻塞队列;如果进程被延迟,则从进程原来所在队列中取出对应进程控制块,根据其优先级修改就绪队列的头部,并将其进程控制块以延迟时间为关键字***延迟队列;如果进程被挂起,则进程进入挂起队列。
2、根据权利要求1所述的嵌入式实时操作***的进程调度方法,其特征在于,所述建立进程所需资源步骤的步骤一确定进程的状态包括8种,分别是就绪、阻塞、延迟、阻塞且延迟、就绪且挂起、阻塞且挂起、延迟且挂起、阻塞且延迟且挂起状态。
3、根据权利要求1所述的嵌入式实时操作***的进程调度方法,其特征在于,所述调度进程步骤的步骤四进一步包括首先使用BitTblSign数组和BitTbl变量查逆映射表,获得当前最高优先级值,然后从就绪队列中取出此优先级对应链表的第一个节点;具体过程是首先把一个16位的数分为两个8位的部分查找逆映射表获得Y坐标和X坐标,然后通过X、Y坐标与优先级的关系计算出所求的优先级。
4、根据权利要求3所述的嵌入式实时操作***的进程调度方法,其特征在于,所述X、Y坐标与优先级的关系是:进程的优先级对应BitTbl数组中的一位;进程优先级是一个8位的无符号变量,其高4位和低4位分别确定其对应点的Y坐标和X坐标。
5、根据权利要求1所述的嵌入式实时操作***的进程调度方法,其特征在于,所述调度进程步骤的步骤六后还包括如果进程转向其他状态,则将该进程变为非就绪状态的步骤,具体是首先从就绪队列中删除此进程的进程控制块,其次判定是否有与此进程同优先级的进程处于就绪状态,若有,则不需要改变BitTblSign变量和BitTbl数组的值;否则清除BitTblSign数组和BitTbl变量的对应位的值。
6、根据权利要求1所述的嵌入式实时操作***的进程调度方法,其特征在于,所述调度进程步骤的步骤八进一步包括:
当进程***时,从延迟队列的头部开始依据节点的延迟时间,依次减去已跨越的节点的延迟时间,直到剩余值小于下一个节点的延迟时间时,挂入节点,再从下一个节点的延迟时间中减去剩余值;
当从延迟队列中删除进程时,将待删除节点的延迟时间加到其后继节点的延迟时间上,然后删除该节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031152104A CN100349149C (zh) | 2003-01-24 | 2003-01-24 | 嵌入式实时操作***的进程调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031152104A CN100349149C (zh) | 2003-01-24 | 2003-01-24 | 嵌入式实时操作***的进程调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1519735A CN1519735A (zh) | 2004-08-11 |
CN100349149C true CN100349149C (zh) | 2007-11-14 |
Family
ID=34284179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031152104A Expired - Fee Related CN100349149C (zh) | 2003-01-24 | 2003-01-24 | 嵌入式实时操作***的进程调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100349149C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106034120A (zh) * | 2015-03-16 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种多进程访问可信应用的方法和*** |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561767B (zh) * | 2008-04-16 | 2012-06-06 | 上海聚力传媒技术有限公司 | 一种基于操作***的任务执行方法和装置 |
CN102004664A (zh) * | 2010-10-18 | 2011-04-06 | 北京控制工程研究所 | 一种空间飞行器嵌入式实时操作***调度方法 |
CN102591703B (zh) * | 2011-01-10 | 2015-05-06 | 中兴通讯股份有限公司 | 操作***的任务调度方法、装置及计算机 |
CN103246548B (zh) * | 2012-02-02 | 2016-08-03 | 迈普通信技术股份有限公司 | 一种容错保序的事件调度方法及装置 |
CN103257892B (zh) * | 2013-05-27 | 2016-03-23 | 北京世纪瑞尔技术股份有限公司 | 一种基于宏组合的多任务调度方法及*** |
CN104391751B (zh) * | 2014-10-16 | 2017-11-03 | 广州天宁信息技术有限公司 | 一种算法数据处理的同步方法及装置 |
CN106095557B (zh) * | 2016-06-20 | 2019-05-28 | 浪潮(北京)电子信息产业有限公司 | 一种o1调度算法的改进方法及装置 |
CN106201695A (zh) * | 2016-07-15 | 2016-12-07 | 郑州飞机装备有限责任公司 | 适用于嵌入式软件***的多任务调度方法 |
CN107832154B (zh) * | 2017-11-14 | 2020-07-17 | 浙江亿邦通信科技有限公司 | 一种多进程处理方法、处理装置及应用 |
CN109901917B (zh) * | 2017-12-07 | 2022-04-22 | 龙芯中科技术股份有限公司 | 实时操作***调度方法及装置、计算机可读存储介质 |
CN111258733B (zh) * | 2020-01-14 | 2023-06-27 | 明见(厦门)技术有限公司 | 一种嵌入式os任务调度方法、装置、终端设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1038712A (zh) * | 1988-03-10 | 1990-01-10 | 霍尼韦尔有限公司 | 用于多任务操作环境的操作*** |
JPH03110635A (ja) * | 1989-09-25 | 1991-05-10 | Nec Corp | オペレーティングシステムのプロセス制御方式 |
CN1075021A (zh) * | 1992-01-31 | 1993-08-04 | 国际商业机器公司 | 多媒体计算机操作***及方法 |
US5752031A (en) * | 1995-04-24 | 1998-05-12 | Microsoft Corporation | Queue object for controlling concurrency in a computer system |
CN1210306A (zh) * | 1997-09-01 | 1999-03-10 | 松下电器产业株式会社 | 微控制器、数据处理***及任务切换控制方法 |
JP2000172514A (ja) * | 1998-12-07 | 2000-06-23 | Nec Ic Microcomput Syst Ltd | タスク管理装置及びタスクスケジューリング方法 |
-
2003
- 2003-01-24 CN CNB031152104A patent/CN100349149C/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1038712A (zh) * | 1988-03-10 | 1990-01-10 | 霍尼韦尔有限公司 | 用于多任务操作环境的操作*** |
JPH03110635A (ja) * | 1989-09-25 | 1991-05-10 | Nec Corp | オペレーティングシステムのプロセス制御方式 |
CN1075021A (zh) * | 1992-01-31 | 1993-08-04 | 国际商业机器公司 | 多媒体计算机操作***及方法 |
US5752031A (en) * | 1995-04-24 | 1998-05-12 | Microsoft Corporation | Queue object for controlling concurrency in a computer system |
CN1210306A (zh) * | 1997-09-01 | 1999-03-10 | 松下电器产业株式会社 | 微控制器、数据处理***及任务切换控制方法 |
JP2000172514A (ja) * | 1998-12-07 | 2000-06-23 | Nec Ic Microcomput Syst Ltd | タスク管理装置及びタスクスケジューリング方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106034120A (zh) * | 2015-03-16 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种多进程访问可信应用的方法和*** |
CN106034120B (zh) * | 2015-03-16 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 一种多进程访问可信应用的方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN1519735A (zh) | 2004-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100349149C (zh) | 嵌入式实时操作***的进程调度方法 | |
CN1025382C (zh) | 具有通用操作***接口的设备驱动*** | |
EP1435039B1 (en) | Method and apparatus for scheduling of requests to a dynamic random access memory device | |
KR900006792B1 (ko) | 패킷 스위칭 노드용 로드 평형 회로장치 | |
EP0070083B1 (en) | Computing apparatus and method of processing message packets | |
EP0380857A2 (en) | Arbitrating communication requests in a multi-processor computer system | |
CN108762896A (zh) | 一种基于Hadoop集群任务调度方法及计算机设备 | |
EP0605401A2 (en) | Parallel computer system using a SIMD method | |
US7194561B2 (en) | Method and apparatus for scheduling requests to a resource using a configurable threshold | |
CA2407610A1 (en) | Method for assigning job in parallel processing method and parallel processing method | |
US5724600A (en) | Parallel processor system | |
CN103365729A (zh) | 一种基于任务类型的动态MapReduce 调度方法及*** | |
CN101051280A (zh) | 智能卡嵌入式操作***及其控制方法 | |
CN1311374C (zh) | 计算机***的输入/输出节点标识命令的装置及方法 | |
US10949368B2 (en) | Input/output command rebalancing in a virtualized computer system | |
CN101872335A (zh) | Cpu控制台重定向方法、***及cpu | |
CN102004664A (zh) | 一种空间飞行器嵌入式实时操作***调度方法 | |
CN100383743C (zh) | Java操作***中实时任务调度方法 | |
CN110413849A (zh) | 一种数据排序方法及装置 | |
CN115098220B (zh) | 基于容器线程管理技术的大规模网络节点拟真方法 | |
CN115794322A (zh) | 一种面向大型移动设备移动数据中心的任务调度方法 | |
CN1719427A (zh) | 存储器直接存取装置及其数据传输方法 | |
Haghighi et al. | A parallel priority queueing system with finite buffers | |
CN104750556A (zh) | 一种hpc集群作业调度方法及装置 | |
Chmaj et al. | Allocation algorithms problems in mesh-connected systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071114 Termination date: 20180124 |