当前位置: 首页 > 专利查询>杨百涛专利>正文

实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法技术方案

技术编号:22021921 阅读:66 留言:0更新日期:2019-09-04 01:12
本发明专利技术公开了实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法,其特征在于,包括以下步骤:s1:判定Binder请求的性质,属于实时Binder请求还是普通Binder请求,若是实时Binder请求则执行步骤S2;S2:Binder驱动向IPCThreadState类实例请求线程,SPAWN出硬实时或软实时线程以用于处理实时Binder请求;S3:Binder驱动公平对待所有实时Binde或将实时Binder请求有序的插入队列中。

Real-time Binder Processing in Real-time Android Operating System to Avoid Non-Real-time Binder Competition

【技术实现步骤摘要】
实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法
本专利技术涉及通信数据处理
,具体涉及一种实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法。
技术介绍
随着SOC(SystemOnChip)技术的不断发展,嵌入式系统在人们生产,生活的各个方面应用越来越广泛,大到航天航空,小到智能手机、智能手表等,可以说是无处不在。由于工作的特殊性,很多嵌入式设备要求系统对外部事件的响应必须在实现设定的时限范围内完成,使系统具有可预测性,因此就必须使用实时操作系统。常用的嵌入式实时操作系统包括有硬时VxWorks,QNX和uCOSII等,软实时则包括有WinCE等。像VxWorks,QNX和uCOSII等都是一些功能比较简单的封闭式操作系统。随着现在的系统日趋复杂,越来越需要把一些通用的有完善生态链的分时操作系统,如:Linux、Windows等改造成实时操作系统,这样既能满足通用需求又能满足特殊需求。由于Linux开源的特性,这方面已有一些很好的解决方案,如:RTLinux、RTAI、MontaVista等。现在使用越来越广泛的谷歌安卓(Android)操作系统也是一种通用的有完善生态链的分时操作系统,它基于Linux内核。安卓(Android)操作系统中最重要的进程间通讯机制就是Binder机制。Binder机制在安卓(Android)操作系统中可以说是无处不在。普通的Binder机制用来处理非实时的逻辑,也没有引入优先级的概念。实时安卓操作系统(RTAndroid)中可以将Binder机制用于处理实时逻辑。但将Binder机制用于处理实时逻辑有一个必须要解决的问题,由于Binder机制在安卓(Android)操作系统中可以说是无处不在,在同一进程中,在处理非实时Binder请求时,由于Binder驱动中的todo链表加了锁,只有当非实时Binder请求处理完后,实时Binder才能得到处理,这显然和实时系统的设计原则是不吻合的。具体的说,现有的Binder通讯机制是,当用户进程发起Binder请求后,先到达Binder服务类和接口类,再到达Binder核心类,然后到达IPCThreadState类,最后抵达运行在内核空间的Binder驱动。请求的结果按相反的路线返回到用户进程。IPCThreadState类负责和Binder驱动通讯并维护了Binder线程池。在安卓现在的设计中,每个用户进程中都只有一个IPCThreadState类的实例。另外,安卓系统还有一个特殊的Binder服务ServiceManager,它为Binder机制提供名字服务。Binder驱动为每个进程维护了binder_proc的数据结构,而binder_proc上也包含等待队列,这样binder线程可在上面睡眠。另外,binder_proc上也维护了FIFO队列,来缓存binder驱动在某个进程上所有未处理的工作。另外,binder驱动也维护了锁,来同步同一个进程上并发的binder请求。在实时安卓操作系统(RTAndroid)中,Binder机制也被用来处理实时的事件或请求的跨进程传递需求,因为Binder机制是一种高效且编程灵活的跨进程通讯机制。从上面分析可以,如果不对安卓原生的Binder机制做改进,实时的事件或请求的Binder处理没有被区别对待,当系统中的非实时Binder请求频繁且繁忙时,实时的事件或请求的Binder处理将延迟很多,实时性能将得不到保证。
技术实现思路
本专利技术目的在于提供实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法,基于实时安卓操作系统实现,适用于将安卓操作系统改造成实时的安卓操作系统中,也适用于任何使用Binder机制的实时操作系统中,来避免实时Binder处理时,非实时Binder请求的竞争问题。为了实现上述目的,本专利技术采用以下技术方案:实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法,其特征在于,包括以下步骤:s1:判定Binder请求的性质,属于实时Binder请求还是普通Binder请求,若是实时Binder请求则执行步骤S2;S2:Binder驱动向IPCThreadState类实例请求线程,SPAWN出硬实时或软实时线程以用于处理实时Binder请求;S3:Binder驱动公平对待所有实时Binde或将实时Binder请求有序的插入队列中。作为一种优选技术方案,包括分离于普通Binder机制的模式和/或内嵌于普通Binder的模式;分离于普通Binder机制的模式是指系统中有两个Binder驱动和对应的设备文件,分别为原生Binder驱动和实时Binder驱动;一个用户进程存在两个IPCThreadState类的实例,分别普通的IPCThreadState类的实例和实时的IPCThreadState类的实例,为其运行包括以下步骤:S1a:上层的Binder服务类和接口类,以及Binder核心类可以区分出Binder请求性质,若是实时Binder请求则找到实时的IPCThreadState类实例,若是普通Binder请求则找到普通的IPCThreadState类实例;S2a:实时Binder请求通过实时的IPCThreadState类实例将请求发送给实时Binder驱动;实时Binder驱动请求实时的IPCThreadState类实例SPAWN出硬实时或软实时线程以用于处理实时Binder请求;S3a:实时Binder驱动公平对待所有实时Binder请求或者按优先级把它们有序地插入到对应的一个或多个进程的FIFO队列中;内嵌于普通Binder的模式,系统中只存一个Binder驱动,每个用户进程也只有一个IPCThreadState类的实例,Binder库中有特定于实时Binder请求的接口或接口附加的参数,以区分是实时Binder请求还是普通Binder请求,其运行包括以下过程:S1b:由Binder库中的特殊接口或接口参数标明Binder请求是一个实时Binder请求;S2b:Binder驱动向IPCThreadState类实例请求SPAWN线程时,通过特定参数或是Binder协议中特定的命令,指明需要创建的线程是硬实时或软实时线程,IPCThreadState类实例将创建相应的线程以在这样线程中处理实时Binder请求;Sb3:在每个用户进程对应的binder_proc结构中,为实时Binder请求专门维护了实时Binder的等待队列rt_wait_queue和实时Binder的FIFO队列rt_todo_list。作为一种优选技术方案,当系统同时配置上述两种模式时,软件调用一个特定的接口可选择两种模式中的一种,如果不调用,缺省的认为选择分离于普通Binder的模式。作为一种优选技术方案,当在运行分离于普通Binder机制的模式或内嵌于普通Binder机制的模式之前还包括以下过程:读取配置或由用户调用的接口获得用户选用哪种模式,若选用分离于普通Binder机制的模式,则分离于普通Binder机制的模式运行;若选用内嵌于普通Binder机制的模式,则内嵌于普通Binder机制的模式运行本文档来自技高网
...

