一种单进程DirectFB的虚拟多进程运行方法

文档序号:6432506阅读:211来源:国知局
专利名称:一种单进程DirectFB的虚拟多进程运行方法
技术领域
本发明涉及嵌入式平台领域,特别涉及一种单进程DirectFB的虚拟多进程运行方法。
背景技术
DirectFB是专门为满足嵌入式设备要求而开发的小巧、强大、灵活和易于使用的图形系统,并且试图成为一个建构于Linux Framebuffer Device之上的新图形标准。它在FrameBuffer的基础上提供了图形加速、输入设备处理提取、透明窗口和多重显示层的功能,能够对嵌入式系统GUI有较好的支持。与那些通用的嵌入式GUI系统相比,它具有非常简洁、高效的体系结构和硬件图形加速功能。目前国内外大多数嵌入式平台均已支持DirectFB 图形系统,如 sigma design, broadcom, NXP,华为的海思等。DirectFB主要有两种工作方式单进程和多进程。在单进程方式下,使用DirectFB的进程首先创建DirectFB,退出时释放DirectFB,在释放DirectFB时平台会清除显存,因此屏幕上会出现黑屏。而在多进程工作方式下,采用Master/Slave的方式,通过Iinux内核的fusion模块进行通信,每个进程均可以单独使用DirectFB资源,用于显示各自的UI,对于嵌入式平台上多业务的同时运行提供了强力的支撑。但由于平台资源等各方面的限制,并非所有的嵌入式平台都支持DirectFB的多进程运行。单进程DirectFB对于支持单一业务的运行是足够的,系统启动后运行该应用,该应用直至关机时才退出,因此该应用只需在启动时初始化DirectFB资源,退出时释放即可。但在嵌入式平台上同时运行多个业务已经成为一种趋势,每个业务都需要调用DirectFB来显示自身的W,为了避免DirectFB资源的释放申请导致切换时出现黑屏、等待时间长等问题,现有技术采用把多个业务集成到同一进程中,对软件的集成开发,稳定运行带来了极大的挑战。因此这种措施在多进程共享DirectFB资源为避免DirectFB资源的频繁释放申请导致切换时出现黑屏、等待时间长等问题时并没有实用价值。

发明内容
本发明的目的在于,为了更好地支持单进程DirectFB嵌入式平台上运行多业务,本发明提出了一种单进程DirectFB的虚拟多进程运行方法。为了达到上述目的,本发明提供一种单进程DirectFB的虚拟多进程运行方法,该方法用于在单进程DirectFB嵌入式平台上支持多业务时,每个业务都可以单独使用DirectFB,所述方法包含如下步骤步骤1,用于后台业务管理进程初始化DirectFB资源的步骤。步骤2,用于各个子进程向所述后台业务管理进程申请获取DirectFB资源后才能使用DirectFB资源的步骤。其中,所述后台业务管理进程在系统启动后创建并一直处于运行状态,所述业务管理进程负责管理子进程业务间切换,DirectFB资源的使用与分配。
可选的,所述步骤I具体包含如下步骤系统启动后创建后台业务管理进程,该进程用于初始化DirectFB资源并创建DirectFB句柄。可选的,所述步骤2进一步包含如下步骤步骤2-1,用于为新创建的子进程分配DirectFB资源的步骤;步骤2-2,用于当运行中的两个子进程状态切换时再分配DirectFB资源的步骤。优化的,所述步骤2-1为当运行新业务时,后台业务管理进程创建子进程,并将创建的DirectFB句柄传递给子进程,完成子进程的图形显示;其中,所述子进程在创建时完全继承后台业务管理进程的内存和环境变量资源。进一步优化的,所述步骤2-2为当从子进程A切换至子进程B时,子进程A释放DirectFB资源的使用,转至后台,并将其当前显示的n以像素的方式保存至内存,当需要再次运行子进程A时,只需恢复对DirectFB资源的使用,并将其保存的UI内容显示。采用上述的技术方案后,本发明具有以下优点I、本发明通过在系统启动创建后台业务管理进程,其负责对DirectFB资源完成基本的初始化,每个业务子进程需要使用DirectFB时不再重新初始化DirectFB资源,而是向父进程(即后台业务管理进程)申请,当使用完毕后将DirectFB资源归还给父进程,实现了在嵌入式平台上单进程DirectFB的多进程使用;2、通过采用本发明的方法,在仅支持单进程DirectFB的嵌入式平台上,每个业务子进程都可以独立的使用DirectFB资源,无需业务间集成,业务间没有交叉,加快了软件集成的速度;业务切换时不会出现由于DirectFB释放时导致的黑屏,减少了用户等待时间,提闻了用户体验。总之,通过本发明提供的方法每个业务子进程可以独立使用DirectFB资源,且业务间切换流畅,无黑屏现象。


