CN102981895A - 一种单进程DirectFB的虚拟多进程运行方法 - Google Patents

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

Info

Publication number
CN102981895A
CN102981895A CN2011102620908A CN201110262090A CN102981895A CN 102981895 A CN102981895 A CN 102981895A CN 2011102620908 A CN2011102620908 A CN 2011102620908A CN 201110262090 A CN201110262090 A CN 201110262090A CN 102981895 A CN102981895 A CN 102981895A
Authority
CN
China
Prior art keywords
directfb
subprocess
resource
direct
operation method
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.)
Granted
Application number
CN2011102620908A
Other languages
English (en)
Other versions
CN102981895B (zh
Inventor
朱小勇
孙鹏
姜艳
程钢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Acoustics CAS
Shanghai 3Ntv Network Technology Co Ltd
Original Assignee
Institute of Acoustics CAS
Shanghai 3Ntv Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Acoustics CAS, Shanghai 3Ntv Network Technology Co Ltd filed Critical Institute of Acoustics CAS
Priority to CN201110262090.8A priority Critical patent/CN102981895B/zh
Publication of CN102981895A publication Critical patent/CN102981895A/zh
Application granted granted Critical
Publication of CN102981895B publication Critical patent/CN102981895B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种单进程DirectFB的虚拟多进程运行方法,该方法用于在单进程DirectFB嵌入式平台上支持多业务时,每个业务都可以单独使用DirectFB,所述方法包含如下步骤:步骤1,用于后台业务管理进程初始化DirectFB资源的步骤;步骤2,用于各个子进程向所述后台业务管理进程申请获取DirectFB资源后才能使用DirectFB资源的步骤;其中,所述后台业务管理进程在系统启动后创建并一直处于运行状态,所述后台业务管理进程负责管理业务间切换,资源使用与分配,特别是DirectFB资源的使用,业务管理进程启动时初始化DirectFB的资源,通过父子进程共享进程空间的方式将DirectFB资源提供给子进程使用;业务子进程对应于每个业务。基于本发明提供的方法单进程DirectFB嵌入式平台上支持多业务进程时,每个业务子进程都可以单独使用DirectFB,且业务间切换流畅,无黑屏现象。

Description

一种单进程DirectFB的虚拟多进程运行方法
技术领域
本发明涉及嵌入式平台领域,特别涉及一种单进程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过程示例如下表所示:
Figure BDA0000089302630000041
业务子进程使用DirectFB的过程示例如下表所示:
Figure BDA0000089302630000042
其中,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 (6)

1.一种单进程DirectFB的虚拟多进程运行方法,该方法用于在单进程DirectFB嵌入式平台上支持多业务时,每个业务都可以单独使用DirectFB,所述方法包含如下步骤:
步骤1,用于后台业务管理进程初始化DirectFB资源的步骤;
步骤2,用于各个子进程向所述后台业务管理进程申请获取DirectFB资源后才能使用DirectFB资源的步骤;
其中,所述后台业务管理进程在系统启动后创建并一直处于运行状态,所述业务管理进程负责管理子进程业务间切换,DirectFB资源的使用与分配。
2.根据权利要求1所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤1具体包含如下步骤:系统启动后创建后台业务管理进程,该进程用于初始化DirectFB资源并创建DirectFB句柄。
3.根据权利要求1或2所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤2进一步包含如下步骤:
步骤2-1,用于为新创建的子进程分配DirectFB资源的步骤;
步骤2-2,用于当运行中的两个子进程状态切换时再分配DirectFB资源的步骤。
4.根据权利要求3所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤2-1为:当运行新业务时,后台业务管理进程创建子进程,并将创建的DirectFB句柄传递给子进程,完成子进程的图形显示;
其中,所述子进程在创建时完全继承后台业务管理进程的内存和环境变量资源。
5.根据权利要求3所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述步骤2-2为:
当从子进程A切换至子进程B时,子进程A释放DirectFB资源的使用,转至后台,并将其当前显示的UI以像素的方式保存至内存,当需要再次运行子进程A时,只需恢复对DirectFB资源的使用,并将其保存的UI内容显示。
6.根据权利要求1所述的单进程DirectFB的虚拟多进程运行方法,其特征在于,所述后台业务管理进程还负责向个子进程分发消息,统计并维护各业务子进程的状态信息。
CN201110262090.8A 2011-09-06 2011-09-06 一种单进程DirectFB的虚拟多进程运行方法 Expired - Fee Related CN102981895B (zh)

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 true CN102981895A (zh) 2013-03-20
CN102981895B 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112379877A (zh) * 2020-11-13 2021-02-19 武汉蓝星科技股份有限公司 一种嵌入式端多进程gui程序的编程系统
CN112445628A (zh) * 2019-09-03 2021-03-05 腾讯科技(深圳)有限公司 进程间资源共享方法、装置与电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101630262A (zh) * 2009-07-17 2010-01-20 北京数帅科技有限公司 基于Linux操作系统的子进程监控方法
CN101833465A (zh) * 2010-04-23 2010-09-15 中国科学院声学研究所 一种支持应用程序动态加载运行的嵌入式系统
CN102073537A (zh) * 2010-09-29 2011-05-25 深圳市蓝韵实业有限公司 一种高并发Web医学影像服务器的实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101630262A (zh) * 2009-07-17 2010-01-20 北京数帅科技有限公司 基于Linux操作系统的子进程监控方法
CN101833465A (zh) * 2010-04-23 2010-09-15 中国科学院声学研究所 一种支持应用程序动态加载运行的嵌入式系统
CN102073537A (zh) * 2010-09-29 2011-05-25 深圳市蓝韵实业有限公司 一种高并发Web医学影像服务器的实现方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445628A (zh) * 2019-09-03 2021-03-05 腾讯科技(深圳)有限公司 进程间资源共享方法、装置与电子设备
CN112445628B (zh) * 2019-09-03 2023-10-24 腾讯科技(深圳)有限公司 进程间资源共享方法、装置与电子设备
CN112379877A (zh) * 2020-11-13 2021-02-19 武汉蓝星科技股份有限公司 一种嵌入式端多进程gui程序的编程系统

Also Published As

Publication number Publication date
CN102981895B (zh) 2015-09-09

Similar Documents

Publication Publication Date Title
US11409547B2 (en) Method for rendering user interface and terminal
CN108984264B (zh) 虚拟gpu的实现方法、装置及系统
CN106055384B (zh) 多环境操作系统
US8868899B2 (en) System and method for switching between environments in a multi-environment operating system
WO2017128979A1 (zh) 一种资源管理方法及设备
CN104598294B (zh) 用于移动设备的高效安全的虚拟化方法及其设备
EP3413196A1 (en) Service container creation method and device
CN105677265A (zh) 一种显示方法及终端
CN105052074A (zh) 用于提供虚拟化直径网络架构以及用于将业务量路由至动态实例化的直径资源实例的方法、系统和计算机可读介质
CN103701807A (zh) 一种vdi环境下的数据发送方法和装置
CN103106117A (zh) 一种资源分配方法及电子设备
CN107766145B (zh) 双系统下的内存管理方法和装置
CN100561438C (zh) 一种虚拟机系统及其显卡使用方法
EP3304317B1 (en) Method and apparatus for managing memory
US20130205302A1 (en) Information processing terminal and resource release method
CN106462455B (zh) 进程接替的方法和装置
CN104503564A (zh) 一种应用程序画面刷新的控制方法及装置
CN101685404A (zh) 一种计算机及虚拟环境中设备动态切换方法
CN105049936B (zh) 一种开关机的方法及装置
CN101217401B (zh) 一种基站控制器的升级、备份方法及装置
CN101770390B (zh) 一种操作系统显示隔离的装置及方法
CN102981895A (zh) 一种单进程DirectFB的虚拟多进程运行方法
CN103257700A (zh) 一种Android系统的节能方法及装置
CN105468437A (zh) 任务窗口的处理方法及装置
CN114237381A (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150909

CF01 Termination of patent right due to non-payment of annual fee