【技术保护点】
1.实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法,其特征在于,包括以下步骤:s1:判定Binder请求的性质,属于实时Binder请求还是普通Binder请求,若是实时Binder请求则执行步骤S2;S2: Binder驱动向IPCThreadState类实例请求线程,SPAWN出硬实时或软实时线程以用于处理实时Binder请求;S3: Binder驱动公平对待所有实时Binde或将实时Binder请求有序的插入队列中。

【技术特征摘要】
1.实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法,其特征在于,包括以下步骤:s1:判定Binder请求的性质,属于实时Binder请求还是普通Binder请求,若是实时Binder请求则执行步骤S2;S2:Binder驱动向IPCThreadState类实例请求线程,SPAWN出硬实时或软实时线程以用于处理实时Binder请求;S3:Binder驱动公平对待所有实时Binde或将实时Binder请求有序的插入队列中。2.根据权利要求1所述的实时安卓操作系统中的实时Binder处理避免非实时Binder竞争的方法,其特征在于,包括分离于普通Binder机制的模式和/或内嵌于普通Binder的模式;分离于普通Binder机制的模式是指系统中有两个Binder驱动和对应的设备文件,分别为原生Binder驱动和实时Binder驱动;一个用户进程存在两个IPCThreadState类的实例,分别普通的IPCThreadState类的实例和实时的IPCThreadState类的实例,为其运行包括以下步骤:S1a:上层的Binder服务类和接口类,以及Binder核心类可以区分出Binder请求性质,若是实时Binder请求则找到实时的IPCThreadState类实例,若是普通Binder请求则找到普通的IPCThreadState类实例;S2a:实时Binder请求通过实时的IPCThreadState类实例将请求发送给实时Binder驱动;实时Binder驱动请求实时的IPCThreadState类实例SPAWN出硬实时或软实时线程以用于处理实时Binder请求;S3a:实时Binder驱动公平对待所有实时Binder请求或者按优先级把它们有序地插入到对应的一个或多个进程的FIFO队列中;内嵌于普通Binder的模式,系统中只存一个Binder驱动,每个用户进程也只有一个IPCThreadState类的实例,Binder库中有特定于实时Binder请求的接口或接口附加的参数,以区分是实时Binder请求还是普通Binder请求,其运行包括以下过程:S1b:由Binder库中的特殊接口或接口参数标明Binder请求是一个实时Binder请求;S2b:Binder驱动向IPCThreadState类实例请求SPAWN线程时,通过特定参数或是Binder协议中特定的命令,指明需要创建的线程是硬实时或软实时线程,IPCThreadState类实例将创建相应的线程以在这样线程中处理实时Binder请求;Sb3:在每个用户进程对应的binder_proc结构中,为实时Binder请求...

【专利技术属性】
技术研发人员:杨百涛
申请(专利权)人:杨百涛
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1