CN105573825B - 一种跨操作系统的任务间同步的方法及装置 - Google Patents
一种跨操作系统的任务间同步的方法及装置 Download PDFInfo
- Publication number
- CN105573825B CN105573825B CN201410535130.5A CN201410535130A CN105573825B CN 105573825 B CN105573825 B CN 105573825B CN 201410535130 A CN201410535130 A CN 201410535130A CN 105573825 B CN105573825 B CN 105573825B
- Authority
- CN
- China
- Prior art keywords
- task
- operating system
- control block
- wake
- awakening
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 122
- 230000002618 waking effect Effects 0.000 claims abstract description 13
- 238000004891 communication Methods 0.000 claims description 76
- 230000008569 process Effects 0.000 claims description 55
- 238000012545 processing Methods 0.000 abstract description 52
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 16
- 230000001360 synchronised effect Effects 0.000 description 12
- 230000001960 triggered effect Effects 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007670 refining Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种跨操作系统的任务间同步的方法及装置。本发明实施例提供一种任务间同步的方法及装置,方法包括:第一任务获得第二任务的身份标识,第一任务运行在第一操作系统上,第二任务运行在第二操作系统上,且第一任务与第二任务存在关联关系;第一任务根据第二任务的身份标识,在指定共享内存中查找第二任务的身份标识对应的第一任务控制块;如果查找到第一任务控制块,第一任务将第一任务控制块的唤醒标记位设置为唤醒状态;第一任务向代理发送唤醒请求,代理用于根据唤醒请求访问第一任务控制块,并根据第一任务控制块中的唤醒标记位唤醒第二任务。如此,第二任务只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种跨操作系统的任务间同步的方法及装置。
背景技术
随着信息技术的不断发展以及用户需求的不断提高,电子设备大多采用并行处理技术来提高设备性能。例如,电子设备可将程序划分为多个粒度较小的任务,并通过多个任务并行处理的方式提高处理效率。然而,这种并行处理方式在提高设备处理效率的同时,还带来了任务间同步的问题。所谓任务间同步可以理解为,多个任务相互协作共同完成一件事情时,任务间存在的直接制约关系。作为一个示例,任务间同步可体现为:第一任务执行完成时,需要通知第二任务开始执行;对应地,第二任务需要知晓第一任务的执行状态。
根据需要进行同步的各任务所在的操作系统(英文:Operating System,简称:OS)是否相同,任务间同步可分为以下两种类型:一种是同一操作系统的任务间同步,即,第一任务和第二任务运行在同一操作系统上;一种是跨操作系统的任务间同步,即,第一任务和第二任务运行在不同的操作系统上。
针对跨操作系统的任务间同步,可利用指定共享内存中不同任务共用的一个标记位进行任务间同步。结合上述任务间同步的示例,同步过程可体现为:第一任务执行完成后置位指定共享内存中的标记位;对应地,第二任务实时访问指定共享内存,并判断该标记位是否已经置位,如果是,则第二任务开始执行,如果否,则第二任务继续访问指定共享内存,直至标记位被置位为止。如此方式,第二任务需要不断的循环执行访问指定共享内存和判断标志位的动作,造成了处理资源的浪费。
发明内容
本发明实施例提供的跨操作系统的任务间同步的方法及装置,用以降低跨操作系统的任务间同步所消耗的处理资源。
为此,本发明实施例提供如下技术方案:
第一方面,提供了一种跨操作系统的任务间同步的方法,所述方法包括:
第一任务获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
所述第一任务根据所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
如果查找到所述第一任务控制块,所述第一任务将所述第一任务控制块的唤醒标记位设置为唤醒状态;
所述第一任务向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
在第一方面的第一种可能的实现方式中,所述方法还包括:
所述第一任务在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
所述第一任务获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
所述第一任务根据所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
如果查找到所述操作系统控制块,所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:
如果未查找到所述操作系统控制块,所述第一任务在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述第一任务向所述代理发送唤醒请求,包括:
所述第一任务通过中断接口向所述代理发送所述唤醒请求;或者,
所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述操作系统控制块保存有所述中断接口的地址、所述核间通信硬件的地址和所述守护进程接口的地址中的至少一个,则
所述第一任务通过中断接口向所述代理发送所述唤醒请求,包括:
所述第一任务从所述操作系统控制块获得所述中断接口的地址;
所述第一任务通过所述中断接口的地址,寻址到所述中断接口,并通过所述中断接口向所述代理发送所述唤醒请求;
所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识,包括:
所述第一任务从所述操作系统控制块获得所述核间通信硬件的地址;
所述第一任务通过所述核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;
所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,包括:
所述第一任务从所述操作系统控制块获得所述守护进程接口的地址;
所述第一任务通过所述守护进程接口的地址,寻址到所述守护进程监控的指定空间,并通过所述唤醒请求将所述指定空间中的标记位设置为唤醒状态,所述指定内存为所述第一任务和所述守护进程能访问的内存,所述标记位的状态为唤醒状态和挂起状态中的一种。
结合第一方面或第一方面的第一种至第四种中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,在所述第一任务查找到所述第一任务控制块之后,所述方法还包括:
所述第一任务向所述第一任务控制块中写入所述第一任务的身份标识。
结合第一方面的第一种至第五种中的任一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述操作系统控制块保存有休眠接口,在所述第一任务向所述代理发送唤醒请求之后,所述方法还包括:
所述第一任务利用所述休眠接口挂起所述第一任务,并将所述第二任务控制块中的唤醒标记位设置为挂起状态。
第二方面,提供了一种跨操作系统的任务间同步的方法,所述方法包括:
第一操作系统的代理接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
所述代理根据所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接口,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
所述代理在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
所述代理判断所述唤醒标记位是否为唤醒状态;
如果所述唤醒标记位为唤醒状态,所述代理通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
在第二方面的第一种可能的实现方式中,所述第一操作系统的代理接收第一任务发送的唤醒请求,包括:
所述代理接收所述第一任务通过中断接口发送的所述唤醒请求;或者,
所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求;或者,
所述代理接收所述第一任务通过守护进程接口发送的所述唤醒请求,所述守护进程运行在所述第一操作系统上。
第三方面,提供了一种跨操作系统的任务间同步的方法,所述方法包括:
第一操作系统的代理接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
所述代理根据所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
所述代理判断所述唤醒标记位是否为唤醒状态;
如果所述唤醒标记位为唤醒状态,所述代理访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置;
所述代理通过所述唤醒接口唤醒所述第二任务。
在第三方面的第一种可能的实现方式中,所述第一操作系统的代理接收第一任务发送的唤醒请求,包括:
所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求,所述唤醒请求包括第二任务的身份标识。
第四方面,提供了一种跨操作系统的任务间同步的装置,所述装置是第一任务的一个功能模块,所述装置包括:
第一获得单元,用于获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
第一查找单元,用于根据所述第一获得单元获得的所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
设置单元,用于在所述第一查找单元查找到所述第一任务控制块时,将所述第一任务控制块的唤醒标记位设置为唤醒状态;
发送单元,用于向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
在第四方面的第一种可能的实现方式中,所述装置还包括:
第一创建单元,用于在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
第二获得单元,用于获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
第二查找单元,用于根据所述第二获得单元获得的所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
第一写入单元,用于在所述第二查找单元查找到所述操作系统控制块时,向所述操作系统控制块中写入所述第一任务的身份标识。
结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述装置还包括:
第二创建单元,用于在所述第二查找单元未查找到所述操作系统控制块时,在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
第二写入单元,用于向所述第二创建单元创建的所述操作系统控制块中写入所述第一任务的身份标识。
结合第四方面或第四方面的第一种或第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述发送单元,具体用于通过中断接口向所述代理发送所述唤醒请求;或者,
所述发送单元,具体用于通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
所述发送单元,具体用于通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述操作系统控制块保存有所述中断接口的地址、所述核间通信硬件的地址和所述守护进程接口的地址中的至少一个,则
所述发送单元,具体用于从所述操作系统控制块获得所述中断接口的地址,通过所述中断接口的地址,寻址到所述中断接口,并通过所述中断接口向所述代理发送所述唤醒请求;或者,
所述发送单元,具体用于从所述操作系统控制块获得所述核间通信硬件的地址,通过所述核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
所述发送单元,具体用于所述第一任务从所述操作系统控制块获得所述守护进程接口的地址,通过所述守护进程接口的地址,寻址到所述守护进程监控的指定空间,并通过所述唤醒请求将所述指定空间中的标记位设置为唤醒状态,所述指定内存为所述发送单元和所述守护进程能访问的内存,所述标记位的状态为唤醒状态和挂起状态中的一种。
结合第四方面或第四方面的第一种至第四种中的任一种可能的实现方式,在第四方面的第五种可能的实现方式中,所述装置还包括:
第三写入单元,用于在所述第一查找单元查找到所述第一任务控制块之后,向所述第一任务控制块中写入所述第一任务的身份标识。
结合第四方面的第一种至第五种中的任一种可能的实现方式,在第四方面的第六种可能的实现方式中,所述操作系统控制块保存有休眠接口,所述装置还包括:
挂起单元,用于在所述发送单元向所述代理发送所述唤醒请求之后,利用所述休眠接口挂起所述第一任务,并将所述第二任务控制块中的唤醒标记位设置为挂起状态。
第五方面,提供了一种跨操作系统的任务间同步的装置,所述装置运行在第一操作系统上,所述装置包括:
接收单元,用于接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
访问单元,用于根据所述接收单元接收的所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
查找单元,用于在所述访问单元获得所述第二任务的身份标识时,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述查找单元和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
判断单元,用于判断所述查找单元查找的所述任务控制块中的所述唤醒标记位是否为唤醒状态;
唤醒单元,用于在所述判断单元判定所述唤醒标记位为唤醒状态时,通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
在第五方面的第一种可能的实现方式中,所述接收单元,具体用于接收所述第一任务通过中断接口发送的所述唤醒请求;或者,
所述接收单元,具体用于接收所述第一任务通过核间通信硬件发送的所述唤醒请求;或者,
所述接收单元,具体用于接收所述第一任务通过守护进程接口发送的所述唤醒请求,所述守护进程运行在所述第一操作系统上。
第六方面,提供了一种跨操作系统的任务间同步的装置,所述装置运行在第一操作系统上,所述装置包括:
接收单元,用于接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
查找单元,用于根据所述接收单元接收的所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述查找单元和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
判断单元,用于判断所述查找单元查找的所述任务控制块中的所述唤醒标记位是否为唤醒状态;
访问单元,用于在所述判断单元判定所述唤醒标记位为唤醒状态时,访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置;
唤醒单元,用于通过所述访问单元获得的所述唤醒接口唤醒所述第二任务。
在第六方面的第一种可能的实现方式中,所述接收单元,具体用于接收所述第一任务通过核间通信硬件发送的所述唤醒请求,所述唤醒请求包括第二任务的身份标识。
第七方面,提供了一种跨操作系统的任务间同步的设备,所述设备包括:处理器和存储器;
所述存储器,用于存储程序指令和数据;
所述处理器,用于读取所述存储器中存储的程序指令和数据,执行以下操作:
生成第一任务;
所述第一任务获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
所述第一任务根据所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
如果查找到所述第一任务控制块,所述第一任务将所述第一任务控制块的唤醒标记位设置为唤醒状态;
所述第一任务向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
在第七方面的第一种可能的实现方式中,所述处理器生成的所述第一任务还用于执行以下操作:
所述第一任务在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
所述第一任务获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
所述第一任务根据所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
如果查找到所述操作系统控制块,所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
结合第七方面的第一种可能的实现方式,在第七方面的第二种可能的实现方式中,所述处理器生成的所述第一任务还用于执行以下操作:
如果未查找到所述操作系统控制块,所述第一任务在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
结合第七方面或第七方面的第一种或第二种可能的实现方式,在第七方面的第三种可能的实现方式中,所述第一任务向所述代理发送唤醒请求,包括:
所述第一任务通过中断接口向所述代理发送所述唤醒请求;或者,
所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
结合第七方面的第三种可能的实现方式,在第七方面的第四种可能的实现方式中,所述操作系统控制块保存有所述中断接口的地址、所述核间通信硬件的地址和所述守护进程接口的地址中的至少一个,则
所述第一任务通过中断接口向所述代理发送所述唤醒请求,包括:
所述第一任务从所述操作系统控制块获得所述中断接口的地址;
所述第一任务通过所述中断接口的地址,寻址到所述中断接口,并通过所述中断接口向所述代理发送所述唤醒请求;
所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识,包括:
所述第一任务从所述操作系统控制块获得所述核间通信硬件的地址;
所述第一任务通过所述核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;
所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,包括:
所述第一任务从所述操作系统控制块获得所述守护进程接口的地址;
所述第一任务通过所述守护进程接口的地址,寻址到所述守护进程监控的指定空间,并通过所述唤醒请求将所述指定空间中的标记位设置为唤醒状态,所述指定内存为所述第一任务和所述守护进程能访问的内存,所述标记位的状态为唤醒状态和挂起状态中的一种。
结合第七方面或第七方面的第一种至第四种中的任一种可能的实现方式,在第七方面的第五种可能的实现方式中,所述处理器生成的所述第一任务还用于执行以下操作:
所述第一任务查找到所述第一任务控制块之后,向所述第一任务控制块中写入所述第一任务的身份标识。
结合第七方面的第一种至第五种中的任一种可能的实现方式,在第七方面的第六种可能的实现方式中,所述操作系统控制块保存有休眠接口,在所述第一任务向所述代理发送唤醒请求之后,所述处理器生成的所述第一任务还用于执行以下操作:
所述第一任务向所述代理发送所述唤醒请求之后,利用所述休眠接口挂起所述第一任务,并将所述第二任务控制块中的唤醒标记位设置为挂起状态。
第八方面,提供了一种跨操作系统的任务间同步的设备,所述设备运行在第一操作系统上,所述设备包括:处理器和存储器;
所述存储器,用于存储程序指令和数据;
所述处理器,用于读取所述存储器中存储的程序指令和数据,执行以下操作:
生成第一操作系统的代理;
所述代理接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
所述代理根据所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接口,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
所述代理在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
所述代理判断所述唤醒标记位是否为唤醒状态;
如果所述唤醒标记位为唤醒状态,所述代理通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
在第八方面的第一种可能的实现方式中,所述代理接收第一任务发送的唤醒请求,包括:
所述代理接收所述第一任务通过中断接口发送的所述唤醒请求;或者,
所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求;或者,
所述代理接收所述第一任务通过守护进程接口发送的所述唤醒请求,所述守护进程运行在所述第一操作系统上。
第九方面,提供了一种跨操作系统的任务间同步的设备,所述设备运行在第一操作系统上,所述设备包括:处理器和存储器;
所述存储器,用于存储程序指令和数据;
所述处理器,用于读取所述存储器中存储的程序指令和数据,执行以下操作:
生成第一操作系统的代理;
所述代理接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
所述代理根据所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
所述代理判断所述唤醒标记位是否为唤醒状态;
如果所述唤醒标记位为唤醒状态,所述代理访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置;
所述代理通过所述唤醒接口唤醒所述第二任务。
在第九方面的第一种可能的实现方式中,所述代理接收第一任务发送的唤醒请求,包括:
所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求,所述唤醒请求包括第二任务的身份标识。
本发明实施例的跨操作系统的任务间同步的方法及装置,在第一任务与第二任务进行跨操作系统的任务间同步时,第一任务将第二任务对应的第一任务控制块中的唤醒标记位设置为唤醒状态,并通过唤醒请求触发能访问第一任务控制块的代理,由代理读取唤醒标记位的唤醒状态,主动对第二任务进行唤醒处理。如此方案下,第二任务只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其它的附图。
图1是本发明实施例中运行时状态的逻辑示意图;
图2是本发明实施例中任务侧的任务间同步的方法实施例1的流程图;
图3是本发明实施例中任务侧的任务间同步的方法实施例2的流程图;
图4是本发明实施例中任务侧的任务间同步的方法实施例3的流程图;
图5是本发明实施例中创建任务控制块的流程图;
图6是本发明实施例中任务侧的任务间同步的方法实施例1的流程图;
图7是本发明实施例中任务侧的任务间同步的方法实施例2的流程图;
图8是本发明实施例中控制块的示意图;
图9是本发明实施例中任务间同步的装置的一种构成示意图;
图10是本发明实施例中任务间同步的装置的另一种构成示意图;
图11是本发明实施例中任务间同步的装置的再一种构成示意图;
图12是本发明实施例中任务间同步的设备的一种构成示意图;
图13是本发明实施例中任务间同步的设备的另一种构成示意图;
图14是本发明实施例中任务间同步的设备的再一种构成示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
在介绍本发明实施例技术方案之前,先对本发明的具体应用场景进行解释说明。
为了满足用户对电子设备性能不断提高的要求,电子设备大多内置多核中央处理器(英文:Central Processing Unit,简称:CPU),通过并行处理技术来提高设备性能。所谓多核CPU可以理解为一颗CPU芯片内部存在多个具有独立处理能力的核(core),每个核均可视为是一个独立的CPU。
对于内置多核CPU的电子设备来说,可能部署有至少两个操作系统。举例来说,操作系统可以为:满足通用需求的操作系统,如linux操作系统;满足实时需求的操作系统,如VxWorks操作系统;抽象出的操作系统,如独立运行(英文:Standalone Execution,简称:SE),即,本发明实施例还可将使用SE方式直接运行任务的情况,抽象为一种只调度特定任务的操作系统。具体地,本发明实施例对电子设备上部署的操作系统的数目和类型可不做限定。
作为一个示例,可参见图1所示运行时状态(runtime)的逻辑示意图。图中以四核CPU上部署3个操作系统为例,示出了CPU、OS、任务(task)之间的运行关系。其中,1号核上部署操作系统OS1,且OS1上运行任务1和任务2;2号和3号核上以对称多处理结构(英文:Symmetric Multi-Processing,简称:SMP)方式部署操作系统OS2,且OS2上运行任务3和任务4;4号核上部署SE抽象出的操作系统OS3,且OS3上运行一个特定任务5。
另外,电子设备除了如上文所做介绍内置多核CPU之外,还可内置多CPU,以进行并行处理提高设备性能。所谓多CPU可以理解为将多颗CPU芯片互联,使多颗CPU芯片之间可以访问同一指定共享内存。针对内置多CPU的电子设备,亦可如内置多核CPU的电子设备一样部署多个操作系统,只是操作系统是被部署在不同CPU上。仍以上文部署3个操作系统的示例为例,可在1号CPU上部署操作系统OS1,且OS1上运行任务1和任务2;可在2号和3号CPU上以SMP方式部署操作系统OS2,且OS2上运行任务3和任务4;可在4号CPU上部署SE抽象出的操作系统OS3,且OS3上运行一个特定任务5。
需要说明的是,本发明实施例中的任务可以理解为程序、或者程序中的一个功能模块在操作系统上的一次执行。任务是操作系统调度的最小单位,针对VxWorks、Linux等操作系统来说,任务和线程的概念等价。
不论是通过多核CPU部署多个操作系统,还是通过多CPU部署多个操作系统,均可利用本发明实施例提供的方案实现跨操作系统的任务间同步。下面以多核CPU部署多个操作系统为例,结合具体示例对本发明实施例任务间同步的过程进行解释说明。
参见图2,示出了本发明实施例任务侧的跨操作系统的任务间同步的方法实施例1的流程图,可包括:
101,第一任务获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系。
以实现图1所示示意图中任务1与任务3的同步为例,任务1与任务3之间的关联关系可以是,任务1需要等待任务3执行完成后才开始执行,任务3则需要在执行完成后通知任务1。可选地,每个任务还可细分为多个事务,故任务1与任务3之间的关联关系也可以是,任务1需要等待任务3执行完成指定事务后才开始执行,任务3则需要在执行完成指定事务后通知任务1。具体地,本发明实施例对需要同步的任务之间的关联关系可不做限定。
结合图1所示示意图及上文所举关联关系的示例,任务3可视为本实施例中的第一任务,OS2可视为本实施例中的第一操作系统,任务1可视为本实施例中的第二任务,OS1可视为本实施例中的第二操作系统。
任务3在需要通知任务1开始执行时,即任务3在需要唤醒任务1时,可先获得任务1的身份标识。举例来说,任务1的身份标识可体现为任务1的身份识别码(英文:IDentity,简称:ID)和任务1的名称中的至少一个。另外,作为一个示例,在编程者编写任务1和任务3的实现代码时,就可将二者的同步需求写入代码中,故,任务3可从实现代码中获得任务1的身份标识。或者,可以预先建立任务3与指定关键字(Key值)的对应关系,所述指定关键字与任务1有绑定关系,故,任务3可以利用其对应的关键字获得任务1的身份标识。具体地,本发明实施例对任务1的身份标识和任务3获得任务1的身份标识的方式可不做限定。
需要说明的是,结合上文所举关联关系的示例,任务3需要通知任务1开始执行时,可以理解为任务3执行完成后,或者任务3执行完成指定事务后,本发明实施例对此可不做具体限定。另外,任务1与任务3可以是由同一程序细化后获得,也可以是由不同程序细化后获得,本发明实施例对此亦可不做具体限定,只要是两个具有跨操作系统的同步需求的任务即可。
102,所述第一任务根据所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种。
103,如果查找到所述第一任务控制块,所述第一任务将所述第一任务控制块的唤醒标记位设置为唤醒状态。
任务3获得任务1的身份标识后,即可根据任务1的身份标识在指定共享内存中查找任务控制块1,任务1与任务控制块1之间相对应。需要说明的是,任务控制块1可视为本实施例中的第一任务控制块。
对于同步过程中需要被唤醒的任务,可预先在指定共享内存中为其创建一个对应的任务控制块,任务控制块至少可包括任务字段、OS字段和唤醒标记位。其中,任务字段用于写入与本任务控制块对应的任务的身份标识,本示例中,任务控制块1中的任务字段写入的是任务1的身份标识。可选地,任务1的身份标识可体现为任务1的ID和任务1的名称中的至少一个。OS字段用于写入本任务控制块对应的任务所运行的操作系统的身份标识,本示例中,任务控制块1中的OS字段写入的是OS1的身份标识,可选地,OS1的身份标识可体现为OS1的ID和OS1的名称中的至少一个。唤醒标记位用于记录本任务控制块对应的任务的唤醒状态,本示例中,任务3查找到任务控制块1后,可将唤醒标记位设置为唤醒状态,以此实现唤醒任务1的目的。
本发明实施例中,唤醒标记位可体现为初始状态、唤醒状态和挂起状态中的一种。一般情况下,创建任务对应的任务控制块时,可将唤醒标记位设置为初始状态;在需要唤醒任务控制块对应的任务时,可将唤醒标记位设置为唤醒状态;在不需要唤醒任务控制块对应的任务时(如,任务已被唤醒,或任务执行完成需要被挂起时),可将唤醒标记位设置为挂起状态。举例来说,初始状态、唤醒状态和挂起状态可采用不同标识来表示,如,利用标识“0”来表示初始状态,利用标识“1”来表示唤醒状态,利用标识“2”来表示挂起状态。或者,唤醒标记位也可利用两种不同标识来表示上述三种状态。举例来说,初始状态与挂起状态采用相同标识来表示,如,利用标识“0”来表示初始状态和挂起状态,利用标识“1”来表示唤醒状态。本发明实施例对唤醒标记位三种状态的表现形式可不做具体限定。总之,只要能通过唤醒标记位区分挂起状态和唤醒状态即可,初始状态只是一种可选状态。
基于上述对唤醒标记位的介绍,本发明实施例中第一任务可通过置位方式设置唤醒标记位。举例来说,唤醒标记位利用三种不同标识来表示三种状态,则,将唤醒标记位设置为唤醒状态可理解为,将唤醒标记位从“2”置位为“1”;或者,唤醒标记位利用两种不同标识来表示三种状态,则,将唤醒标记位设置为唤醒状态可理解为,将唤醒标记位从“0”置位为“1”。即只要唤醒标记位变化为预置的唤醒状态,代理即可确定当前需要进行唤醒处理。
需要说明的是,本发明实施例中第二操作系统的代理可以理解为,第二操作系统与其它操作系统之间的通信媒介,具体地,代理可以处理来自其它操作系统的唤醒请求,并根据唤醒请求对第二操作系统上运行的任务进行唤醒处理。
104,所述第一任务向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
为了实现唤醒任务1的目的,任务3还可向OS1的代理发送唤醒请求,触发OS1的代理访问任务控制块1,并根据任务控制块1中的唤醒标记位对任务1进行唤醒处理。对于OS1的代理对任务1进行唤醒处理的过程可参见下文图6和图7处所做介绍,此处暂不详述。
由图2所示实施例可知,在进行任务间同步时,任务3将任务控制块1中的唤醒标记位设置为唤醒状态,并通过唤醒请求触发OS1的代理,由OS1的代理访问任务控制块1,并在唤醒标记位为唤醒状态时,主动对任务1进行唤醒处理。对应于此,任务1只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
需要说明的是,第一任务向第二操作系统的代理发送唤醒请求,至少可采用如下四种方式实现,下面分别进行解释说明。以下四种方式仅作为示例,而不应被理解为限定。
方式一,所述第一任务通过中断接口向所述代理发送所述唤醒请求。
本方式中,第一任务以中断方式向第二操作系统的代理发送唤醒请求。举例来说,本方式发送唤醒请求的过程可为:任务3向部署OS1的1号核发送唤醒请求,OS1感知到任务3发送的唤醒请求后可触发OS1的代理。本方式中唤醒请求可体现为中断请求,代理可体现为中断服务程序(英文:Interrupt Service Routines,简称:ISR)。
方式二,所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识。
本方式中,第一任务以核间通信的方式向第二操作系统的代理发送唤醒请求,且唤醒请求中携带第二任务的身份标识。也就是说,唤醒请求不仅用于触发代理,还可将第二任务的身份标识通知给代理。举例来说,本方式发送唤醒请求的过程可为:任务3触发2号核,由2号核通过核间通信硬件向1号核发送唤醒请求,通过唤醒请求触发OS1的代理。本方式中唤醒请求可体现为核间通信消息,代理可体现为ISR或其它与ISR所实现功能类似的程序。
需要说明的是,2号核可理解为任务3当前运行的核,举例来说,可以是OS2进行负载均衡后将任务3调度到2号核上,本发明实施例对此可不做具体限定。
方式三,与方式二相类似的,第一任务通过核间通信硬件向代理发送唤醒请求,且唤醒请求中不包括第二任务的身份标识。也就是说,唤醒请求仅用于触发代理。
方式四,所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
本方式中,第一任务以置位标志位的方式向第二操作系统的代理发送唤醒请求。为OS1的代理分配一个指定空间,代理可通过轮询方式对OS1上运行的所有任务进行唤醒处理。举例来说,本方式发送唤醒请求的过程可为:任务3通过置位所述指定空间的标志位的方式向OS1的代理发送唤醒请求。本方式中代理可体现为守护进程(Daemon)。
如上文所做介绍,第一任务可通过中断接口、核间通信硬件和守护进程接口中的至少一个向第二操作系统的代理发送唤醒请求。作为一种示例,第一任务可配置一种默认的方式发送唤醒请求;或者,第一任务可配置多种发送唤醒请求的方式,由第一任务根据实际需求选择一种发送唤醒请求的方式;再者,可将发送唤醒请求的方式配置在第一操作系统对应的操作系统控制块中,并在需要时由第一任务从操作系统控制块中选择一种发送唤醒请求的方式。本发明实施例对此可不做具体限定。
需要说明的是,操作系统控制块与操作系统相对应,操作系统控制块可包括接口字段,用于保存中断接口的地址、核间通信硬件的地址和守护进程接口的地址中的至少一个。此外,操作系统控制块还可保存一些与本操作系统控制块对应的操作系统相关的信息,如,操作系统控制块可包括核字段,用于保存操作系统部署的核的身份标识;操作系统控制块可包括任务字段,用于保存运行在操作系统上的任务的身份标识,特别是运行在操作系统上且有跨操作系统任务间同步需求的任务的身份标识;操作系统控制块还可包括其它字段,用于保存其它与操作系统相关的信息,本发明实施例对操作系统控制块包括的字段可不做具体限定。
参见图3,示出了本发明实施例任务侧的任务间同步的方法实施例2的流程图,可包括:
201,第一任务获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系。
202,所述第一任务根据所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种。
203,如果查找到所述第一任务控制块,所述第一任务将所述第一任务控制块的唤醒标记位设置为唤醒状态。
本实施例中的201~203与图2所示实施例中的101~103相同,具体可参见上文所做介绍,此处不再赘述。
204,所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
第一任务查找到第一任务控制块后,除了将唤醒标记位设置为唤醒状态之外,还可将第一任务的身份标识写入第一任务控制块中,如此,第二任务就可访问第一任务控制块,明确本次同步的唤醒来源,以便于第二任务进行后续处理。
结合图2所示示意图,本实施例中便于第二任务进行后续处理,至少可理解为以下两种情况:
情况一,任务1可划分为2个事务,事务1需要等待任务3执行完成后才开始执行,事务2需要等待任务5执行完成后才开始执行,且事务1与事务2对执行时序有要求,如,事务2需在事务1执行完成之后才开始执行。
如此情况下,任务1便可根据唤醒来源判断是否被唤醒并执行相关事务。如,在任务1等待执行事务1的场景下,若唤醒来源为任务3,则任务1可被唤醒并执行事务1。若唤醒来源为任务5,则任务1可继续保持挂起,直至被任务3唤醒后可依序执行事务1和事务2;或者,在唤醒来源为任务5时,任务1也可被唤醒但却不执行事务2,直至被任务3唤醒后再依序执行事务1和事务2,本发明实施例对此可不做具体限定。
情况二,任务1可划分为2个事务,事务1需要等待任务3执行完成后才开始执行,事务2需要等待任务5执行完成后才开始执行,且事务1与事务2对执行时序没有要求,即,事务1与事务2可以先后执行,也可以并行执行。
如此情况下,任务1便可被唤醒并根据唤醒来源执行相关事务。如,唤醒来源为任务5,则任务1可不关注事务1的执行情况,直接被唤醒并执行与任务5有同步需求的事务2。
这种将第一任务的身份标识写入第一任务控制块的方案,应用于情况一的场景时,可以确保任务被正确执行,应用于情况二的场景时,则可以提高任务处理效率。
关于第一任务向第一任务控制块中写入第一任务的身份标识,至少可采用如下两种实现方式:
方式一,第一任务控制块可包括唤醒来源字段,用于写入设置唤醒标记位的任务的身份标识。如上述示例中,若唤醒来源为任务5,则任务控制块1的唤醒来源字段写入的是任务5的身份标识。
本方式中,任务3查找到任务控制块1后,可先将唤醒标记位设置为唤醒状态,再写入任务3的身份标识;或者,也可先写入任务3的身份标识,再将唤醒标记位设置为唤醒状态;再者,还可同时执行上述两个动作,本发明实施例对此可不做具体限定。
方式二,通过唤醒标记位中的指定比特位和/或比特位的取值,向第一任务控制块写入第一任务的身份标识。
仍以上文任务3和任务5作为唤醒来源的示例为例,针对指定比特位的方式,可从唤醒标记位中选取两个比特位作为唤醒来源标志位,将唤醒来源标志位1分配给任务3,唤醒来源标志位2分配给任务5。若唤醒来源为任务5,则任务5可置位唤醒来源标志位2,以此方式向任务控制块1中写入任务5的身份标识。
仍以上文任务3和任务5作为唤醒来源的示例为例,针对比特位取值的方式,可从唤醒标记位中选取一个比特位作为唤醒来源标志位,唤醒来源标志位的取值为1时表示唤醒来源来任务3,取值为2表示唤醒来源为任务5。若唤醒来源是任务5,则任务5可将唤醒来源标志位的取值设置为2,以此方式向任务控制块1中写入任务5的身份标识。
需要说明的是,供第一任务设置唤醒状态的标志位,可以体现为上文介绍的唤醒来源标志位,即一旦任务5置位唤醒来源标志位2,或者,任务5将唤醒来源标志位的取值设置为2,就确定了如下两方面信息:已设置唤醒状态,且唤醒来源为任务5。或者,供第一任务设置唤醒状态的标志位,可以体现为与上文介绍的唤醒来源标志位不同的比特位,本发明实施例对此可不做具体限定。
205,所述第一任务向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
本实施例中的205与图2所示实施例中的104相同,具体可参见上文所做介绍,此处不再赘述。
参见图4,示出了本发明实施例任务侧的任务间同步的方法实施例3的流程图,可包括:
301,第一任务获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系。
302,所述第一任务根据所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种。
303,如果查找到所述第一任务控制块,所述第一任务将所述第一任务控制块的唤醒标记位设置为唤醒状态。
304,所述第一任务向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
本实施例中的301~304与图2所示实施例中的101~104相同,具体可参见上文所做介绍,此处不再赘述。
305,所述第一任务利用所述休眠接口挂起所述第一任务,并将第二任务控制块中的唤醒标记位设置为挂起状态。
第一任务与第二任务同步后,即第一任务执行完成并通知了第二任务开始执行,还可根据第一任务自身的实际需要,挂起第一任务,等待被其它任务唤醒。需要说明的是,唤醒第一任务的其它任务,可以是第二任务,或者,也可以是除第二任务之外的第三任务,对此可由第一任务的实际运行需求而定,本发明实施例可不做具体限定。
举例来说,第一任务可配置休眠接口,并在需要时利用休眠接口挂起第一任务;或者,也可将休眠接口配置在第一操作系统对应的操作系统控制块中,并在需要时由第一任务从操作系统控制块中获取休眠接口,并利用休眠接口挂起第一任务。本发明实施例对此可不做具体限定。
另外,利用休眠接口挂起第一任务时,还可将第一任务对应的第二任务控制块中的唤醒标记位设置为挂起状态,对于第二任务控制块的介绍可参见下文图5所示实施例,此处暂不作详述。
可选地,第一任务按图4所示方案挂起后,还可能需要在其它同步过程中被唤醒,对应于此,可在指定共享内存中为第一任务创建一个对应的第二任务控制块。参见图5,示出了本发明实施例中创建任务控制块的流程图,可包括:
401,所述第一任务在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
402,所述第一任务获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
403,所述第一任务根据所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
404,如果查找到所述操作系统控制块,所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
参见上文针对第一任务控制块的介绍,第二任务控制块至少可包括OS字段和唤醒标记位。结合图1所示示意图,唤醒标记位用于记录任务3的唤醒状态。第二任务控制块的OS字段写入的是OS2的身份标识,可选地,OS2的身份标识可体现为OS2的ID和OS2的名称中的至少一个。作为一个示例,在编写任务3的实现代码时,就可将任务3所运行的操作系统的身份标识写入代码中;或者,任务3也可在需要时读取预置操作系统配置文件,获得任务3所运行的操作系统的身份标识,本发明实施例对此可不做具体限定。可选地,结合图2所示实施例,第二任务控制块还可包括接口字段,用于保存任务3发送唤醒请求的方式,本发明实施例对此可不做限定。
举例来说,第一任务在指定共享内存中创建第二任务控制块,可以是在需要时,由第一任务在指定共享内存中生成一个任务控制块,作为第二任务控制块;或者,也可以是在需要时,由第一任务从预先定义的空白任务控制块中选取一个任务控制块,作为第二任务控制块,本发明实施例对创建第二任务控制块的方式可不做具体限定。
作为一种优选方案,第一任务创建第二任务控制块的过程中,还可将第一任务的身份标识写入第一操作系统对应的操作系统控制块中。结合图1所示示意图,任务3除了在第二任务控制块中写入OS2的身份标识之外,还可将任务3的身份标识写入OS2对应的操作系统控制块中。对应于此,任务3可先根据OS2的身份标识,在指定共享内存中查找OS2对应的操作系统控制块,如果能查找到,则说明OS2对应的操作系统控制块已存在,任务3可直接将任务3的身份标识写入OS2对应的操作系统控制块的任务字段中;如果未查找到,则说明OS2对应的操作系统控制块尚不存在,任务3可先在指定共享内存中创建OS2对应的操作系统控制块,再将任务3的身份标识写入OS2对应的操作系统控制块的任务字段中。
与上文图2所述方法相对应地,本发明实施例还提供代理侧的任务间同步的方法,结合发送唤醒请求的四种方式,代理侧的任务间同步可体现为图6和图7所示的两种实现方式,下面分别进行解释说明。
若采用上文介绍的方式一、方式三或方式四发送唤醒请求,则可采用图6所示方案进行任务间同步,可包括:
501,第一操作系统的代理接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上。
502,所述代理根据所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接口,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上。
仍以图2所举示例为例,OS1可视为本实施例中的第一操作系统,OS2可视为本实施例中的第二操作系统,OS1的代理可视为本实施例中的第一操作系统的代理,任务3可视为本实施例中的第一任务,任务1可视为本实施例中的第二任务。
任务3按照图2所示实施例,向OS1的代理发送唤醒请求后,OS1的代理即可接收任务3发送的唤醒请求,并执行如下处理动作唤醒任务1。
OS1的代理既可访问OS1对应的操作系统控制块,又可访问任务1对应的任务控制块。OS1的代理接收到唤醒请求后,可先访问操作系统控制块,获得任务1的身份标识。
如上文所做介绍,操作系统控制块包括任务字段,且任务字段内保存了运行在OS1上的任务的身份标识。作为一个示例,任务字段内保存的是运行在OS1上且有跨操作系统任务同步需求的任务的身份标识。如此,OS1的代理可以从操作系统控制块的任务字段中获取任务1的身份标识。
503,所述代理在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种。
504,所述代理判断所述唤醒标记位是否为唤醒状态。
505,如果所述唤醒标记位为唤醒状态,所述代理通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
OS1的代理获取到任务1的身份标识后,即可从指定共享内存中查找任务1对应的任务控制块,并访问任务控制块,判断任务控制块中的唤醒标记位是否被任务3置为唤醒状态。如果确定唤醒标记位被设置为唤醒状态,OS1的代理可利用操作系统控制块配置的唤醒接口唤醒任务1。
任务3按照图2所示实施例,将任务1对应的任务控制块中的唤醒标记位设置为唤醒状态,并触发能访问任务控制块的OS1的代理对任务1进行唤醒处理。对应地,OS1的代理被触发后,则可根据任务1对应的任务控制块中的唤醒标记位,将任务1唤醒。如此任务间同步的方案,任务1只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
若采用上文介绍的方式二发送唤醒请求,则可采用图7所示方案进行任务间同步,可包括:
601,第一操作系统的代理接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上。
仍以图2所举示例为例,OS1可视为本实施例中的第一操作系统,OS2可视为本实施例中的第二操作系统,OS1的代理可视为本实施例中的第一操作系统的代理,任务3可视为本实施例中的第一任务,任务1可视为本实施例中的第二任务。
任务3按照图2所示实施例,通过核间通信硬件向OS1的代理发送包含任务1的身份标识的唤醒请求,对应地,OS1的代理即可接收任务3发送的唤醒请求,并获得唤醒请求中包括的任务1的身份标识,执行如下处理动作唤醒任务1。
602,所述代理根据所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种。
603,所述代理判断所述唤醒标记位是否为唤醒状态。
604,如果所述唤醒标记位为唤醒状态,所述代理访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置。
605,所述代理通过所述唤醒接口唤醒所述第二任务。
OS1的代理可以访问任务1对应的任务控制块。如此,OS1的代理获得任务1的身份标识后,即可从指定共享内存中查找任务1对应的任务控制块,并访问任务控制块,判断其中的唤醒标记位是否被任务3置为唤醒状态。如果确定唤醒标记位被设置为唤醒状态,OS1的代理可利用操作系统控制块配置的唤醒接口唤醒任务1。
任务3按照图2所示实施例,将任务1对应的任务控制块中的唤醒标记位设置为唤醒状态,并将任务1的身份标识添加到唤醒请求中,触发能访问任务控制块的OS1的代理对任务1进行唤醒处理。对应地,OS1的代理被触发后,则可根据任务1对应的任务控制块中的唤醒标记位,将任务1唤醒。如此任务间同步的方案,任务1只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
下面结合图1所示运行时状态示意图、图8所示控制块示意图,再次对本发明实施例任务间同步的过程进行举例说明。
结合图1所示的示意图,指定共享内存中保存了图8所示的控制块。本示例中,控制块可分为操作系统控制块和任务控制块两种类型,且控制块可被用户态程序访问。在进行举例说明之前,先结合图8对操作系统控制块和任务控制块做如下说明。
以OS1对应的操作系统控制块1为例,操作系统控制块1至少可包括:操作系统字段、核字段、任务字段和接口字段。
操作系统字段,用于保存OS1的身份标识。
核字段,用于保存OS1部署的核的身份标识。在本示例中,核字段保存的是core1。
任务字段,用于保存运行在OS1上且有跨操作系统任务间同步需求的任务的身份标识。本示例中,任务字段保存的是T1和T2。
接口字段function1,用于保存在OS1上进行休眠、唤醒和触发操作的接口。在本示例中,休眠操作接口可以是OS1提供的信号量P操作接口。举例来说,若OS1为VxWorks系统,休眠操作接口可为semTake;若OS1为Linux Kernal,休眠操作接口可为down;若OS1为System V,休眠操作接口可为semop。唤醒操作接口可以是OS1提供的信号量V操作接口。举例来说,若OS1为VxWorks系统,唤醒操作接口可为semGive;若OS1为Linux Kernal,休眠操作接口可为up;若OS1为System V,休眠操作接口可为semop等接口。触发操作接口可以是OS1或CPU厂商提供的中断接口,或者,可以是核间通信硬件,或者,可以是Daemon接口。
以任务T1对应的任务控制块1为例,任务控制块1至少可包括:任务字段、操作系统字段和唤醒标记位。
任务字段,用于保存T1的身份标识。
操作系统字段,用于保存任务所运行的操作系统的身份标识。本示例中,操作系统字段保存的是OS1。
唤醒标记位event1,用于记录任务的唤醒状态。优选的,唤醒标记位还可记录唤醒来源。
与OS2对应的操作系统控制块2、与OS3对应的操作系统控制块3、与任务T2对应的任务控制块2、与任务T3对应的任务控制块3、与任务T4对应的任务控制块4、与任务T5对应的任务控制块5,可参见上文所做介绍,此处不再赘述。
示例1
基于图1和图8,以T3唤醒T1为例,任务间同步过程可体现如下:
11.T3执行完成后,获知与T3有同步需求的任务为T1,故T3可访问指定共享内存中的任务控制块1,并将任务控制块1中的唤醒标记位event1设置为唤醒状态。
可选地,T3知晓与其有同步需求的任务为T1后,可访问操作系统控制块2,并根据其中的任务字段,判断T1与T3是否运行在同一操作系统上,如果任务字段中包括T1和T3,可判定二者运行在同一操作系统,可采用现有的同一操作系统的任务间同步的方案,同步T1和T3。如果任务字段中不包括T1,可判定二者运行在不同操作系统,可采用本发明实施例方案同步T1和T3。
可选地,T3知晓与其有同步需求的任务为T1后,也可访问任务控制块1,并根据其中的操作系统字段,判断T1与T3是否运行在同一操作系统上,如果任务控制块1的操作系统字段保存的是OS2,可判定二者运行在同一操作系统,可采用现有的同一操作系统的任务间同步的方案,同步T1和T3。如果任务控制块1的操作系统字段保存的不是OS2,可判定二者运行在不同操作系统,可采用本发明实施例方案同步T1和T3。
12.T3访问任务控制块1时还可通过操作系统字段知晓,T1是运行在OS1上的,故,T3可获得操作系统控制块2的接口字段function2中配置的触发操作接口,并利用触发操作接口向OS1的代理发送唤醒请求。
若function2中配置的触发操作接口为中断接口的地址,则T3可通过中断接口的地址,寻址到所述中断接口,并通过所述中断接口向部署OS1的core1发送中断请求,OS1感知到中断请求后触发OS1的代理。
13.T3可根据后续处理需要,获得function2中配置的休眠接口,并利用休眠接口挂起T3,同时,还可将任务控制块3中的唤醒标记位设置为挂起状态。
14.OS1的代理接收到T3发送的中断请求,可访问操作系统控制块1,依次读取任务字段保存的任务的身份标识。
15.若OS1的代理从任务字段中读取的任务为T2,则OS1的代理可访问指定共享内存中的任务控制块2,并判断任务控制块2中的唤醒标记位event2是否被设置为唤醒状态。
16.OS1的代理判断event2未被设置为唤醒状态,OS1的代理可继续访问操作系统控制块1,并从任务字段中读取任务的身份标识。
17.若OS1的代理从任务字段中读取的任务为T1,则OS1的代理可访问指定共享内存中的任务控制块1,并判断任务控制块1中的唤醒标记位event1是否被设置为唤醒状态。
18.OS1的代理判断event1被设置为唤醒状态,OS1的代理可访问操作系统控制块1,并获得接口字段function1中配置的唤醒接口,利用唤醒接口唤醒T1。
由上述11~18可知,T3与OS1的代理相互配合,即可实现同步T1和T3的目的,且同步过程中,需要被唤醒的T1可不做任何处理,只需等待被唤醒即可,避免T1如现有技术中不断轮询判断消耗处理资源,就有利于降低跨操作系统的任务间同步所消耗的处理资源。
示例2
基于图1和图8,若T3在示例1中挂起后,需要由T5唤醒T3,则任务间同步过程可体现如下:
21.T5执行完成后,获知与T5有同步需求的任务为T3,故T5可访问指定共享内存中的任务控制块3,并将任务控制块3中的唤醒标记位event3设置为唤醒状态。
22.T5访问任务控制块3时还可通过操作系统字段知晓,T3是运行在OS2上的,故,T5可获得操作系统控制块3的接口字段function3中配置的触发操作接口,并利用触发操作接口向OS2的代理发送唤醒请求。
若function3中配置的触发操作接口为核间通信硬件的地址,则T5可通过核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向部署OS2的core2发送包括T3身份标识的核间通信消息,触发OS2的代理。
23.OS2的代理接收到T5发送的核间通信消息,可消息中包括的身份标识,访问指定共享内存中的任务控制块3,并判断任务控制块3中的唤醒标记位event3是否被设置为唤醒状态。
24.OS3的代理判断event3被设置为唤醒状态,OS2的代理可访问操作系统控制块2,并获得接口字段function2中配置的唤醒接口,利用唤醒接口唤醒T3。
由上述21~24可知,T5与OS2的代理相互配合,即可实现同步T3和T5的目的,且同步过程中,需要被唤醒的T3可不做任何处理,只需等待被唤醒即可,避免T3如现有技术中不断轮询判断消耗处理资源,就有利于降低跨操作系统的任务间同步所消耗的处理资源。
示例3
基于图1和图8,以T3唤醒T1、T5唤醒T2为例,任务间同步过程可体现如下:
31.T3执行完成后,可访问任务控制块1,将任务控制块1中的唤醒标记位event1设置为唤醒状态。
32.T3访问任务控制块1是还可获知T1运行在OS1上,故T3可获得接口字段function2中配置的触发操作接口,并利用触发操作接口向OS1的代理发送唤醒请求。
若function2中配置的触发操作接口为Daemon接口的地址,则OS1的代理即为Daemon,T3可通过Daemon接口的地址,寻址到Daemon监控的指定空间,并通过唤醒请求将所述指定空间中的标记位设置为唤醒状态。
33.同样地,T5执行完成后,亦可参照31~32所示方案,将任务控制块2中的唤醒标记位event2设置为唤醒状态,并利用接口字段function3中配置的Daemon接口向OS1的代理发送唤醒请求。
需要说明的是,如果T5置位指定空间的标志位时,标志位未被其它任务置位,则可由T5置位标志位;如果标志位已被其它任务置位,则可不对标志位进行操作。
34.Daemon可不断轮询指定空间的标志位,一旦确定标志位被置位后,Daemon可访问操作系统控制块1,依次读取任务字段保存的任务的身份标识。
需要说明的是,标志位可以是被T3置位,或者,也可以是被T5置位,再者,还可以是被T3和T5之外的任务置位,本发明对此可不做具体限定,只要能触发Daemon进行唤醒处理即可。
35.若Daemon从任务字段中读取的任务为T1,则可判断任务控制块1中的唤醒标记位event1是否被设置为唤醒状态。若如31所示,event1已被T3设置为唤醒状态,则Daemon可获得接口字段function1中配置的唤醒接口,利用唤醒接口唤醒T1。
36.若Daemon从任务字段中读取的任务为T2,则可判断任务控制块2中的唤醒标记位event2是否被设置为唤醒状态。若如33所示,event2已被T5设置为唤醒状态,则Daemon可获得接口字段function1中配置的唤醒接口,利用唤醒接口唤醒T2。
由上述31~36可知,T3、T5与Daemon相互配合,即可实现同步T1和T3、T2和T5的目的,且同步过程中,只有Daemon轮询指定空间即可,相对现有技术需要T1和T2分别轮询的方案,亦可在一定程度上降低跨操作系统的任务同步所消耗的处理资源。且这种通过Daemon接口发送唤醒请求的方案,在同一操作系统上需要被唤醒的任务越多时,降低同步过程所消耗处理资源的效果越显著。
与图2所示方法相对应地,本发明实施例还提供了一种跨操作系统的任务间同步的装置,参见图9所示示意图,所述装置是第一任务的一个功能模块,所述装置包括:
第一获得单元701,用于获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
第一查找单元702,用于根据所述第一获得单元获得的所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
设置单元703,用于在所述第一查找单元查找到所述第一任务控制块时,将所述第一任务控制块的唤醒标记位设置为唤醒状态;
发送单元704,用于向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
综上所述,本发明实施例同步的装置,在进行跨操作系统的任务间同步时,将第二任务对应的第一任务控制块中的唤醒标记位设置为唤醒状态,并通过唤醒请求触发能访问第一任务控制块的代理,由代理读取唤醒标记位的唤醒状态,主动对第二任务进行唤醒处理。如此,第二任务只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
可选地,所述装置还包括:
第一创建单元,用于在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
第二获得单元,用于获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
第二查找单元,用于根据所述第二获得单元获得的所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
第一写入单元,用于在所述第二查找单元查找到所述操作系统控制块时,向所述操作系统控制块中写入所述第一任务的身份标识。
可选地,所述装置还包括:
第二创建单元,用于在所述第二查找单元未查找到所述操作系统控制块时,在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
第二写入单元,用于向所述第二创建单元创建的所述操作系统控制块中写入所述第一任务的身份标识。
可选地,所述发送单元,具体用于通过中断接口向所述代理发送所述唤醒请求;或者,
所述发送单元,具体用于通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
所述发送单元,具体用于通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
可选地,所述操作系统控制块保存有所述中断接口的地址、所述核间通信硬件的地址和所述守护进程接口的地址中的至少一个,则
所述发送单元,具体用于从所述操作系统控制块获得所述中断接口的地址,通过所述中断接口的地址,寻址到所述中断接口,并通过所述中断接口向所述代理发送所述唤醒请求;或者,
所述发送单元,具体用于从所述操作系统控制块获得所述核间通信硬件的地址,通过所述核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
所述发送单元,具体用于所述第一任务从所述操作系统控制块获得所述守护进程接口的地址,通过所述守护进程接口的地址,寻址到所述守护进程监控的指定空间,并通过所述唤醒请求将所述指定空间中的标记位设置为唤醒状态,所述指定内存为所述发送单元和所述守护进程能访问的内存,所述标记位的状态为唤醒状态和挂起状态中的一种。
可选地,所述装置还包括:
第三写入单元,用于在所述第一查找单元查找到所述第一任务控制块之后,向所述第一任务控制块中写入所述第一任务的身份标识。
可选地,所述操作系统控制块保存有休眠接口,所述装置还包括:
挂起单元,用于在所述发送单元向所述代理发送所述唤醒请求之后,利用所述休眠接口挂起所述第一任务,并将所述第二任务控制块中的唤醒标记位设置为挂起状态。
需要说明的是,本装置实施例中提供的跨操作系统的任务间同步的装置,可以集成在电子设备中,应用于上文附图2所示的方法实施例中,实现其中第一任务的功能。跨操作系统的任务间同步的装置可以实现的其他附加功能,请参照方法实施例中对第一任务附加功能的描述,在这里不再赘述。
另外,上述实施例提供的跨操作系统的任务间同步的装置在进行同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
与图6所示方法相对应地,本发明实施例还提供了一种跨操作系统的任务间同步的装置,参见图10所示示意图,所述装置运行在第一操作系统上,所述装置包括:
接收单元801,用于接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
访问单元802,用于根据所述接收单元接收的所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
查找单元803,用于在所述访问单元获得所述第二任务的身份标识时,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述查找单元和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
判断单元804,用于判断所述查找单元查找的所述任务控制块中的所述唤醒标记位是否为唤醒状态;
唤醒单元805,用于在所述判断单元判定所述唤醒标记位为唤醒状态时,通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
综上所述,本发明实施例同步的装置,被第一任务触发后,可根据第二任务对应的任务控制块中的唤醒标记位,将第二任务唤醒。如此,第二任务只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
可选地,所述接收单元,具体用于接收所述第一任务通过中断接口发送的所述唤醒请求;或者,
所述接收单元,具体用于接收所述第一任务通过核间通信硬件发送的所述唤醒请求;或者,
所述接收单元,具体用于接收所述第一任务通过守护进程接口发送的所述唤醒请求,所述守护进程运行在所述第一操作系统上。
需要说明的是,本装置实施例中提供的跨操作系统的任务间同步的装置,可以集成在电子设备中,应用于上文附图6所示的方法实施例中,实现其中代理的功能。跨操作系统的任务间同步的装置可以实现的其他附加功能,请参照方法实施例中对代理附加功能的描述,在这里不再赘述。
另外,上述实施例提供的跨操作系统的任务间同步的装置在进行同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
与图7所示方法相对应地,本发明实施例还提供了一种跨操作系统的任务间同步的装置,参见图11所示示意图,所述装置运行在第一操作系统上,所述装置包括:
接收单元901,用于接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
查找单元902,用于根据所述接收单元接收的所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述查找单元和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
判断单元903,用于判断所述查找单元查找的所述任务控制块中的所述唤醒标记位是否为唤醒状态;
访问单元904,用于在所述判断单元判定所述唤醒标记位为唤醒状态时,访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置;
唤醒单元905,用于通过所述访问单元获得的所述唤醒接口唤醒所述第二任务。
综上所述,本发明实施例同步的装置,被第一任务触发后,可根据第二任务对应的任务控制块中的唤醒标记位,将第二任务唤醒。如此,第二任务只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
可选地,所述接收单元,具体用于接收所述第一任务通过核间通信硬件发送的所述唤醒请求,所述唤醒请求包括第二任务的身份标识。
需要说明的是,本装置实施例中提供的跨操作系统的任务间同步的装置,可以集成在电子设备中,应用于上文附图7所示的方法实施例中,实现其中代理的功能。跨操作系统的任务间同步的装置可以实现的其他附加功能,请参照方法实施例中对代理附加功能的描述,在这里不再赘述。
另外,上述实施例提供的跨操作系统的任务间同步的装置在进行同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
与图2所示方法相对应地,本发明实施例还提供了一种跨操作系统的任务间同步的设备1000,参见图12所示示意图,所述设备内运行有第一任务,所述设备包括:处理器1001、存储器1002、网络接口1003、总线系统1004。
所述总线系统1004,用于将设备的各个硬件组件耦合在一起。
所述网络接口1003,用于实现设备与至少一个其它网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等方式。
所述存储器1002,用于存储程序指令和数据。
所述处理器1001,用于读取所述存储器1002中存储的程序指令和数据,执行以下操作:
生成第一任务;
所述第一任务获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
所述第一任务根据所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
如果查找到所述第一任务控制块,所述第一任务将所述第一任务控制块的唤醒标记位设置为唤醒状态;
所述第一任务向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
综上所述,本发明实施例同步的设备,在进行跨操作系统的任务间同步时,将第二任务对应的第一任务控制块中的唤醒标记位设置为唤醒状态,并通过唤醒请求触发能访问第一任务控制块的代理,由代理读取唤醒标记位的唤醒状态,主动对第二任务进行唤醒处理。如此,第二任务只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
可选地,所述处理器生成的所述第一任务还用于执行以下操作:
所述第一任务在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
所述第一任务获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
所述第一任务根据所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
如果查找到所述操作系统控制块,所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
可选地,所述处理器生成的所述第一任务还用于执行以下操作:
如果未查找到所述操作系统控制块,所述第一任务在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
可选地,所述第一任务向所述代理发送唤醒请求,包括:
所述第一任务通过中断接口向所述代理发送所述唤醒请求;或者,
所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
可选地,所述操作系统控制块保存有所述中断接口的地址、所述核间通信硬件的地址和所述守护进程接口的地址中的至少一个,则
所述第一任务通过中断接口向所述代理发送所述唤醒请求,包括:
所述第一任务从所述操作系统控制块获得所述中断接口的地址;
所述第一任务通过所述中断接口的地址,寻址到所述中断接口,并通过所述中断接口向所述代理发送所述唤醒请求;
所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识,包括:
所述第一任务从所述操作系统控制块获得所述核间通信硬件的地址;
所述第一任务通过所述核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;
所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,包括:
所述第一任务从所述操作系统控制块获得所述守护进程接口的地址;
所述第一任务通过所述守护进程接口的地址,寻址到所述守护进程监控的指定空间,并通过所述唤醒请求将所述指定空间中的标记位设置为唤醒状态,所述指定内存为所述第一任务和所述守护进程能访问的内存,所述标记位的状态为唤醒状态和挂起状态中的一种。
可选地,所述处理器生成的所述第一任务还用于执行以下操作:
所述第一任务查找到所述第一任务控制块之后,向所述第一任务控制块中写入所述第一任务的身份标识。
可选地,所述操作系统控制块保存有休眠接口,所述处理器生成的所述第一任务还用于执行以下操作:
所述第一任务向所述代理发送所述唤醒请求之后,利用所述休眠接口挂起所述第一任务,并将所述第二任务控制块中的唤醒标记位设置为挂起状态。
附图12所示的跨操作系统的任务间同步的设备的实现细节,请参考前面附图2所示的方法实施例中的描述。
与图6所示方法相对应地,本发明实施例还提供了一种跨操作系统的任务间同步的设备1100,参见图13所示示意图,所述设备运行在第一操作系统上,所述设备包括:处理器1101、存储器1102、网络接口1103、总线系统1104。
所述总线系统1104,用于将设备的各个硬件组件耦合在一起。
所述网络接口1103,用于实现设备与至少一个其它网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等方式。
所述存储器1102,用于存储程序指令和数据。
所述处理器1101,用于读取所述存储器1102中存储的程序指令和数据,执行以下操作:
生成第一操作系统的代理;
所述代理接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
所述代理根据所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接口,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
所述代理在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
所述代理判断所述唤醒标记位是否为唤醒状态;
如果所述唤醒标记位为唤醒状态,所述代理通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
综上所述,本发明实施例同步的设备,被第一任务触发后,可根据第二任务对应的任务控制块中的唤醒标记位,将第二任务唤醒。如此,第二任务只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
可选地,所述代理接收第一任务发送的唤醒请求,包括:
所述代理接收所述第一任务通过中断接口发送的所述唤醒请求;或者,
所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求;或者,
所述代理接收所述第一任务通过守护进程接口发送的所述唤醒请求,所述守护进程运行在所述第一操作系统上。
附图13所示的跨操作系统的任务间同步的设备的实现细节,请参考前面附图6所示的方法实施例中的描述。
与图7所示方法相对应地,本发明实施例还提供了一种跨操作系统的任务间同步的设备1200,参见图14所示示意图,所述设备运行在第一操作系统上,所述设备包括:处理器1201、存储器1202、网络接口1203、总线系统1204。
所述总线系统1204,用于将设备的各个硬件组件耦合在一起。
所述网络接口1203,用于实现设备与至少一个其它网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等方式。
所述存储器1202,用于存储程序指令和数据。
所述处理器1201,用于读取所述存储器1202中存储的程序指令和数据,执行以下操作:
生成第一操作系统的代理;
所述代理接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
所述代理根据所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
所述代理判断所述唤醒标记位是否为唤醒状态;
如果所述唤醒标记位为唤醒状态,所述代理访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置;
所述代理通过所述唤醒接口唤醒所述第二任务。
综上所述,本发明实施例同步的设备,被第一任务触发后,可根据第二任务对应的任务控制块中的唤醒标记位,将第二任务唤醒。如此,第二任务只需等待被唤醒即可,无需如现有技术一般不断轮询判断消耗处理资源,有利于降低跨操作系统的任务间同步所消耗的处理资源。
可选地,所述代理接收第一任务发送的唤醒请求,包括:
所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求,所述唤醒请求包括第二任务的身份标识。
附图14所示的跨操作系统的任务间同步的设备的实现细节,请参考前面附图7所示的方法实施例中的描述。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备)执行本发明各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的可选实施方式,并非用于限定本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (17)
1.一种跨操作系统的任务间同步的方法,其特征在于,所述方法包括:
第一任务获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
所述第一任务根据所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
如果查找到所述第一任务控制块,所述第一任务将所述第一任务控制块的唤醒标记位设置为唤醒状态;
所述第一任务向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一任务在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
所述第一任务获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
所述第一任务根据所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
如果查找到所述操作系统控制块,所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果未查找到所述操作系统控制块,所述第一任务在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
4.根据权利要求2或3所述的方法,其特征在于,所述第一任务向所述代理发送唤醒请求,包括:
所述第一任务通过中断接口向所述代理发送所述唤醒请求;或者,
所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
5.根据权利要求4所述的方法,其特征在于,所述操作系统控制块保存有所述中断接口的地址、所述核间通信硬件的地址和所述守护进程接口的地址中的至少一个,则
所述第一任务通过中断接口向所述代理发送所述唤醒请求,包括:
所述第一任务从所述操作系统控制块获得所述中断接口的地址;
所述第一任务通过所述中断接口的地址,寻址到所述中断接口,并通过所述中断接口向所述代理发送所述唤醒请求;
所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识,包括:
所述第一任务从所述操作系统控制块获得所述核间通信硬件的地址;
所述第一任务通过所述核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;
所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,包括:
所述第一任务从所述操作系统控制块获得所述守护进程接口的地址;
所述第一任务通过所述守护进程接口的地址,寻址到所述守护进程监控的指定空间,并通过所述唤醒请求将所述指定空间中的标记位设置为唤醒状态,所述指定空间为所述第一任务和所述守护进程能访问的内存,所述标记位的状态为唤醒状态和挂起状态中的一种。
6.根据权利要求1~3或5任一项所述的方法,其特征在于,在所述第一任务查找到所述第一任务控制块之后,所述方法还包括:
所述第一任务向所述第一任务控制块中写入所述第一任务的身份标识。
7.根据权利要求2~3或5任一项所述的方法,其特征在于,所述操作系统控制块保存有休眠接口,在所述第一任务向所述代理发送唤醒请求之后,所述方法还包括:
所述第一任务利用所述休眠接口挂起所述第一任务,并将所述第二任务控制块中的唤醒标记位设置为挂起状态。
8.一种跨操作系统的任务间同步的方法,其特征在于,所述方法包括:
第一操作系统的代理接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
所述代理根据所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接口,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
所述代理在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
所述代理判断所述唤醒标记位是否为唤醒状态;
如果所述唤醒标记位为唤醒状态,所述代理通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
9.根据权利要求8所述的方法,其特征在于,所述第一操作系统的代理接收第一任务发送的唤醒请求,包括:
所述代理接收所述第一任务通过中断接口发送的所述唤醒请求;或者,
所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求;或者,
所述代理接收所述第一任务通过守护进程接口发送的所述唤醒请求,所述守护进程运行在所述第一操作系统上。
10.一种跨操作系统的任务间同步的方法,其特征在于,所述方法包括:
第一操作系统的代理接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
所述代理根据所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
所述代理判断所述唤醒标记位是否为唤醒状态;
如果所述唤醒标记位为唤醒状态,所述代理访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置;
所述代理通过所述唤醒接口唤醒所述第二任务。
11.根据权利要求10所述的方法,其特征在于,所述第一操作系统的代理接收第一任务发送的唤醒请求,包括:
所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求,所述唤醒请求包括第二任务的身份标识。
12.一种跨操作系统的任务间同步的装置,其特征在于,所述装置是第一任务的一个功能模块,所述装置包括:
第一获得单元,用于获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
第一查找单元,用于根据所述第一获得单元获得的所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
设置单元,用于在所述第一查找单元查找到所述第一任务控制块时,将所述第一任务控制块的唤醒标记位设置为唤醒状态;
发送单元,用于向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第一创建单元,用于在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
第二获得单元,用于获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
第二查找单元,用于根据所述第二获得单元获得的所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
第一写入单元,用于在所述第二查找单元查找到所述操作系统控制块时,向所述操作系统控制块中写入所述第一任务的身份标识。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
第二创建单元,用于在所述第二查找单元未查找到所述操作系统控制块时,在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
第二写入单元,用于向所述第二创建单元创建的所述操作系统控制块中写入所述第一任务的身份标识。
15.根据权利要求12~14任一项所述的装置,其特征在于,所述装置还包括:
第三写入单元,用于在所述第一查找单元查找到所述第一任务控制块之后,向所述第一任务控制块中写入所述第一任务的身份标识。
16.一种跨操作系统的任务间同步的装置,其特征在于,所述装置运行在第一操作系统上,所述装置包括:
接收单元,用于接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
访问单元,用于根据所述接收单元接收的所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接口,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
查找单元,用于在所述访问单元获得所述第二任务的身份标识时,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述查找单元和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
判断单元,用于判断所述查找单元查找的所述任务控制块中的所述唤醒标记位是否为唤醒状态;
唤醒单元,用于在所述判断单元判定所述唤醒标记位为唤醒状态时,通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
17.一种跨操作系统的任务间同步的装置,其特征在于,所述装置运行在第一操作系统上,所述装置包括:
接收单元,用于接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
查找单元,用于根据所述接收单元接收的所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述查找单元和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
判断单元,用于判断所述查找单元查找的所述任务控制块中的所述唤醒标记位是否为唤醒状态;
访问单元,用于在所述判断单元判定所述唤醒标记位为唤醒状态时,访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置;
唤醒单元,用于通过所述访问单元获得的所述唤醒接口唤醒所述第二任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410535130.5A CN105573825B (zh) | 2014-10-11 | 2014-10-11 | 一种跨操作系统的任务间同步的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410535130.5A CN105573825B (zh) | 2014-10-11 | 2014-10-11 | 一种跨操作系统的任务间同步的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105573825A CN105573825A (zh) | 2016-05-11 |
CN105573825B true CN105573825B (zh) | 2020-02-14 |
Family
ID=55883997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410535130.5A Active CN105573825B (zh) | 2014-10-11 | 2014-10-11 | 一种跨操作系统的任务间同步的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105573825B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4170519A4 (en) * | 2020-06-30 | 2023-12-27 | Huawei Technologies Co., Ltd. | DATA SYNCHRONIZATION METHOD AND APPARATUS |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10305834B2 (en) * | 2016-06-20 | 2019-05-28 | Huawei Technologies Co., Ltd. | System and method for messaging between operating system containers |
CN108460047B (zh) * | 2017-02-21 | 2021-11-16 | 阿里巴巴集团控股有限公司 | 数据同步方法及设备 |
CN110046050B (zh) * | 2018-01-16 | 2024-03-01 | 华为技术有限公司 | 一种核间数据传输的装置和方法 |
CN108491268B (zh) * | 2018-03-15 | 2021-10-08 | 浙江大学 | 一种面向智能网联汽车的混核操作系统 |
CN108920298B (zh) * | 2018-07-16 | 2021-07-13 | 北京中科网威信息技术有限公司 | 一种基于申威架构的监控信号量的处理方法及装置 |
CN113595983B (zh) * | 2021-06-25 | 2023-12-01 | 青岛海尔科技有限公司 | 设备控制系统、方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100346307C (zh) * | 2006-01-17 | 2007-10-31 | 浙江大学 | Java操作系统中实时任务调度的实现方法 |
CN100383743C (zh) * | 2006-04-07 | 2008-04-23 | 浙江大学 | Java操作系统中实时任务调度方法 |
KR100936601B1 (ko) * | 2008-05-15 | 2010-01-13 | 재단법인서울대학교산학협력재단 | 멀티 프로세서 시스템 |
CN101477511B (zh) * | 2008-12-31 | 2010-08-25 | 杭州华三通信技术有限公司 | 一种实现多操作系统共享存储介质的方法和装置 |
US8824346B2 (en) * | 2011-02-23 | 2014-09-02 | Lg Electronics Inc. | Remote wakeup of application processor of mobile device |
-
2014
- 2014-10-11 CN CN201410535130.5A patent/CN105573825B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4170519A4 (en) * | 2020-06-30 | 2023-12-27 | Huawei Technologies Co., Ltd. | DATA SYNCHRONIZATION METHOD AND APPARATUS |
Also Published As
Publication number | Publication date |
---|---|
CN105573825A (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105573825B (zh) | 一种跨操作系统的任务间同步的方法及装置 | |
US8230201B2 (en) | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system | |
US8082315B2 (en) | Programming idiom accelerator for remote update | |
US8145723B2 (en) | Complex remote update programming idiom accelerator | |
US8886919B2 (en) | Remote update programming idiom accelerator with allocated processor resources | |
US8386822B2 (en) | Wake-and-go mechanism with data monitoring | |
US8225120B2 (en) | Wake-and-go mechanism with data exclusivity | |
US8516484B2 (en) | Wake-and-go mechanism for a data processing system | |
US8612977B2 (en) | Wake-and-go mechanism with software save of thread state | |
US8341635B2 (en) | Hardware wake-and-go mechanism with look-ahead polling | |
US8640141B2 (en) | Wake-and-go mechanism with hardware private array | |
US8015379B2 (en) | Wake-and-go mechanism with exclusive system bus response | |
US8312458B2 (en) | Central repository for wake-and-go mechanism | |
US8171476B2 (en) | Wake-and-go mechanism with prioritization of threads | |
US8732683B2 (en) | Compiler providing idiom to idiom accelerator | |
US8250396B2 (en) | Hardware wake-and-go mechanism for a data processing system | |
US8127080B2 (en) | Wake-and-go mechanism with system address bus transaction master | |
US8880853B2 (en) | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock | |
US8145849B2 (en) | Wake-and-go mechanism with system bus response | |
US8452947B2 (en) | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms | |
US20110173417A1 (en) | Programming Idiom Accelerators | |
TW200413889A (en) | Mechanism for processor power state aware distribution of lowest priority interrupts | |
KR20200014378A (ko) | 직무 관리 | |
TW200525365A (en) | Optimization of SMI handling and initialization | |
CN111694787A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |