一种跨操作系统的任务间同步的方法及装置的制造方法

文档序号:9810355阅读:220来源:国知局
一种跨操作系统的任务间同步的方法及装置的制造方法
【技术领域】
[0001]本发明涉及通信技术领域,具体涉及一种跨操作系统的任务间同步的方法及装置。
【背景技术】
[0002]随着信息技术的不断发展以及用户需求的不断提高,电子设备大多采用并行处理技术来提高设备性能。例如,电子设备可将程序划分为多个粒度较小的任务,并通过多个任务并行处理的方式提高处理效率。然而,这种并行处理方式在提高设备处理效率的同时,还带来了任务间同步的问题。所谓任务间同步可以理解为,多个任务相互协作共同完成一件事情时,任务间存在的直接制约关系。作为一个示例,任务间同步可体现为:第一任务执行完成时,需要通知第二任务开始执行;对应地,第二任务需要知晓第一任务的执行状态。
[0003]根据需要进行同步的各任务所在的操作系统(英文:0perating System,简称:OS)是否相同,任务间同步可分为以下两种类型:一种是同一操作系统的任务间同步,即,第一任务和第二任务运行在同一操作系统上;一种是跨操作系统的任务间同步,即,第一任务和第二任务运行在不同的操作系统上。
[0004]针对跨操作系统的任务间同步,可利用指定共享内存中不同任务共用的一个标记位进行任务间同步。结合上述任务间同步的示例,同步过程可体现为:第一任务执行完成后置位指定共享内存中的标记位;对应地,第二任务实时访问指定共享内存,并判断该标记位是否已经置位,如果是,则第二任务开始执行,如果否,则第二任务继续访问指定共享内存,直至标记位被置位为止。如此方式,第二任务需要不断的循环执行访问指定共享内存和判断标志位的动作,造成了处理资源的浪费。

【发明内容】

[0005]本发明实施例提供的跨操作系统的任务间同步的方法及装置,用以降低跨操作系统的任务间同步所消耗的处理资源。
[0006]为此,本发明实施例提供如下技术方案:
[0007]第一方面,提供了一种跨操作系统的任务间同步的方法,所述方法包括:
[0008]第一任务获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
[0009]所述第一任务根据所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
[0010]如果查找到所述第一任务控制块,所述第一任务将所述第一任务控制块的唤醒标记位设置为唤醒状态;
[0011]所述第一任务向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
[0012]在第一方面的第一种可能的实现方式中,所述方法还包括:
[0013]所述第一任务在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
[0014]所述第一任务获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
[0015]所述第一任务根据所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
[0016]如果查找到所述操作系统控制块,所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
[0017]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述方法还包括:
[0018]如果未查找到所述操作系统控制块,所述第一任务在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
[0019]所述第一任务向所述操作系统控制块中写入所述第一任务的身份标识。
[0020]结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述第一任务向所述代理发送唤醒请求,包括:
[0021]所述第一任务通过中断接口向所述代理发送所述唤醒请求;或者,
[0022]所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
[0023]所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
[0024]结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述操作系统控制块保存有所述中断接口的地址、所述核间通信硬件的地址和所述守护进程接口的地址中的至少一个,则
[0025]所述第一任务通过中断接口向所述代理发送所述唤醒请求,包括:
[0026]所述第一任务从所述操作系统控制块获得所述中断接口的地址;
[0027]所述第一任务通过所述中断接口的地址,寻址到所述中断接口,并通过所述中断接口向所述代理发送所述唤醒请求;
[0028]所述第一任务通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识,包括:
[0029]所述第一任务从所述操作系统控制块获得所述核间通信硬件的地址;
[0030]所述第一任务通过所述核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;
[0031]所述第一任务通过守护进程接口向所述代理发送所述唤醒请求,包括:
[0032]所述第一任务从所述操作系统控制块获得所述守护进程接口的地址;
[0033]所述第一任务通过所述守护进程接口的地址,寻址到所述守护进程监控的指定空间,并通过所述唤醒请求将所述指定空间中的标记位设置为唤醒状态,所述指定内存为所述第一任务和所述守护进程能访问的内存,所述标记位的状态为唤醒状态和挂起状态中的一种。
[0034]结合第一方面或第一方面的第一种至第四种中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,在所述第一任务查找到所述第一任务控制块之后,所述方法还包括:
[0035]所述第一任务向所述第一任务控制块中写入所述第一任务的身份标识。
[0036]结合第一方面的第一种至第五种中的任一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述操作系统控制块保存有休眠接口,在所述第一任务向所述代理发送唤醒请求之后,所述方法还包括:
[0037]所述第一任务利用所述休眠接口挂起所述第一任务,并将所述第二任务控制块中的唤醒标记位设置为挂起状态。
[0038]第二方面,提供了一种跨操作系统的任务间同步的方法,所述方法包括:
[0039]第一操作系统的代理接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
[0040]所述代理根据所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接口,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
[0041]所述代理在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
[0042]所述代理判断所述唤醒标记位是否为唤醒状态;
[0043]如果所述唤醒标记位为唤醒状态,所述代理通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
[0044]在第二方面的第一种可能的实现方式中,所述第一操作系统的代理接收第一任务发送的唤醒请求,包括:
[0045]所述代理接收所述第一任务通过中断接口发送的所述唤醒请求;或者,
[0046]所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求;或者,
[0047]所述代理接收所述第一任务通过守护进程接口发送的所述唤醒请求,所述守护进程运行在所述第一操作系统上。
[0048]第三方面,提供了一种跨操作系统的任务间同步的方法,所述方法包括:
[0049]第一操作系统的代理接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
[0050]所述代理根据所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述代理和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
[0051]所述代理判断所述唤醒标记位是否为唤醒状态;
[0052]如果所述唤醒标记位为唤醒状态,所述代理访问所述第一操作系统对应的操作系统控制块,获得唤醒接口,所述操作系统控制块保存有所述唤醒接口,所述唤醒状态由所述第一任务设置;
[0053]所述代理通过所述唤醒接口唤醒所述第二任务。
[0054]在第三方面的第一种可能的实现方式中,所述第一操作系统的代理接收第一任务发送的唤醒请求,包括:
[0055]所述代理接收所述第一任务通过核间通信硬件发送的所述唤醒请求,所述唤醒请求包括第二任务的身份标识。
[0056]第四方面,提供了一种跨操作系统的任务间同步的装置,所述装置是第一任务的一个功能模块,所述装置包括:
[0057]第一获得单元,用于获得第二任务的身份标识,所述第一任务运行在第一操作系统上,所述第二任务运行在第二操作系统上,且所述第一任务与所述第二任务存在关联关系;
[0058]第一查找单元,用于根据所述第一获得单元获得的所述第二任务的身份标识,在指定共享内存中查找所述第二任务的身份标识对应的第一任务控制块,所述第一任务控制块保存有所述第二任务的身份标识、所述第二操作系统的身份标识和唤醒标记位,所述指定共享内存为所述第一任务和所述第二操作系统的代理能访问的内存,所述唤醒标记位的状态为初始状态、唤醒状态和挂起状态中的一种;
[0059]设置单元,用于在所述第一查找单元查找到所述第一任务控制块时,将所述第一任务控制块的唤醒标记位设置为唤醒状态;
[0060]发送单元,用于向所述代理发送唤醒请求,所述代理用于根据所述唤醒请求访问所述第一任务控制块,并根据所述第一任务控制块中的唤醒标记位唤醒所述第二任务。
[0061]在第四方面的第一种可能的实现方式中,所述装置还包括:
[0062]第一创建单元,用于在所述指定共享内存中创建第二任务控制块,所述第二任务控制块保存有所述第一任务的身份标识和唤醒标记位,所述唤醒标记位的状态为初始状态;
[0063]第二获得单元,用于获得第一操作系统的身份标识,并向所述第二任务控制块中写入所述第一操作系统的身份标识;
[0064]第二查找单元,用于根据所述第二获得单元获得的所述第一操作系统的身份标识,在所述指定共享内存中查找所述第一操作系统的身份标识对应的操作系统控制块;
[0065]第一写入单元,用于在所述第二查找单元查找到所述操作系统控制块时,向所述操作系统控制块中写入所述第一任务的身份标识。
[0066]结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述装置还包括:
[0067]第二创建单元,用于在所述第二查找单元未查找到所述操作系统控制块时,在所述指定共享内存中创建所述操作系统控制块,所述操作系统控制块保存有所述第一操作系统的身份标识;
[0068]第二写入单元,用于向所述第二创建单元创建的所述操作系统控制块中写入所述第一任务的身份标识。
[0069]结合第四方面或第四方面的第一种或第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述发送单元,具体用于通过中断接口向所述代理发送所述唤醒请求;或者,
[0070]所述发送单元,具体用于通过核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
[0071]所述发送单元,具体用于通过守护进程接口向所述代理发送所述唤醒请求,所述守护进程运行在所述第二操作系统上。
[0072]结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述操作系统控制块保存有所述中断接口的地址、所述核间通信硬件的地址和所述守护进程接口的地址中的至少一个,则
[0073]所述发送单元,具体用于从所述操作系统控制块获得所述中断接口的地址,通过所述中断接口的地址,寻址到所述中断接口,并通过所述中断接口向所述代理发送所述唤醒请求;或者,
[0074]所述发送单元,具体用于从所述操作系统控制块获得所述核间通信硬件的地址,通过所述核间通信硬件的地址,寻址到所述核间通信硬件,并通过所述核间通信硬件向所述代理发送所述唤醒请求,所述唤醒请求包括所述第二任务的身份标识;或者,
[0075]所述发送单元,具体用于所述第一任务从所述操作系统控制块获得所述守护进程接口的地址,通过所述守护进程接口的地址,寻址到所述守护进程监控的指定空间,并通过所述唤醒请求将所述指定空间中的标记位设置为唤醒状态,所述指定内存为所述发送单元和所述守护进程能访问的内存,所述标记位的状态为唤醒状态和挂起状态中的一种。
[0076]结合第四方面或第四方面的第一种至第四种中的任一种可能的实现方式,在第四方面的第五种可能的实现方式中,所述装置还包括:
[0077]第三写入单元,用于在所述第一查找单元查找到所述第一任务控制块之后,向所述第一任务控制块中写入所述第一任务的身份标识。
[0078]结合第四方面的第一种至第五种中的任一种可能的实现方式,在第四方面的第六种可能的实现方式中,所述操作系统控制块保存有休眠接口,所述装置还包括:
[0079]挂起单元,用于在所述发送单元向所述代理发送所述唤醒请求之后,利用所述休眠接口挂起所述第一任务,并将所述第二任务控制块中的唤醒标记位设置为挂起状态。
[0080]第五方面,提供了一种跨操作系统的任务间同步的装置,所述装置运行在第一操作系统上,所述装置包括:
[0081]接收单元,用于接收第一任务发送的唤醒请求,所述第一任务运行在第二操作系统上;
[0082]访问单元,用于根据所述接收单元接收的所述唤醒请求,访问所述第一操作系统对应的操作系统控制块,获得第二任务的身份标识和唤醒接,所述操作系统控制块保存有所述第二任务的身份标识和所述唤醒接口,所述第二任务运行在所述第一操作系统上;
[0083]查找单元,用于在所述访问单元获得所述第二任务的身份标识时,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述查找单元和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
[0084]判断单元,用于判断所述查找单元查找的所述任务控制块中的所述唤醒标记位是否为唤醒状态;
[0085]唤醒单元,用于在所述判断单元判定所述唤醒标记位为唤醒状态时,通过所述唤醒接口唤醒所述第二任务,所述唤醒状态由所述第一任务设置。
[0086]在第五方面的第一种可能的实现方式中,所述接收单元,具体用于接收所述第一任务通过中断接口发送的所述唤醒请求;或者,
[0087]所述接收单元,具体用于接收所述第一任务通过核间通信硬件发送的所述唤醒请求;或者,
[0088]所述接收单元,具体用于接收所述第一任务通过守护进程接口发送的所述唤醒请求,所述守护进程运行在所述第一操作系统上。
[0089]第六方面,提供了一种跨操作系统的任务间同步的装置,所述装置运行在第一操作系统上,所述装置包括:
[0090]接收单元,用于接收第一任务发送的唤醒请求,所述唤醒请求包括第二任务的身份标识,所述第二任务运行在所述第一操作系统上,所述第一任务运行在第二操作系统上;
[0091]查找单元,用于根据所述接收单元接收的所述唤醒请求,在指定共享内存中查找所述第二任务的身份标识对应的任务控制块,所述任务控制块中保存有唤醒标记位,所述指定共享内存为所述查找单元和所述第一任务能访问的内存,所述唤醒标记位为初始状态、唤醒状态和挂起状态中的一种;
[0092]判断单元,用于判断所述查找单元查找的所述任务控制块中的所述唤醒标记位是否为唤醒状态;
[0093]访问单元,用于在所述判断单元判定所述唤醒标记位为唤醒状态时,访问所述第一操作系统对应的操作系统控制块,获得唤醒接
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1