CN102981895B - 一种单进程DirectFB的虚拟多进程运行方法 - Google Patents
一种单进程DirectFB的虚拟多进程运行方法 Download PDFInfo
- Publication number
- CN102981895B CN102981895B CN201110262090.8A CN201110262090A CN102981895B CN 102981895 B CN102981895 B CN 102981895B CN 201110262090 A CN201110262090 A CN 201110262090A CN 102981895 B CN102981895 B CN 102981895B
- Authority
- CN
- China
- Prior art keywords
- directfb
- subprocess
- resource
- business
- batch processing
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种单进程DirectFB的虚拟多进程运行方法,该方法用于在单进程DirectFB嵌入式平台上支持多业务时,每个业务都可以单独使用DirectFB,所述方法包含如下步骤:步骤1,用于后台业务管理进程初始化DirectFB资源的步骤;步骤2,用于各个子进程向所述后台业务管理进程申请获取DirectFB资源后才能使用DirectFB资源的步骤;其中,所述后台业务管理进程在系统启动后创建并一直处于运行状态,所述后台业务管理进程负责管理业务间切换,资源使用与分配,特别是DirectFB资源的使用,业务管理进程启动时初始化DirectFB的资源,通过父子进程共享进程空间的方式将DirectFB资源提供给子进程使用;业务子进程对应于每个业务。基于本发明提供的方法单进程DirectFB嵌入式平台上支持多业务进程时,每个业务子进程都可以单独使用DirectFB,且业务间切换流畅,无黑屏现象。
Description
技术领域
本发明涉及嵌入式平台领域,特别涉及一种单进程DirectFB的虚拟多进程运行方法。
背景技术
DirectFB是专门为满足嵌入式设备要求而开发的小巧、强大、灵活和易于使用的图形系统,并且试图成为一个建构于Linux Framebuffer Device之上的新图形标准。它在FrameBuffer的基础上提供了图形加速、输入设备处理提取、透明窗口和多重显示层的功能,能够对嵌入式系统GUI有较好的支持。与那些通用的嵌入式GUI系统相比,它具有非常简洁、高效的体系结构和硬件图形加速功能。目前国内外大多数嵌入式平台均已支持DirectFB图形系统,如sigma design,broadcom,NXP,华为的海思等。
DirectFB主要有两种工作方式:单进程和多进程。在单进程方式下,使用DirectFB的进程首先创建DirectFB,退出时释放DirectFB,在释放DirectFB时平台会清除显存,因此屏幕上会出现黑屏。而在多进程工作方式下,采用Master/Slave的方式,通过linux内核的fusion模块进行通信,每个进程均可以单独使用DirectFB资源,用于显示各自的UI,对于嵌入式平台上多业务的同时运行提供了强力的支撑。但由于平台资源等各方面的限制,并非所有的嵌入式平台都支持DirectFB的多进程运行。
单进程DirectFB对于支持单一业务的运行是足够的,系统启动后运行该应用,该应用直至关机时才退出,因此该应用只需在启动时初始化DirectFB资源,退出时释放即可。但在嵌入式平台上同时运行多个业务已经成为一种趋势,每个业务都需要调用DirectFB来显示自身的UI,为了避免DirectFB资源的释放申请导致切换时出现黑屏、等待时间长等问题,现有技术采用把多个业务集成到同一进程中,对软件的集成开发,稳定运行带来了极大的挑战。因此这种措施在多进程共享DirectFB资源为避免DirectFB资源的频繁释放申请导致切换时出现黑屏、等待时间长等问题时并没有实用价值。
发明内容
本发明的目的在于,为了更好地支持单进程DirectFB嵌入式平台上运行多业务,本发明提出了一种单进程DirectFB的虚拟多进程运行方法。
为了达到上述目的,本发明提供一种单进程DirectFB的虚拟多进程运行方法,该方法用于在单进程DirectFB嵌入式平台上支持多业务时,每个业务都可以单独使用DirectFB,所述方法包含如下步骤:
步骤1,用于后台业务管理进程初始化DirectFB资源的步骤。
步骤2,用于各个子进程向所述后台业务管理进程申请获取DirectFB资源后才能使用DirectFB资源的步骤。
其中,所述后台业务管理进程在系统启动后创建并一直处于运行状态,所述业务管理进程负责管理子进程业务间切换,DirectFB资源的使用与分配。
可选的,所述步骤1具体包含如下步骤:系统启动后创建后台业务管理进程,该进程用于初始化DirectFB资源并创建DirectFB句柄。
可选的,所述步骤2进一步包含如下步骤:
步骤2-1,用于为新创建的子进程分配DirectFB资源的步骤;
步骤2-2,用于当运行中的两个子进程状态切换时再分配DirectFB资源的步骤。
优化的,所述步骤2-1为:当运行新业务时,后台业务管理进程创建子进程,并将创建的DirectFB句柄传递给子进程,完成子进程的图形显示;其中,所述子进程在创建时完全继承后台业务管理进程的内存和环境变量资源。
进一步优化的,所述步骤2-2为:当从子进程A切换至子进程B时,子进程A释放DirectFB资源的使用,转至后台,并将其当前显示的UI以像素的方式保存至内存,当需要再次运行子进程A时,只需恢复对DirectFB资源的使用,并将其保存的UI内容显示。
采用上述的技术方案后,本发明具有以下优点:
1、本发明通过在系统启动创建后台业务管理进程,其负责对DirectFB资源完成基本的初始化,每个业务子进程需要使用DirectFB时不再重新初始化DirectFB资源,而是向父进程(即后台业务管理进程)申请,当使用完毕后将DirectFB资源归还给父进程,实现了在嵌入式平台上单进程DirectFB的多进程使用;
2、通过采用本发明的方法,在仅支持单进程DirectFB的嵌入式平台上,每个业务子进程都可以独立的使用DirectFB资源,无需业务间集成,业务间没有交叉,加快了软件集成的速度;业务切换时不会出现由于DirectFB释放时导致的黑屏,减少了用户等待时间,提高了用户体验。
总之,通过本发明提供的方法每个业务子进程可以独立使用DirectFB资源,且业务间切换流畅,无黑屏现象。
附图说明
图1是本发明的在嵌入式平台上单进程DirectFB的虚拟多进程运行方法的流程图;
图2是本发明的方法中业务子进程如何切换使用DirectFB资源的流程图;
图3是本发明的方法中各个业务子进程的状态转移图。
具体实施方式
为了使本发明的目的、实现方法和优点更加清楚明白,参照附图,对本发明做进一步的详细说明。
本发明提出一种单进程DirectFB的虚拟多进程运行方法,包括如下步骤:(1)系统启动后首先启动后台业务管理进程,由该进程负责初始化DirectFB资源;(2)当需要运行新业务时,后台管理进程首先检测是否有前台业务运行,若有则通知前台业务释放DirectFB的使用转入后台运行,然后运行新业务;(3)新启动的业务向父进程(即后台管理进程)申请对DirectFB资源的使用,父进程返回事先申请好的DirectFB句柄。(4)子进程使用完毕后将DirectFB的使用权归还给后台管理进程。
进一步地,所述的业务子进程有三种状态:前台,后台及退出状态。前台状态是指业务子进程需要有UI显示,正在占用DirectFB资源;后台状态是指业务子进程释放对DirectFB资源的占用,不需要UI显示,但处于运行状态;退出状态是指业务子进程未运行。当后台管理进程需要运行业务子进程时,首先需要判断业务子进程的具体状态:
(1)若业务子进程处于前台状态则无需操作;
(2)若业务子进程处于后台状态,则通知其切换至前台状态;
(3)若业务子进程处于退出状态,则业务管理进程需要启动子进程,并在子进程中运行新业务。
进一步地,为了保证子进程能够使用父进程创建的DirectFB资源,要求子进程在创建时必须完全继承父进程的内存和环境变量等资源,如使用Linux操作系统的fork()函数就可以达到此目的。
进一步地,为了实现业务间的快速切换,当从业务A切换至业务B时,业务A只是释放DirectFB资源的使用,转至后台,并将其当前显示的UI以像素的方式保存至内存,当需要再次运行业务A时,只需恢复对DirectFB资源的使用,并将其保存的UI内容显示。
实施例
图1为在Linux操作系统平台上单进程DirectFB如何实现多进程运行方法的基本原理图,单进程DirectFB的虚拟多进程运行方法包括以下几个步骤:
101)系统启动后,创建后台业务管理进程,该进程一直处于运行状态,所述业务管理进程用以管理各个业务子进程,负责向个业务子进程分发消息,统计并维护各业务子进程的状态;
102)后台业务管理进程初始化DirectFB资源,为业务子进程的使用提供资源;
103)后台业务管理进程通过fork方式创建子进程;
104)在子进程中通过函数调用等方式运行新业务;
105)子进程向父进程申请DirectFB资源的使用,显示子进程运行的新业务对应的UI。
下面以DirectFB的基本接口代码示例说明后台业务管理进程对DirectFB资源的初始化过程及业务子进程如何使用父进程(即业务管理进程)申请的DirectFB资源。
后台业务管理进程初始化DirectFB过程示例如下表所示:
业务子进程使用DirectFB的过程示例如下表所示:
其中,get_gdfb_handler函数为子进程向父进程(即业务管理进程)申请DirectFB资源的函数,调用该函数可以使子进程获取父进程创建的DirectFB资源的句柄。
图2对本发明的方法中业务子进程间如何切换使用DirectFB资源做了详细说明,假设当前处于前台的业务为业务A,即业务A占用了DirectFB资源的使用,要切换至业务B开始运行。主要包括以下几个步骤:
201)后台管理进程首先通知当前正处于前台状态的业务A转入后台状态;
202)业务A收到后台管理进程的消息后,释放其占用的DirectFB资源,将其返回给后台管理进程,并将其当前显示的UI以像素的方式保存至内存;
203)后台管理进程等待业务A返回的DirectFB资源;
204)判断业务B的状态,若为退出状态,则转向205;若业务B为暂停状态(后台状态),则转向207;若为前台状态,则转向209;如图3所示;
205)后台管理进程启动子进程;
206)在子进程中通过调用业务B的接口,运行业务B;
207)通知业务子进程从后台状态切换至前台状态;
208)子进程向父进程申请DirectFB资源的使用,显示子业务对应的UI,对于处于后台状态的业务只需显示事先保存的内存镜像内容;
209)业务B处于前台运行状态。
上述所述的内容中,当各个创建业务子进程与业务管理进程间通信时数据包的封装格式如下表所示,该封装格式包含:消息号、消息长度、业务子进程状态和子进程PID信息。
消息号 | 消息长度 | 业务子进程状态 | 子进程PID |
以上所述仅为本发明的一个具体实施方式,并非用于限定本发明的保护范围,本领域的技术人员应当理解,在不脱离发明原理的前提下,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的保护范围中。
Claims (4)
1.一种单进程DirectFB的虚拟多进程运行方法,该方法用于在单进程DirectFB嵌入式平台上支持多业务时,每个业务都可以单独使用DirectFB,所述方法包含如下步骤:
步骤1,用于后台业务管理进程初始化DirectFB资源的步骤;
步骤2,用于各个子进程向所述后台业务管理进程申请获取DirectFB资源后才能使用DirectFB资源的步骤;
其中,所述后台业务管理进程在系统启动后创建并一直处于运行状态,所述后台业务管理进程负责管理子进程业务间切换,DirectFB资源的使用与分配;
所述步骤2进一步包含如下步骤:
步骤2-1,用于为新创建的子进程分配DirectFB资源的步骤;
步骤2-2,用于当运行中的两个子进程状态切换时再分配DirectFB资源的步骤;
所述步骤2-1为:当运行新业务时,后台业务管理进程创建子进程,并将创建的DirectFB句柄传递给子进程,完成子进程的图形显示;
其中,所述子进程在创建时完全继承后台业务管理进程的内存和环境变量资源。
2.根据权利要求1所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤1具体包含如下步骤:系统启动后创建后台业务管理进程,该进程用于初始化DirectFB资源并创建DirectFB句柄。
3.根据权利要求1所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤2-2为:
当从子进程A切换至子进程B时,子进程A释放DirectFB资源的使用,转至后台,并将其当前显示的UI以像素的方式保存至内存,当需要再次运行子进程A时,只需恢复对DirectFB资源的使用,并将其保存的UI内容显示。
4.根据权利要求1所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述后台业务管理进程还负责向各子进程分发消息,统计并维护各业务子进程的状态信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110262090.8A CN102981895B (zh) | 2011-09-06 | 2011-09-06 | 一种单进程DirectFB的虚拟多进程运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110262090.8A CN102981895B (zh) | 2011-09-06 | 2011-09-06 | 一种单进程DirectFB的虚拟多进程运行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102981895A CN102981895A (zh) | 2013-03-20 |
CN102981895B true CN102981895B (zh) | 2015-09-09 |
Family
ID=47855956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110262090.8A Expired - Fee Related CN102981895B (zh) | 2011-09-06 | 2011-09-06 | 一种单进程DirectFB的虚拟多进程运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102981895B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445628B (zh) * | 2019-09-03 | 2023-10-24 | 腾讯科技(深圳)有限公司 | 进程间资源共享方法、装置与电子设备 |
CN112379877A (zh) * | 2020-11-13 | 2021-02-19 | 武汉蓝星科技股份有限公司 | 一种嵌入式端多进程gui程序的编程系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630262A (zh) * | 2009-07-17 | 2010-01-20 | 北京数帅科技有限公司 | 基于Linux操作系统的子进程监控方法 |
CN101833465B (zh) * | 2010-04-23 | 2013-03-13 | 中国科学院声学研究所 | 一种支持应用程序动态加载运行的嵌入式系统 |
CN102073537A (zh) * | 2010-09-29 | 2011-05-25 | 深圳市蓝韵实业有限公司 | 一种高并发Web医学影像服务器的实现方法 |
-
2011
- 2011-09-06 CN CN201110262090.8A patent/CN102981895B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102981895A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104252389B (zh) | 应用程序运行方法、系统 | |
US20120258722A1 (en) | Resource Allocation Method and Device for Foreground Switch of J2ME Application | |
EP3076630B1 (en) | Method and device for sending data in vdi environment | |
US9830181B2 (en) | Method and system for gracefully shutdown virtual system | |
CN105677265A (zh) | 一种显示方法及终端 | |
CN102981895B (zh) | 一种单进程DirectFB的虚拟多进程运行方法 | |
CN102541558A (zh) | 在基于Android内核的电视系统中集成Android应用系统的方法 | |
CN101697128A (zh) | 版本升级方法和装置 | |
CN102982277A (zh) | 一种实现嵌入式系统软件补丁的方法和系统 | |
CN102929650A (zh) | 一种应用程序运行环境独立配置的方法、装置及移动设备 | |
JP2016510154A (ja) | テナント冗長性を提供する方法および装置 | |
CN101217401B (zh) | 一种基站控制器的升级、备份方法及装置 | |
CN105049936B (zh) | 一种开关机的方法及装置 | |
CN102937925A (zh) | 一种分布式通信设备软件升级方法及系统 | |
CN104503564A (zh) | 一种应用程序画面刷新的控制方法及装置 | |
CN112203132A (zh) | 一种安卓智能电视开机快速回连蓝牙遥控器的方法 | |
CN101296199A (zh) | 一种即时通讯工具调度任务的方法和即时通讯工具 | |
CN106462455A (zh) | 进程接替的方法和装置 | |
CN102508703B (zh) | 一种单任务下多界面的管理方法 | |
CN101090511B (zh) | 一种吊死资源的释放方法 | |
CN105446763A (zh) | 一种图片加载与显示的方法及系统 | |
CN105589738A (zh) | 一种智能分屏的并发处理方法及相应的智能终端 | |
CN110519390A (zh) | 一种低功耗蓝牙控制器链路层实现方法 | |
US9710052B2 (en) | Dynamic energy savings for digital signal processor modules using plural energy savings states | |
WO2012134475A1 (en) | Petrofitting a processor cluster |
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: 20150909 |