图I是本发明的在嵌入式平台上单进程DirectFB的虚拟多进程运行方法的流程图;图2是本发明的方法中业务子进程如何切换使用DirectFB资源的流程图;图3是本发明的方法中各个业务子进程的状态转移图。
具体实施例方式为了使本发明的目的、实现方法和优点更加清楚明白,参照附图,对本发明做进一步的详细说明。本发明提出一种单进程DirectFB的虚拟多进程运行方法,包括如下步骤(I)系统启动后首先启动后台业务管理进程,由该进程负责初始化DirectFB资源;(2)当需要运行新业务时,后台管理进程首先检测是否有前台业务运行,若有则通知前台业务释放DirectFB的使用转入后台运行,然后运行新业务;(3)新启动的业务向父进程(即后台管理进程)申请对DirectFB资源的使用,父进程返回事先申请好的DirectFB句柄。(4)子进程使用完毕后将DirectFB的使用权归还给后台管理进程。进一步地,所述的业务子进程有三种状态前台,后台及退出状态。前台状态是指业务子进程需要有n显示,正在占用DirectFB资源;后台状态是指业务子进程释放对DirectFB资源的占用,不需要n显示,但处于运行状态;退出状态是指业务子进程未运行。当后台管理进程需要运行业务子进程时,首先需要判断业务子进程的具体状态(I)若业务子进程处于前台状态则无需操作;(2)若业务子进程处于后台状态,则通知其切换至前台状态;(3)若业务子进程处于退出状态,则业务管理进程需要启动子进程,并在子进程中运行新业务。进一步地,为了保证子进程能够使用父进程创建的DirectFB资源,要求子进程在创建时必须完全继承父进程的内存和环境变量等资源,如使用Linux操作系统的fork ()函数就可以达到此目的。进一步地,为了实现业务间的快速切换,当从业务A切换至业务B时,业务A只是释放DirectFB资源的使用,转至后台,并将其当前显示的UI以像素的方式保存至内存,当需要再次运行业务A时,只需恢复对DirectFB资源的使用,并将其保存的UI内容显示。
实施例图I为在Linux操作系统平台上单进程DirectFB如何实现多进程运行方法的基本原理图,单进程DirectFB的虚拟多进程运行方法包括以下几个步骤101)系统启动后,创建后台业务管理进程,该进程一直处于运行状态,所述业务管理进程用以管理各个业务子进程,负责向个业务子进程分发消息,统计并维护各业务子进程的状态;102)后台业务管理进程初始化DirectFB资源,为业务子进程的使用提供资源;103)后台业务管理进程通过fork方式创建子进程;104)在子进程中通过函数调用等方式运行新业务;105)子进程向父进程申请DirectFB资源的使用,显示子进程运行的新业务对应的UI。下面以DirectFB的基本接口代码示例说明后台业务管理进程对DirectFB资源的初始化过程及业务子进程如何使用父进程(即业务管理进程)申请的DirectFB资源。后台业务管理进程初始化DirectFB过程示例如下表所示
int gdfb—handler;
DirectFBInit;
DirectFBSetOpti on;
DirectFBCreate(&gdfb)return gdfb—handler;业务子进程使用DirectFB的过程示例如下表所示int gdfb = (IDirectFB *)get_gdfb_handler();
gdfb ->GetDisplayLayer(gdfb, DLID PRIMARY, &layer );
layer->SetConfiguration( layer, &layer config);其中,get—gdfb—handler函数为子进程向父进程(即业务管理进程)申请DirectFB资源的函数,调用该函数可以使子进程获取父进程创建的DirectFB资源的句柄。图2对本发明的方法中业务子进程间如何切换使用DirectFB资源做了详细说明,假设当前处于前台的业务为业务A,即业务A占用了 DirectFB资源的使用,要切换至业务B开始运行。主要包括以下几个步骤201)后台管理进程首先通知当前正处于前台状态的业务A转入后台状态;202)业务A收到后台管理进程的消息后,释放其占用的DirectFB资源,将其返回给后台管理进程,并将其当前显示的n以像素的方式保存至内存;203)后台管理进程等待业务A返回的DirectFB资源;204)判断业务B的状态,若为退出状态,则转向205;若业务B为暂停状态(后台状态),则转向207 ;若为前台状态,则转向209 ;如图3所示;205)后台管理进程启动子进程;206)在子进程中通过调用业务B的接口,运行业务B ;207)通知业务子进程从后台状态切换至前台状态;208)子进程向父进程申请DirectFB资源的使用,显示子业务对应的W,对于处于后台状态的业务只需显示事先保存的内存镜像内容;209)业务B处于前台运行状态。上述所述的内容中,当各个创建业务子进程与业务管理进程间通信时数据包的封装格式如下表所示,该封装格式包含消息号、消息长度、业务子进程状态和子进程PID信肩、O
消息号I消息长度I业务子进程状态~子进程PID以上所述仅为本发明的一个具体实施方式
,并非用于限定本发明的保护范围,本领域的技术人员应当理解,在不脱离发明原理的前提下,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的保护范围中。
权利要求
1.一种单进程DirectFB的虚拟多进程运行方法,该方法用于在单进程DirectFB嵌入式平台上支持多业务时,每个业务都可以单独使用DirectFB,所述方法包含如下步骤 步骤1,用于后台业务管理进程初始化DirectFB资源的步骤; 步骤2,用于各个子进程向所述后台业务管理进程申请获取DirectFB资源后才能使用DirectFB资源的步骤; 其中,所述后台业务管理进程在系统启动后创建并一直处于运行状态,所述业务管理进程负责管理子进程业务间切换,DirectFB资源的使用与分配。
2.根据权利要求I所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤I具体包含如下步骤系统启动后创建后台业务管理进程,该进程用于初始化DirectFB资源并创建DirectFB句柄。
3.根据权利要求I或2所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤2进一步包含如下步骤 步骤2-1,用于为新创建的子进程分配DirectFB资源的步骤; 步骤2-2,用于当运行中的两个子进程状态切换时再分配DirectFB资源的步骤。
4.根据权利要求3所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤2-1为当运行新业务时,后台业务管理进程创建子进程,并将创建的DirectFB句柄传递给子进程,完成子进程的图形显示; 其中,所述子进程在创建时完全继承后台业务管理进程的内存和环境变量资源。
5.根据权利要求3所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤2-2为 当从子进程A切换至子进程B时,子进程A释放DirectFB资源的使用,转至后台,并将其当前显示的n以像素的方式保存至内存,当需要再次运行子进程A时,只需恢复对DirectFB资源的使用,并将其保存的UI内容显示。
6.根据权利要求I所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述后台业务管理进程还负责向个子进程分发消息,统计并维护各业务子进程的状态信息。
全文摘要
本发明公开了一种单进程DirectFB的虚拟多进程运行方法,该方法用于在单进程DirectFB嵌入式平台上支持多业务时,每个业务都可以单独使用DirectFB,所述方法包含如下步骤步骤1,用于后台业务管理进程初始化DirectFB资源的步骤;步骤2,用于各个子进程向所述后台业务管理进程申请获取DirectFB资源后才能使用DirectFB资源的步骤;其中,所述后台业务管理进程在系统启动后创建并一直处于运行状态,所述后台业务管理进程负责管理业务间切换,资源使用与分配,特别是DirectFB资源的使用,业务管理进程启动时初始化DirectFB的资源,通过父子进程共享进程空间的方式将DirectFB资源提供给子进程使用;业务子进程对应于每个业务。基于本发明提供的方法单进程DirectFB嵌入式平台上支持多业务进程时,每个业务子进程都可以单独使用DirectFB,且业务间切换流畅,无黑屏现象。
文档编号G06F9/46GK102981895SQ201110262090
公开日2013年3月20日 申请日期2011年9月6日 优先权日2011年9月6日
发明者朱小勇, 孙鹏, 姜艳, 程钢 申请人:中国科学院声学研究所, 上海尚恩华科网络科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1