CN112306702A - 数据共享方法、装置、电子设备及储存介质 - Google Patents

数据共享方法、装置、电子设备及储存介质 Download PDF

Info

Publication number
CN112306702A
CN112306702A CN201910684780.9A CN201910684780A CN112306702A CN 112306702 A CN112306702 A CN 112306702A CN 201910684780 A CN201910684780 A CN 201910684780A CN 112306702 A CN112306702 A CN 112306702A
Authority
CN
China
Prior art keywords
data resource
target data
kernel
sharing
mode
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
CN201910684780.9A
Other languages
English (en)
Other versions
CN112306702B (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.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp 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 Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201910684780.9A priority Critical patent/CN112306702B/zh
Publication of CN112306702A publication Critical patent/CN112306702A/zh
Application granted granted Critical
Publication of CN112306702B publication Critical patent/CN112306702B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种数据共享方法、装置、电子设备及存储介质,涉及通信技术领域。其中,该方法包括:第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从用户态进入内核态;目标数据资源存放于内核空间,且包含指针和/或地址引用;预设驱动被配置为运行在内核态;第一进程在内核态访问目标数据资源,以实现目标数据资源在不同进程间的共享。本发明实施例中,由于在共享过程中,目标数据资源在内核空间中的存储位置未发生过变化,因此,目标数据资源中的指针和/或地址引用在整个共享过程中都可适用于内核空间,如此,第一进程利用该指针和/或地址引用在内核空间中查找数据时,不会发生查找错误。

Description

数据共享方法、装置、电子设备及储存介质
技术领域
本发明涉及通信技术领域,特别是涉及一种数据共享方法、一种数据共享装置、一种电子设备以及一种存储介质。
背景技术
目前,各个进程之间可以通过共享内存的方式进行通信,其中,共享内存的方式是指相互通信的进程可以在用户空间拥有共享内存区域,当A进程要将用户空间中A进程的内存区域存储的数据资源共享给B进程时,A进程可以将该数据资源转存至共享内存区域,然后B进程可以从共享内存区域访问到该数据资源中的任意数据,从而A进程和B进程之间可以共享该数据资源。
然而,在实际应用中,进程之间只能通过共享内存的方式共享的数据资源仅为,不包含指针和/或地址引用的数据资源,这是由于在A进程对应的内存区域存放的数据资源中,指针和/或地址引用的使用范围仅适用于A进程对应的内存区域,而由于数据资源已被转存至共享内存区域,因此,当B进程通过该指针和/或地址引用在共享内存区域中查找数据时,则无法找到正确的数据。因此,对于包含指针和/或地址引用的复杂结构的数据资源,进程之间无法通过共享内存的方式实现共享。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据共享方法,以解决对于包含指针或地址引用的复杂结构的数据资源,进程之间无法通过共享内存的方式实现共享的问题。
相应的,本发明实施例还提供了一种数据共享装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种数据共享方法,包括:
第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态;所述目标数据资源存放于内核空间;所述目标数据资源包含指针和/或地址引用;所述预设驱动被配置为运行在所述内核态;
所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
可选地,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第一进程通过所述预设驱动执行第一设备打开操作;
所述第一进程生成所述第一设备打开操作对应的第一文件描述符;
所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态,包括:
第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,根据所述第一文件描述符,调用预设驱动的第一函数;所述第一函数用于从所述用户态进入所述内核态;
所述第一进程运行所述第一函数,以从所述用户态进入所述内核态。
可选地,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第二进程通过所述预设驱动从所述用户态进入所述内核态;
所述第二进程在所述内核态对初始数据资源进行处理,获得所述目标数据资源;所述初始数据资源存放于所述内核空间。
可选地,所述第二进程通过所述预设驱动从所述用户态进入所述内核态之前,还包括:
所述第二进程通过所述预设驱动执行第二设备打开操作;
所述第二进程生成所述第二设备打开操作对应的第二文件描述符;
所述第二进程通过所述预设驱动从所述用户态进入所述内核态,包括:
所述第二进程根据所述第二文件描述符,调用预设驱动的第二函数;所述第二函数用于从所述用户态进入所述内核态;
所述第二进程运行所述第二函数,以从所述用户态进入所述内核态。
可选地,所述初始数据资源为所述第二进程对应的包含指针和/或地址引用的图形界面资源;所述第二进程在所述内核态对初始数据资源进行处理,获得所述目标数据资源,包括:
所述第二进程在所述内核态通过预置的显卡驱动访问存放于显存中的所述初始数据资源;
所述第二进程对所述初始数据资源进行更新,获得目标数据资源。
可选地,所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享之后,还包括:
所述第一进程将所述目标数据资源,以及与所述第二进程对应同一显示器的至少一个第三进程对应的图形界面资源进行融合,获得融合图形界面资源;
所述第一进程将所述融合图形界面资源输出至所述显示器,以进行显示。
可选地,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第二进程对所述目标数据资源设置目标全局标志;
所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享,包括:
所述第一进程根据所述目标全局标志,在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
本发明实施例还公开了一种数据共享装置,包括:
第一进入模块,用于使第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态;所述目标数据资源存放于内核空间;所述目标数据资源包含指针和/或地址引用;所述预设驱动被配置为运行在所述内核态;
访问模块,用于使所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
可选地,所述装置还包括:
第一执行模块,用于使所述第一进程通过所述预设驱动执行第一设备打开操作;
第一生成模块,用于使所述第一进程生成所述第一设备打开操作对应的第一文件描述符;
所述第一进入模块包括:
第一调用子模块,用于使第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,根据所述第一文件描述符,调用预设驱动的第一函数;所述第一函数用于从所述用户态进入所述内核态;
第一运行子模块,用于使所述第一进程运行所述第一函数,以从所述用户态进入所述内核态。
可选地,所述装置还包括:
第二进入模块,用于使所述第二进程通过所述预设驱动从所述用户态进入所述内核态;
处理模块,用于使所述第二进程在所述内核态对初始数据资源进行处理,获得所述目标数据资源;所述初始数据资源存放于所述内核空间。
可选地,所述装置还包括:
第二执行模块,用于使所述第二进程通过所述预设驱动执行第二设备打开操作;
第二生成模块,用于使所述第二进程生成所述第二设备打开操作对应的第二文件描述符;
所述第二进入模块包括:
第二调用子模块,用于使所述第二进程根据所述第二文件描述符,调用预设驱动的第二函数;所述第二函数用于从所述用户态进入所述内核态;
第二运行子模块,用于使所述第二进程运行所述第二函数,以从所述用户态进入所述内核态。
可选地,所述初始数据资源为所述第二进程对应的包含指针和/或地址引用的图形界面资源;所述处理模块包括:
第一访问子模块,用于使所述第二进程在所述内核态通过预置的显卡驱动访问存放于显存中的所述初始数据资源;
更新子模块,用于使所述第二进程对所述初始数据资源进行更新,获得目标数据资源。
可选地,所述装置还包括:
融合模块,用于使所述第一进程将所述目标数据资源,以及与所述第二进程对应同一显示器的至少一个第三进程对应的图形界面资源进行融合,获得融合图形界面资源;
输出模块,用于使所述第一进程将所述融合图形界面资源输出至所述显示器,以进行显示。
可选地,所述装置还包括:
设置模块,用于使所述第二进程对所述目标数据资源设置目标全局标志;
所述访问模块包括:
第二访问子模块,用于使所述第一进程根据所述目标全局标志,在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
本发明实施例还公开了一种电子设备包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态;所述目标数据资源存放于内核空间;所述目标数据资源包含指针和/或地址引用;所述预设驱动被配置为运行在所述内核态;
所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本发明实施例中一个或多个所述的数据共享方法。
本发明实施例包括以下优点:
在本发明实施例中,第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,可以通过预设驱动从用户态进入内核态,其中,目标数据资源存放于内核空间,且包含指针和/或地址引用,预设驱动被配置为运行在内核态。进而第一进程可以在内核态访问目标数据资源,以实现目标数据资源在第一进程与第二进程之间的共享。在本发明实施例中,由于预设驱动可以运行在内核态,因此,运行在用户态的第一进程可以通过预设驱动进入内核态,进而第一进程可以在内核空间中访问到第二进程存放于内核空间的目标数据资源。由于在共享过程中,目标数据资源在内核空间中的存储位置未发生过变化,因此,在目标数据资源包含指针和/或地址引用的情况下,该指针和/或地址引用在整个共享过程中都可以适用于内核空间,如此,第一进程利用目标数据资源中的指针和/或地址引用在内核空间中查找数据时,不会发生查找错误。
附图说明
图1是本发明的一种数据共享方法实施例的步骤流程图;
图2是本发明的另一种数据共享方法实施例的步骤流程图;
图3是本发明的一种数据共享装置实施例的结构框图;
图4是根据一示例性实施例示出的一种用于共享数据的电子设备的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
在对本发明实施例进行详细说明之前,首先对目前的多进程之间共享数据资源的方式进行介绍。以图形界面资源为例,例如电子设备中可以安装图形界面开发软件Qt,Qt可以运行多个进程,其中可以包括Qt服务器进程和多个Qt客户端进程,每个Qt客户端进程可以对应一个显示界面,各个Qt客户端进程对应的显示界面可以在电子设备中的同一显示器,或不同显示器进行显示。Qt客户端进程需要将本进程对应的图形界面资源共享给Qt服务器进程,进而由Qt服务器进程将对应同一显示器的各个Qt客户端进程的图形界面资源统一管理,最终由显卡输出以进行显示。
目前,若想要通过共享方式,将Qt客户端进程对应的图形界面资源共享给Qt服务器进程,则需要保证图形界面资源为不包含指针和/或地址引用的简单结构的数据资源,否则会出现数据查找错误。为了使图形界面资源中不出现指针和/或地址引用,目前可以将Qt客户端进程的图形界面资源全部平坦存放于内存中,也即图形界面资源中的内存地址可以直接指向实际的内存块,而不是通过指针和/或地址引用间接指向实际的内存块,如此,图形界面资源中便不会包含指针和/或地址引用。
然而,上述方式只能适用于电子设备系统没有完整显卡驱动,而只利用显卡最基础的驱动,且图形界面资源为不包含指针和/或地址引用的简单结构数据资源的情况。但是,在实际应用中,若电子设备没有完整的显卡驱动,则显卡的性能不能被充分利用,从而将造成界面更新缓慢、无法显示多维图像等问题,难以满足使用需求。因此,为了保证显示器的显示实时性,以及多维图像的显示性能,电子设备中还是需要配置显卡驱动,以使显卡的性能能够达到充分的利用。
但是,显卡驱动封装的图形界面资源具有非常复杂的数据结构,其中包含各类指针数据以及显存的地址引用等,因此,Qt客户端进程和Qt服务器进程之间无法通过共享内存的方式,共享包含指针和/或地址引用的图形界面资源,否则就会出现数据查找错误的问题。
在实际应用中,不单是包含指针和/或地址引用的图形界面资源,其他包含指针和/或地址引用的数据资源也是如此,都无法通过共享内存的方式在不同进程间实现共享,即会出现数据查找错误的问题。
因此,针对上述情况,提出了本发明实施例中的一种数据共享方法、装置、电子设备以及存储介质,以解决目前对于包含指针和/或地址引用的复杂结构的数据资源,进程之间无法通过共享内存的方式实现共享的问题。
本发明实施例的核心构思之一在于,当运行在操作系统用户态的某进程需要控制电子设备中的某硬件设备执行某功能时,可以调用该硬件设备对应的驱动程序中的功能函数,从而可以通过运行驱动程序中的功能函数控制该硬件设备,以使该硬件设备执行相应的功能。在Linux、Windows等操作系统中,硬件设备以设备文件的形式存在,且设备文件会存放在操作系统的内核空间中,相应的,当运行在操作系统用户态的某进程调用驱动程序中的功能函数时,该进程可以通过驱动程序中的功能函数从操作系统的用户态进入内核态,从而对该驱动程序对应的存放于内核空间的设备文件执行该功能函数对应的处理操作,以实现对硬件设备的控制。因此,驱动程序具有联通操作系统的用户态和内核态的作用。
因此,在本发明实施例中,对于第二进程对应的存放于内核空间的目标数据资源,当第一进程需要共享时,第一进程可以通过一个预设的驱动程序从用户态进入内核态,从而第一进程便可以运行在内核态,进而第一进程可以在内核空间中访问到第二进程对应的目标数据资源,也即是能够使第一进程和第二进程在内核空间共享目标数据资源。在具体应用时,示例性的,第二进程可以为某图形界面软件中的其中一个客户端进程,第一进程可以为该图形界面软件中的服务器进程。
参照图1,示出了本发明的一种数据共享方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从用户态进入内核态;目标数据资源存放于内核空间;目标数据资源包含指针和/或地址引用;预设驱动被配置为运行在内核态。
在本发明实施例中,电子设备的操作系统可以为Linux操作系统、Windows操作系统等包含用户态和内核态的操作系统,相应的,该操作系统可以包括用户空间和内核空间。当一个进程在用户空间下执行时,可以把进程此时的运行状态称为用户态,当一个进程在内核空间下执行时,可以把进程此时的运行状态称为内核态。
安装在电子设备中的每个应用程序,均可以创建相应的一个或多个进程。对于任一应用程序创建的第一进程,以及任一应用程序创建的第二进程,第一进程在处理实际业务时,可能需要利用第二进程对应的存放于内核空间的目标数据资源,相应的,第二进程事先可以将需要共享给第一进程的目标数据资源存放在内核空间,进而第一进程在用户态接收到对目标数据资源的共享指令时,需要首先通过一定的方式从用户态进入内核态。
由于驱动程序具有联通操作系统的用户态和内核态的作用,因此,在本发明实施例中,可以在电子设备中事先注册一预设驱动,该预设驱动也即一驱动程序,因此,该预设驱动可以运行在操作系统的内核态。第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,响应于该共享指令,可以调用并运行该预设驱动中的功能函数,以从操作系统的用户态进入操作系统的内核态。
步骤102,第一进程在内核态访问目标数据资源,以实现目标数据资源在第一进程与第二进程之间的共享。
在本发明实施例中,第一进程通过预设驱动从操作系统的用户态进入操作系统的内核态后,第一进程便可以运行在内核态,进而第一进程可以在内核空间中访问到第二进程对应的目标数据资源,也即是第一进程和第二进程均能够在内核空间访问到目标数据资源,从而实现了目标数据资源在第一进程与第二进程之间的共享。
在本发明实施例中,第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,可以通过预设驱动从用户态进入内核态,其中,目标数据资源存放于内核空间,且包含指针和/或地址引用,预设驱动被配置为运行在内核态。进而第一进程可以在内核态访问目标数据资源,以实现目标数据资源在第一进程与第二进程之间的共享。在本发明实施例中,由于预设驱动可以运行在内核态,因此,运行在用户态的第一进程可以通过预设驱动进入内核态,进而第一进程可以在内核空间中访问到第二进程存放于内核空间的目标数据资源。由于在共享过程中,目标数据资源在内核空间中的存储位置未发生过变化,因此,在目标数据资源包含指针和/或地址引用的情况下,该指针和/或地址引用在整个共享过程中都可以适用于内核空间,如此,第一进程利用目标数据资源中的指针和/或地址引用在内核空间中查找数据时,不会发生查找错误。
参照图2,示出了本发明的另一种数据共享方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,第二进程通过预设驱动从用户态进入内核态;预设驱动被配置为运行在内核态。
在本发明实施例中,第一进程和第二进程可以由电子设备中安装的任一应用程序创建,且第一进程和第二进程所属的应用程序可以相同,也可以不同,本发明实施例对此不作具体限定。其中,第一进程可以访问第二进程对应的存放于内核空间中的目标数据资源,因此,在第一进程访问目标数据资源之前,第二进程可以在操作系统的内核空间直接生成目标数据资源,或者可以生成目标数据资源,并将目标数据资源存放在操作系统的内核空间。
在具体应用时,可以事先在操作系统中注册一预设驱动,该预设驱动可以基于操作系统中任一类型的驱动构架得到。在一种可选的实现方式中,该预设驱动可以基于操作系统的文件系统驱动构架开发得到,也即是该预设驱动的类型为文件系统驱动。由于文件系统驱动的开发相对于其他类型的驱动较为简单,因此,基于文件系统驱动构架开发预设驱动,可以降低预设驱动的开发难度,从而提高了预设驱动的开发效率。预设驱动可以包括驱动硬件设备所需的open(打开文件)、close(关闭文件)、write(写入数据)、read(读取数据)等函数,对此本发明实施例不作具体限定。
具体地,在步骤201之前,第二进程还可以执行下述步骤,包括:第二进程通过预设驱动执行第二设备打开操作;第二进程生成第二设备打开操作对应的第二文件描述符。相应的,步骤201具体可以通过下述方式实现,包括:第二进程根据第二文件描述符,调用预设驱动的第二函数;第二函数用于从用户态进入内核态;第二进程运行第二函数,以从用户态进入内核态。
其中,第二进程调用预设驱动中的第二函数,相当于第二进程要对预设驱动对应的设备文件进行操作,因此,第二进程在调用预设驱动中的函数之前,需要先打开预设驱动对应的设备文件,并生成相应的文件描述符,以使预设驱动中的函数可以根据该文件描述符,对相应的设备文件进行操作。
运行在操作系统用户态的第二进程可以调用并运行预设驱动的open函数,从而可以通过预设驱动执行第二设备打开操作,也即是相当于第二进程通过预设驱动的open函数打开了预设驱动对应的设备文件。但在具体应用时,本发明实施例需要通过预设驱动进入内核态,但并不需要真正控制某个实体硬件设备来执行功能,因此,在本发明实施例中,预设驱动对应的设备文件可以为空,也即是无需为预设驱动配置相应的实体硬件设备,因此,第二进程在运行open函数时,相当于打开了一个虚拟的设备文件,而无需驱动某个实体硬件设备,从而可以节约硬件资源。
在第二进程通过预设驱动执行第二设备打开操作之后,第二进程可以生成第二设备打开操作对应的第二文件描述符,也即是生成空设备文件对应的第二文件描述符,第二文件描述符可以用于指代第二进程中被打开的预设驱动对应的设备文件。进而第二进程可以将第二文件描述符作为参数传递给预设驱动的第二函数,以调用该第二函数。其中,第二函数可以为任一能够从用户态进入内核态的函数,例如第二函数可以为write函数,本发明实施例对此不作具体限定。然后第二进程可以运行该第二函数,以从操作系统的用户态进入操作系统的内核态。
步骤202,第二进程在内核态对初始数据资源进行处理,获得目标数据资源;目标数据资源存放于内核空间;目标数据资源包含指针和/或地址引用。
在本步骤中,第二进程可以响应于接收到的数据处理指令从而生成目标数据资源,该数据处理指令具体可以是对第二进程对应的存放于内核空间的初始数据资源的处理指令,初始数据资源可以包含指针和/或地址引用。在第二进程从操作系统的用户态进入操作系统的内核态之后,第二进程可以响应于数据处理指令,对内核空间存放的初始数据资源进行处理,从而可以获得目标数据资源。其中,对初始数据资源的处理操作与第二进程接收到的数据处理指令相对应,例如,当数据处理指令为数据更新指令时,对初始数据资源的处理操作即为数据更新操作,当数据处理指令为数据修改指令时,对初始数据资源的处理操作即为数据修改操作,本发明实施例对此不作具体限定。由于初始数据资源存放于内核空间,因此,对初始数据资源处理后获得的目标数据资源,也存放于内核空间。由于初始数据资源可以包含指针和/或地址引用,因此,对初始数据资源处理后获得的目标数据资源,也包含指针和/或地址引用。
在本发明实施例中,目标数据资源可以为包含指针和/或地址引用的任一类型的数据资源,例如应用于显卡驱动的图形界面资源等等。当然,在具体应用时,目标数据资源也可以为不包含指针和/或地址引用的数据资源,本发明实施例对此不作具体限定。
具体地,在一种可选的实现方式中,初始数据资源可以为第二进程对应的包含指针和/或地址引用的图形界面资源,相应的,步骤202具体可以通过以下方式实现,包括:第二进程在内核态通过预置的显卡驱动访问存放于显存中的初始数据资源;第二进程对初始数据资源进行更新,获得目标数据资源。
其中,为了提高显示的实时性以及实现大量多维图像的显示,预置的显卡驱动可以采用全功能硬件驱动,也即是该显卡驱动可以控制显卡的所有资源,而显卡驱动封装的数据资源通常具有非常复杂的数据结构,往往包含各类指针数据以及显存的地址引用等,因此,进程之间是无法通过共享内存的方式共享此类数据资源的,否则会出现数据查找错误。
用于显示的图形界面资源通常可以存放在显卡的显存中,而显卡驱动可以访问显存中的所有数据资源,因此,当初始数据资源为第二进程对应的包含指针和/或地址引用的图形界面资源时,第二进程可以在内核态通过显卡驱动访问存放于显存中的初始数据资源。
例如当用户对第二进程对应的界面进行了移动窗口、放大窗口等界面操作时,第二进程需要对显存中存放的图形界面资源,也即初始数据资源进行更新,以使显示器能够显示第二进程对应的移动后或放大后的窗口,第二进程首先可以在内核态调用显卡驱动,然后由显卡驱动在显存中查找到第二进程对应的图形界面资源,并进行访问,之后第二进程可以根据用户进行的界面操作,在显存中对该图形界面资源进行更新,从而可以获得更新后的图形界面资源,也即目标数据资源,且更新后的图形界面资源仍然存放在显存中,只是内容有所更新,也即是更新前和更新后的图形界面资源未进行存储位置的移动。
步骤203,第二进程对目标数据资源设置目标全局标志。
在本发明实施例中,第二进程可以对目标数据资源设置目标全局标志,该目标全局标志可以用于在内核空间的所有全局数据中唯一地标识出目标数据资源,从而当其他进程需要访问目标数据资源时,均可以通过目标全局标志在内核空间中查找到目标数据资源所在的内存地址,从而访问到目标数据资源。
步骤204,第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从用户态进入内核态。
在本步骤中,第一进程运行在用户态时,可以接收到对第二进程对应的目标数据资源的共享指令,第一进程在接收到共享指令时,响应于该共享指令,可以通过预设驱动从用户态进入内核态。其中,该共享指令的功能之一是可以用于触发第一进程进入内核态从而访问其他进程对应的数据资源,也即是在实际应用中,该共享指令可以是用于触发第一进程执行特定的代码段,而该代码段的功能中可以包含使第一进程进入内核态访问其他进程的数据资源的功能,当然,还可以包含其他的功能,例如该共享指令具体可以是触发服务器进程结合各客户端进程的图形界面资源显示图像的指令,本发明实施例对于共享指令对应的功能不作具体限定。
具体地,在步骤204之前,第一进程还可以执行下述步骤,包括:第一进程通过预设驱动执行第一设备打开操作;第一进程生成第一设备打开操作对应的第一文件描述符。相应的,步骤204具体可以通过下述方式实现,包括:第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,根据第一文件描述符,调用预设驱动的第一函数;第一函数用于从用户态进入内核态;第一进程运行第一函数,以从用户态进入内核态。
其中,第一进程调用预设驱动中的函数,相当于第一进程要对预设驱动对应的设备文件进行操作,因此,第一进程在调用预设驱动中的函数之前,需要先打开预设驱动对应的设备文件,并生成相应的文件描述符,以使预设驱动中的函数可以根据该文件描述符,对相应的设备文件进行操作。
运行在操作系统用户态的第一进程可以调用并运行预设驱动的open函数,从而可以通过预设驱动执行第一设备打开操作,也即是相当于第一进程通过预设驱动的open函数打开了预设驱动对应的设备文件。但在具体应用时,本发明实施例需要通过预设驱动进入内核态,但并不需要真正控制某个实体硬件设备来执行功能,因此,在本发明实施例中,预设驱动对应的设备文件可以为空,也即是无需为预设驱动配置相应的实体硬件设备,因此,第一进程在运行open函数时,相当于打开了一个虚拟的设备文件,而无需驱动某个实体硬件设备,从而可以节约硬件资源。需要说明的是,在具体应用时,第一设备打开操作和第二设备打开操作可以是用于打开同一个空设备文件的操作,当然也可以是用于打开不同的空设备文件的操作,本发明实施例对此不作具体限定。
在第一进程通过预设驱动执行第一设备打开操作之后,第一进程可以生成第一设备打开操作对应的第一文件描述符,也即是生成空设备文件对应的第一文件描述符,第一文件描述符可以用于指代第一进程中被打开的预设驱动对应的设备文件。进而第一进程可以将第一文件描述符作为参数传递给预设驱动的第一函数,以调用该第一函数。其中,第一函数可以为任一能够从用户态进入内核态的函数,例如第一函数可以为read函数,本发明实施例对此不作具体限定。然后第一进程可以运行该第一函数,以从操作系统的用户态进入操作系统的内核态。
需要说明的是,由于不同进程各自维护自己的文件描述符表,因此,不同进程即使打开同一文件,该文件在不同进程中的文件描述符也不一定相同,因此,第二进程打开预设驱动对应的设备文件所生成的第二文件描述符,与第一进程打开预设驱动对应的设备文件所生成的第一文件描述符可以不同。
步骤205,第一进程根据目标全局标志,在内核态访问目标数据资源,以实现目标数据资源在第一进程与第二进程之间的共享。
在本发明实施例中,第一进程通过预设驱动从用户态进入内核态之后,可以通过第二进程设置的目标全局标志,在内核空间中查找到目标数据资源所在的内存地址,从而在内核态访问到目标数据资源,也即实现了目标数据资源在第一进程与第二进程之间的共享。由于在共享过程中,目标数据资源在内核空间中的内存地址没有发生过变化,因此,在目标数据资源包含指针和/或地址引用的情况下,该指针和/或地址引用在共享过程中都是适用于内核空间的,因此,在根据目标数据资源中的指针和/或地址引用在目标数据资源中查找相应的数据时,不会发生数据查找错误,也即是能够在不同进程之间共享包含指针和/或地址引用的复杂结构数据,如此,扩充了多进程间进行资源共享的资源类型。
另外,在实际应用中,对于不包含指针和/或地址引用的简单结构的数据资源,除共享内存的共享方式之外,也可以采用本发明实施例提供的数据共享方法,在不同进程之间进行共享,从而可以提高多进程间资源共享的灵活性。
进一步的,在初始数据资源为第二进程对应的图形界面资源,目标数据资源为第二进程对应的更新后的图形界面资源时,步骤205之后还可以包括下述步骤:第一进程将目标数据资源,以及与第二进程对应同一显示器的至少一个第三进程对应的图形界面资源进行融合,获得融合图形界面资源;第一进程将融合图形界面资源输出至显示器,以进行显示。
其中,第一进程可以为图形界面软件中的服务器进程,第二进程可以为该图形界面软件中的其中一个客户端进程,每个客户端进程均可以共享本进程的图形界面资源给服务器进程,由服务器进程将所有客户端进程的图形界面资源统一管理,最终由显卡进行输出,实现显示。相应的,第二进程在内核态将本进程的图形界面资源进程更新后,第一进程可以在内核态访问到第二进程更新后的图形界面资源,进而第一进程可以将第二进程更新后的图形界面资源,以及与第二进程对应同一显示器的一个或多个第三进程对应的图形界面资源进行融合,从而获得融合图形界面资源,之后第一进程可以将融合图形界面资源输出至显示器的显卡,以显示图形界面资源对应的界面图像。
需要说明的是,当电子设备包括至少两个显示器时,服务器进程可以将对应同一显示器的各个客户端进程的图形界面资源进程融合,以通过对应的显示器显示融合后的图形界面资源所对应的界面图像。
在本发明实施例中,第二进程可以通过预设驱动从用户态进入内核态,并在内核态对初始数据资源进行处理,获得目标数据资源,然后第二进程可以对目标数据资源设置目标全局标志。之后,第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,可以通过预设驱动从用户态进入内核态,进而第一进程根据目标全局标志,在内核态访问目标数据资源,以实现目标数据资源在第一进程与第二进程之间的共享。其中,预设驱动被配置为运行在内核态;目标数据资源存放于内核空间,且包含指针和/或地址引用。在本发明实施例中,由于预设驱动可以运行在内核态,因此,运行在用户态的第二进程可以通过预设驱动进入内核态,进而在内核空间处理得到目标数据资源,并对目标数据资源设置目标全局标志。之后,运行在用户态的第一进程也可以通过预设驱动进入内核态,进而第一进程可以根据目标全局标志,在内核空间中访问到第二进程存放于内核空间的目标数据资源。由于在共享过程中,目标数据资源在内核空间中的存储位置未发生过变化,因此,在目标数据资源包含指针和/或地址引用的情况下,该指针和/或地址引用在整个共享过程中都可以适用于内核空间,如此,第一进程利用目标数据资源中的指针和/或地址引用在内核空间中查找数据时,不会发生查找错误。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明的一种数据共享装置实施例的结构框图,数据共享装置300具体可以包括如下模块:
第一进入模块301,用于使第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态;所述目标数据资源存放于内核空间;所述目标数据资源包含指针和/或地址引用;所述预设驱动被配置为运行在所述内核态;
访问模块302,用于使所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
可选地,所述装置300还包括:
第一执行模块,用于使所述第一进程通过所述预设驱动执行第一设备打开操作;
第一生成模块,用于使所述第一进程生成所述第一设备打开操作对应的第一文件描述符;
所述第一进入模块301包括:
第一调用子模块,用于使第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,根据所述第一文件描述符,调用预设驱动的第一函数;所述第一函数用于从所述用户态进入所述内核态;
第一运行子模块,用于使所述第一进程运行所述第一函数,以从所述用户态进入所述内核态。
可选地,所述装置300还包括:
第二进入模块,用于使所述第二进程通过所述预设驱动从所述用户态进入所述内核态;
处理模块,用于使所述第二进程在所述内核态对初始数据资源进行处理,获得所述目标数据资源;所述初始数据资源存放于所述内核空间。
可选地,所述装置300还包括:
第二执行模块,用于使所述第二进程通过所述预设驱动执行第二设备打开操作;
第二生成模块,用于使所述第二进程生成所述第二设备打开操作对应的第二文件描述符;
所述第二进入模块包括:
第二调用子模块,用于使所述第二进程根据所述第二文件描述符,调用预设驱动的第二函数;所述第二函数用于从所述用户态进入所述内核态;
第二运行子模块,用于使所述第二进程运行所述第二函数,以从所述用户态进入所述内核态。
可选地,所述初始数据资源为所述第二进程对应的包含指针和/或地址引用的图形界面资源;所述处理模块包括:
第一访问子模块,用于使所述第二进程在所述内核态通过预置的显卡驱动访问存放于显存中的所述初始数据资源;
更新子模块,用于使所述第二进程对所述初始数据资源进行更新,获得目标数据资源。
可选地,所述装置300还包括:
融合模块,用于使所述第一进程将所述目标数据资源,以及与所述第二进程对应同一显示器的至少一个第三进程对应的图形界面资源进行融合,获得融合图形界面资源;
输出模块,用于使所述第一进程将所述融合图形界面资源输出至所述显示器,以进行显示。
可选地,所述装置300还包括:
设置模块,用于使所述第二进程对所述目标数据资源设置目标全局标志;
所述访问模块302包括:
第二访问子模块,用于使所述第一进程根据所述目标全局标志,在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
在本发明实施例中,首先可以通过第一进入模块,使第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从用户态进入内核态,其中,目标数据资源存放于内核空间,且包含指针和/或地址引用,预设驱动被配置为运行在内核态。进而可以通过访问模块,使第一进程可以在内核态访问目标数据资源,以实现目标数据资源在第一进程与第二进程之间的共享。在本发明实施例中,由于预设驱动可以运行在内核态,因此,运行在用户态的第一进程可以通过预设驱动进入内核态,进而第一进程可以在内核空间中访问到第二进程存放于内核空间的目标数据资源。由于在共享过程中,目标数据资源在内核空间中的存储位置未发生过变化,因此,在目标数据资源包含指针和/或地址引用的情况下,该指针和/或地址引用在整个共享过程中都可以适用于内核空间,如此,第一进程利用目标数据资源中的指针和/或地址引用在内核空间中查找数据时,不会发生查找错误。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
图4是根据一示例性实施例示出的一种用于共享数据的电子设备400的结构框图。例如,电子设备400可以是计算机、服务器等。
参照图4,电子设备400可以包括以下一个或多个组件:处理组件402,存储器404,电源组件406,多媒体组件408,音频组件410,输入/输出(I/O)的接口412,传感器组件414,以及通信组件416。
处理组件402通常控制电子设备400的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件402可以包括一个或多个处理器420来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件402可以包括一个或多个模块,便于处理组件402和其他组件之间的交互。例如,处理部件402可以包括多媒体模块,以方便多媒体组件408和处理组件402之间的交互。
存储器404被配置为存储各种类型的数据以支持在设备400的操作。这些数据的示例包括用于在电子设备400上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器404可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件406为电子设备400的各种组件提供电力。电源组件406可以包括电源管理系统,一个或多个电源,及其他与为电子设备400生成、管理和分配电力相关联的组件。
多媒体组件408包括在所述电子设备400和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件408包括一个前置摄像头和/或后置摄像头。当电子设备400处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件410被配置为输出和/或输入音频信号。例如,音频组件410包括一个麦克风(MIC),当电子设备400处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件416发送。在一些实施例中,音频组件410还包括一个扬声器,用于输出音频信号。
I/O接口412为处理组件402和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件414包括一个或多个传感器,用于为电子设备400提供各个方面的状态评估。例如,传感器组件414可以检测到设备400的打开/关闭状态,组件的相对定位,例如所述组件为电子设备400的显示器和小键盘,传感器组件414还可以检测电子设备400或电子设备400一个组件的位置改变,用户与电子设备400接触的存在或不存在,电子设备400方位或加速/减速和电子设备400的温度变化。传感器组件414可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件414还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件414还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件416被配置为便于电子设备400和其他设备之间有线或无线方式的通信。电子设备400可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件416经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件416还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器404,上述指令可由电子设备400的处理器420执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行一种数据共享的方法,所述方法包括:
第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态;所述目标数据资源存放于内核空间;所述目标数据资源包含指针和/或地址引用;所述预设驱动被配置为运行在所述内核态;
所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
可选地,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第一进程通过所述预设驱动执行第一设备打开操作;
所述第一进程生成所述第一设备打开操作对应的第一文件描述符;
所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态,包括:
第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,根据所述第一文件描述符,调用预设驱动的第一函数;所述第一函数用于从所述用户态进入所述内核态;
所述第一进程运行所述第一函数,以从所述用户态进入所述内核态。
可选地,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第二进程通过所述预设驱动从所述用户态进入所述内核态;
所述第二进程在所述内核态对初始数据资源进行处理,获得所述目标数据资源;所述初始数据资源存放于所述内核空间。
可选地,所述第二进程通过所述预设驱动从所述用户态进入所述内核态之前,还包括:
所述第二进程通过所述预设驱动执行第二设备打开操作;
所述第二进程生成所述第二设备打开操作对应的第二文件描述符;
所述第二进程通过所述预设驱动从所述用户态进入所述内核态,包括:
所述第二进程根据所述第二文件描述符,调用预设驱动的第二函数;所述第二函数用于从所述用户态进入所述内核态;
所述第二进程运行所述第二函数,以从所述用户态进入所述内核态。
可选地,所述初始数据资源为所述第二进程对应的包含指针和/或地址引用的图形界面资源;所述第二进程在所述内核态对初始数据资源进行处理,获得所述目标数据资源,包括:
所述第二进程在所述内核态通过预置的显卡驱动访问存放于显存中的所述初始数据资源;
所述第二进程对所述初始数据资源进行更新,获得目标数据资源。
可选地,所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享之后,还包括:
所述第一进程将所述目标数据资源,以及与所述第二进程对应同一显示器的至少一个第三进程对应的图形界面资源进行融合,获得融合图形界面资源;
所述第一进程将所述融合图形界面资源输出至所述显示器,以进行显示。
可选地,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第二进程对所述目标数据资源设置目标全局标志;
所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享,包括:
所述第一进程根据所述目标全局标志,在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种数据共享方法和装置、一种电子设备以及一种储存介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种数据共享方法,其特征在于,包括:
第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态;所述目标数据资源存放于内核空间;所述目标数据资源包含指针和/或地址引用;所述预设驱动被配置为运行在所述内核态;
所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
2.根据权利要求1所述的方法,其特征在于,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第一进程通过所述预设驱动执行第一设备打开操作;
所述第一进程生成所述第一设备打开操作对应的第一文件描述符;
所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态,包括:
第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,根据所述第一文件描述符,调用预设驱动的第一函数;所述第一函数用于从所述用户态进入所述内核态;
所述第一进程运行所述第一函数,以从所述用户态进入所述内核态。
3.根据权利要求1所述的方法,其特征在于,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第二进程通过所述预设驱动从所述用户态进入所述内核态;
所述第二进程在所述内核态对初始数据资源进行处理,获得所述目标数据资源;所述初始数据资源存放于所述内核空间。
4.根据权利要求3所述的方法,其特征在于,所述第二进程通过所述预设驱动从所述用户态进入所述内核态之前,还包括:
所述第二进程通过所述预设驱动执行第二设备打开操作;
所述第二进程生成所述第二设备打开操作对应的第二文件描述符;
所述第二进程通过所述预设驱动从所述用户态进入所述内核态,包括:
所述第二进程根据所述第二文件描述符,调用预设驱动的第二函数;所述第二函数用于从所述用户态进入所述内核态;
所述第二进程运行所述第二函数,以从所述用户态进入所述内核态。
5.根据权利要求3所述的方法,其特征在于,所述初始数据资源为所述第二进程对应的包含指针和/或地址引用的图形界面资源;所述第二进程在所述内核态对初始数据资源进行处理,获得所述目标数据资源,包括:
所述第二进程在所述内核态通过预置的显卡驱动访问存放于显存中的所述初始数据资源;
所述第二进程对所述初始数据资源进行更新,获得目标数据资源。
6.根据权利要求5所述的方法,其特征在于,所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享之后,还包括:
所述第一进程将所述目标数据资源,以及与所述第二进程对应同一显示器的至少一个第三进程对应的图形界面资源进行融合,获得融合图形界面资源;
所述第一进程将所述融合图形界面资源输出至所述显示器,以进行显示。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态之前,还包括:
所述第二进程对所述目标数据资源设置目标全局标志;
所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享,包括:
所述第一进程根据所述目标全局标志,在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
8.一种数据共享装置,其特征在于,包括:
第一进入模块,用于使第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态;所述目标数据资源存放于内核空间;所述目标数据资源包含指针和/或地址引用;所述预设驱动被配置为运行在所述内核态;
访问模块,用于使所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
9.一种电子设备,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
第一进程在用户态接收到对第二进程对应的目标数据资源的共享指令时,通过预设驱动从所述用户态进入内核态;所述目标数据资源存放于内核空间;所述目标数据资源包含指针和/或地址引用;所述预设驱动被配置为运行在所述内核态;
所述第一进程在所述内核态访问所述目标数据资源,以实现所述目标数据资源在所述第一进程与所述第二进程之间的共享。
10.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-7中一个或多个所述的数据共享方法。
CN201910684780.9A 2019-07-26 2019-07-26 数据共享方法、装置、电子设备及储存介质 Active CN112306702B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910684780.9A CN112306702B (zh) 2019-07-26 2019-07-26 数据共享方法、装置、电子设备及储存介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910684780.9A CN112306702B (zh) 2019-07-26 2019-07-26 数据共享方法、装置、电子设备及储存介质

Publications (2)

Publication Number Publication Date
CN112306702A true CN112306702A (zh) 2021-02-02
CN112306702B CN112306702B (zh) 2023-07-14

Family

ID=74329721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910684780.9A Active CN112306702B (zh) 2019-07-26 2019-07-26 数据共享方法、装置、电子设备及储存介质

Country Status (1)

Country Link
CN (1) CN112306702B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112802232A (zh) * 2021-03-22 2021-05-14 智道网联科技(北京)有限公司 视频流数据的传输方法及其相关装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090100213A1 (en) * 2007-10-10 2009-04-16 Apple Inc. Systems and Methods for Managing Memory Core Surface
CN103034544A (zh) * 2012-12-04 2013-04-10 杭州迪普科技有限公司 一种用户态与内核态共享内存的管理方法和装置
CN105868028A (zh) * 2015-01-23 2016-08-17 华为技术有限公司 一种进程间共享数据的方法、装置及终端
CN106874128A (zh) * 2017-01-22 2017-06-20 广州华多网络科技有限公司 数据传输方法及装置
CN108062253A (zh) * 2017-12-11 2018-05-22 北京奇虎科技有限公司 一种内核态与用户态的通信方法、装置及终端
CN109753365A (zh) * 2017-11-08 2019-05-14 蓝盾信息安全技术股份有限公司 一种Windows内核大数据高速通信技术

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090100213A1 (en) * 2007-10-10 2009-04-16 Apple Inc. Systems and Methods for Managing Memory Core Surface
CN103034544A (zh) * 2012-12-04 2013-04-10 杭州迪普科技有限公司 一种用户态与内核态共享内存的管理方法和装置
CN105868028A (zh) * 2015-01-23 2016-08-17 华为技术有限公司 一种进程间共享数据的方法、装置及终端
CN106874128A (zh) * 2017-01-22 2017-06-20 广州华多网络科技有限公司 数据传输方法及装置
CN109753365A (zh) * 2017-11-08 2019-05-14 蓝盾信息安全技术股份有限公司 一种Windows内核大数据高速通信技术
CN108062253A (zh) * 2017-12-11 2018-05-22 北京奇虎科技有限公司 一种内核态与用户态的通信方法、装置及终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈浩: "Linux下用户态和内核态内存共享的实现", 电脑编程技巧与维护 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112802232A (zh) * 2021-03-22 2021-05-14 智道网联科技(北京)有限公司 视频流数据的传输方法及其相关装置
CN112802232B (zh) * 2021-03-22 2021-07-16 智道网联科技(北京)有限公司 视频流数据的传输方法及其相关装置

Also Published As

Publication number Publication date
CN112306702B (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
EP3416045A1 (en) Method for controlling a display, device, and storage medium
EP3333690A2 (en) Object starting method and device
CN110231901B (zh) 应用界面显示方法及装置
US10489169B2 (en) Method and device for performing subset of functions of application
EP3660646A1 (en) Method for displaying multi-task management interface, device, terminal and storage medium
CN109710259B (zh) 一种数据处理方法、装置及存储介质
CN106547547B (zh) 数据采集方法及装置
US20160314164A1 (en) Methods and devices for sharing cloud-based business card
US20170316011A1 (en) Method and apparatus for searching resource
US20170308397A1 (en) Method and apparatus for managing task of instant messaging application
CN107463372B (zh) 一种数据驱动的页面更新方法和装置
CN111427449A (zh) 界面显示方法、装置及存储介质
US11397596B2 (en) Method and device for controlling pop-up window, electronic device, and storage medium
CN107402756B (zh) 用于绘制页面的方法、装置及终端
EP3416070A1 (en) Page display method and device and storage medium
CN105589575A (zh) 输入法调用方法及装置
CN112306702B (zh) 数据共享方法、装置、电子设备及储存介质
CN111382161A (zh) 状态数据处理方法、装置、电子设备及存储介质
CN107368562B (zh) 页面的显示方法、装置及终端
EP3185515A1 (en) Method and device for inputting information
CN110457084B (zh) 一种加载方法及装置
CN110417987B (zh) 一种操作响应方法、装置、设备和可读存储介质
CN108427568B (zh) 用户界面的更新方法及装置
CN107423060B (zh) 动画效果的呈现方法、装置及终端
CN108563487B (zh) 用户界面的更新方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant