CN115309568A - 一种实现多进程文件共享的方法、装置、设备及介质 - Google Patents

一种实现多进程文件共享的方法、装置、设备及介质 Download PDF

Info

Publication number
CN115309568A
CN115309568A CN202210956168.4A CN202210956168A CN115309568A CN 115309568 A CN115309568 A CN 115309568A CN 202210956168 A CN202210956168 A CN 202210956168A CN 115309568 A CN115309568 A CN 115309568A
Authority
CN
China
Prior art keywords
file
target
target file
processes
address information
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.)
Pending
Application number
CN202210956168.4A
Other languages
English (en)
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.)
Dalian Jiuzheng Technology Co ltd
Original Assignee
Dalian Jiuzheng 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 Dalian Jiuzheng Technology Co ltd filed Critical Dalian Jiuzheng Technology Co ltd
Priority to CN202210956168.4A priority Critical patent/CN115309568A/zh
Publication of CN115309568A publication Critical patent/CN115309568A/zh
Pending legal-status Critical Current

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
    • 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

Landscapes

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

Abstract

本发明公开了一种实现多进程文件共享的方法、装置、设备及介质。该方法包括:获取目标进程在磁盘空间中所创建的目标文件,并获取所述目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息;其中,所述目标进程为至少两个进程中首个启动的进程;根据所述文件句柄和所述内存地址信息,调用内核操作系统接口,基于文件映射方式,实现所述至少两个进程对所述目标文件的共享。本发明提供的方案,通过文件映射的方式,可以快速实现多进程之间对同一文件的共享,避免进程之间通信交互造成的性能损耗。

Description

一种实现多进程文件共享的方法、装置、设备及介质
技术领域
本发明涉及计算机领域,尤其涉及一种实现多进程文件共享的方法、装置、设备及介质。
背景技术
多个进程与操作系统,如外核操作系统和内核操作系统,进行交互时,为了保证系统的正常运行,往往需要将磁盘中的文件的数据,或进程运行时产生的数据进行同步。
如何更高效的实现多进程之间的文件共享,使得多个进程之间文件或数据实现同步,提高操作系统的工作效率,是目前亟待解决的问题。
发明内容
本发明提供了一种实现多进程文件共享的方法、装置、设备及介质,可以快速实现多进程之间对同一文件的共享,避免进程之间通信交互造成的性能损耗。
根据本发明的一方面,提供了一种实现多进程文件共享的方法,包括:
获取目标进程在磁盘空间中所创建的目标文件,并获取所述目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息;其中,所述目标进程为至少两个进程中首个启动的进程;
根据所述文件句柄和所述内存地址信息,调用内核操作系统接口,基于文件映射方式,实现所述至少两个进程对所述目标文件的共享
根据本发明的另一方面,提供了一种实现多进程文件共享的装置,包括:
获取模块,用于获取目标进程在磁盘空间中所创建的目标文件,并获取所述目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息;其中,所述目标进程为至少两个进程中首个启动的进程;
共享模块,用于根据所述文件句柄和所述内存地址信息,调用内核操作系统接口,基于文件映射方式,实现所述至少两个进程对所述目标文件的共享
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的实现多进程文件共享的方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的实现多进程文件共享的方法。
本发明实施例的技术方案,获取至少两个进程中首个启动的目标进程在磁盘空间中所创建的目标文件,并获取目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息,根据文件句柄和内存地址信息,调用内核操作系统接口,基于文件映射方式,实现至少两个进程对目标文件的共享。通过文件映射的方式,使得各进程在各自内存空间的相同位置处存储目标文件,可以快速实现多进程之间对同一文件的共享,避免进程之间通信交互造成的性能损耗。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种实现多进程文件共享的方法流程图;
图2是本发明实施例二提供的一种实现多进程文件共享的方法流程图;
图3是本发明实施例三提供的一种实现多进程文件共享的方法流程图;
图4是本发明实施例四提供的实现多进程文件共享的装置的结构图;
图5是本发明实施例五提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在相关技术中,应用程序读取磁盘上的文件的过程为:应用程序中的各进程通过系统接口请求内核,内核将请求插入请求队列,然后让应用程序休眠,内核调度请求队列,向硬盘发出读数据请求,返回数据后,唤醒应用程序,应用程序返回用户层。本发明实施例在应用程序的各进程与内核操作系统之间,引入了运行在用户态下的外核操作系统,即libos操作系统(library operating system,网络库操作系统),libos的本质是一个函数库,内核操作系统管理的各进程预先会分别加载一份libos,在各进程发出对磁盘文件的处理请求时,libos操作系统会代理内核操作系统进行整合,并向内核操作系统发出文件更新的请求,由内核操作系统对磁盘空间存储的相应文件进行操作,例如,将新的数据写入磁盘空间存储的文件中。
libos有诸多优点,但也有些缺点,其中最受限制的就是单进程运行。进程加载libos后,本进程的所有系统操作都会经过它,所以对于本进程的状态,可以做到完全记录和控制,但对其他进程就无能为力,这就形成libos只能对单一进程进行管理。为了解决上述问题,在相关技术中,使得每个需要受管理的进程,都加载一份libos,然后各进程之间通过libos进行同步数据,如打开的文件,线程和进程数据等,这样每个受管理的进程共享统一状态,形成多进程管理方案,上述方案可以解决单进程的问题,但会带来进程间通信的性能损耗和代码上的复杂性。
本发明考虑将libos数据区映射到每个受管理的进程地址空间固定位置,在内存操作时执行同步,从而实现各进程libos间数据共享,且代码干净,无进程间通信损耗。本发明实施例所提供的实现多进程文件共享的方法,基于内存映射技术,具体的,内存映射(Memory-mapped I/O)是将磁盘文件的数据映射到内存,用户通过修改内存从而修改磁盘文件。对内存直接操作,因此效率比较高。每个进程都具有自身的虚拟地址空间,通过使得各进程在其虚拟地址空间的相同位置,存储相同的文件,可是实现在任一进程对该文件执行操作时,该进程无需与其他进程通信,即实现各进程之间的文件同步共享。具体的实现方法在本发明下述实施例进行详细介绍。
实施例一
图1是本发明实施例一提供的一种实现多进程文件共享的方法流程图,本实施例适用于使得至少两个进程的文件实现同步共享的情况,该方法可以由实现多进程文件共享的装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于具有实现多进程文件共享功能的电子设备中。如图1所示,该方法包括:
S101、获取目标进程在磁盘空间中所创建的目标文件,并获取目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息。
其中,目标进程为操作系统管理的进程中目标创建临时文件的进程。目标文件是指目标进程创建的临时文件。目标文件存储在磁盘空间。文件句柄是指可以唯一标识目标文件的顺序号。内存空间是指进程的内存空间,每个进程有其自身的内存空间。内存地址信息是指进程在自身内存中存储目标文件的地址信息。具体可以从进程的地址空间确定进程存储目标文件的内存地址信息。示例性的,目标进程可以从地址空间确定内存地址信息为0x7fffffff。
可选的,本发明实施例所述的进程可以是指应用进程,例如浏览器进程、播放器进程等运行在用户态下的进程。
可选的,目标进程可以为至少两个进程中首个启动的进程,也可以根据预设的筛选规则,如根据不同进程实现的功能,预先确定操作系统管理的进程中的目标进程。
可选的,内核操作系统可以在目标进程启动并创建一个临时文件(即目标文件)后,通过系统调用,打开这个目标文件,即获取目标进程在磁盘空间中所创建的目标文件。
可选的,内核操作系统可以在目标进程启动并创建一个临时文件(即目标文件)后,获取目标文件的文件句柄,具体的,若检测到至少两个进程中目标进程对内核操作系统函数的调用,则获取目标进程发送的目标文件的名称和目标文件在目标进程内存空间中的内存地址信息;根据目标文件的名称和内存地址信息,获取目标文件的文件句柄。
可选的,内核操作系统可以调用相关接口,直接获取目标进程地址空间中存储目标文件对应的内存地址信息,即获取目标文件在目标进程内存空间中的内存地址信息。
S102、根据文件句柄和内存地址信息,调用内核操作系统接口,基于文件映射方式,实现至少两个进程对目标文件的共享。
其中,内核操作系统是指运行在内核态的操作系统,例如,内核操作系统可以为Linux操作系统或windows操作系统。文件映射方式是指操作系统一次性把目标文件映射到内存中的方式。文件映射方式可以是linux文件映射。文件映射方式本质是将磁盘文件的数据映射到内存。
可选的,内核操作系统获取目标文件、文件句柄和内存地址信息之后,可以根据文件句柄和内存地址信息,调用内核操作系统接口,将目标文件通过文件映射方式,映射到所有其他进程的同一进程地址空间位置,即映射到各进程内存地址信息对应的位置。
需要说明的是,通过文件映射方式,可以有效的提高操作系统的读写效率,减少输入输出数据的时间和次数。
需要说明的是,通过本发明实施例的方案,可以使得所有进程存储目标文件的内存地址一样,即对应的磁盘文件为同一个,因此可以使得各进程间无需自己交互同步,避免了进程间建立通信通道进行同步所需的繁冗代码,从而可以达到共享数据的最好性能。
本发明实施例的技术方案,获取至少两个进程中首个启动的目标进程在磁盘空间中所创建的目标文件,并获取目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息,根据文件句柄和内存地址信息,调用内核操作系统接口,基于文件映射方式,实现至少两个进程对目标文件的共享。通过文件映射的方式,使得各进程在各自内存空间的相同位置处存储目标文件,可以快速实现多进程之间对同一文件的共享,避免进程之间通信交互造成的性能损耗。
实施例二
图2是本发明实施例二提供的一种实现多进程文件共享的方法流程图,本实施例在上述实施例的基础上,进一步对“根据文件句柄和内存地址信息,调用内核操作系统接口,基于文件映射方式,实现至少两个进程对目标文件的共享”进行详细的解释说明,如图2所示,该方法包括:
S201、获取目标进程在磁盘空间中所创建的目标文件,并获取目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息。
S202、调用内核操作系统接口,根据文件句柄,从磁盘空间中确定目标文件,得到目标文件的磁盘地址信息。
其中,磁盘空间是指操作系统真实存储文件的空间。磁盘地址信息是指目标文件在磁盘空间存储的地址信息。
可选的,内核操作系统在获取目标进程在磁盘空间中所创建的目标文件,并获取目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息之后,可以调用内核操作系统接口,根据文件句柄在磁盘空间中进行匹配,确定出目标文件以及存储目标文件的地址信息,即从磁盘空间中确定目标文件,得到目标文件的磁盘地址信息。
S203、将目标文件的磁盘地址信息映射到其他进程内存空间中的内存地址信息处,使目标文件在至少两个进程中的内存地址信息相同,实现至少两个进程对目标文件的共享。
需要说明的是,通过本发明实施例S201-203的步骤,可以使得目标文件在各进程中的内存地址信息是相同的,例如,A进程在对应的A内存空间的0x7fffffff地址存储目标文件,B进程在对应的B内存空间的0x7fffffff地址存储目标文件,即目标文件在至少两个进程中的内存地址信息相同。
可选的,内核操作系统确定目标文件的磁盘地址信息之后,可以根据目标进程的内存地址信息,将目标文件的磁盘地址信息映射到其他进程内存空间中对应的内存地址信息处,使得目标文件在至少两个进程中的内存地址信息相同,实现至少两个进程对目标文件的共享。
本发明实施例的技术方案,获取目标进程在磁盘空间中所创建的目标文件,并获取目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息之后,调用,内核操作系统接口,根据文件句柄,从磁盘空间中确定目标文件,得到目标文件的磁盘地址信息,最后将目标文件的磁盘地址信息映射到其他进程内存空间中的内存地址信息处,使目标文件在至少两个进程中的内存地址信息相同,实现至少两个进程对目标文件的共享。通过本发明实施例提供的方式,给出了一种实现至少两个进程对目标文件共享的可实施方式,可以使得各进程在各自内存空间的相同位置处存储目标文件,可以快速实现多进程之间对同一文件的共享,避免进程之间通信交互造成的性能损耗。
实施例三
图3是本发明实施例三提供的一种实现多进程文件共享的方法流程图,本实施例在上述实施例的基础上,进一步在至少两个进程对目标文件进行处理操作时,如何实现进程状态同步的过程进行详细的解释说明,如图3所示,该方法包括:
S301、获取目标进程在磁盘空间中所创建的目标文件,并获取目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息。
S302、根据文件句柄和内存地址信息,调用内核操作系统接口,基于文件映射方式,实现至少两个进程对目标文件的共享。
S303、响应于至少两个进程对目标文件的处理操作,利用外核操作系统对至少两个进程对目标文件的处理数据进行整合得到目标文件中的待更新数据。
其中,处理操作是指进程对目标文件执行的处理操作,具体的,处理操作可以包括:读取、更改以及删除中的至少一种。外核操作系统也称为库操作系统,外核操作系统是运行在用户态的操作系统,外核操作系统的权限低于内核操作系统。外核操作系统本身为一个函数库或代码库,可以整合各进程的操作,代理各进程与内核操作系统进行交互。例如,外核操作系统可以为libos操作系统。待更新数据是指对目标文件进行处理后新生成的数据。
可选的,各进程均可以对目标文件进行处理操作,外核操作系统可以在各进程分别对目标文件执行处理操作之后,将原目标文件和经过处理操作的目标文件进行比对,确定各进程对目标进程的处理数据,将各处理数据进行整合得到目标文件中的待更新数据。
S304、调用内核操作系统接口,将待更新数据同步到磁盘空间。
可选的,内核操作系统可以接收外核操作系统确定待更新数据之后,向内核操作系统发出的文件更新请求,并根据文件更新请求,调用对应的内核操作系统接口,将待更新数据同步更新至磁盘空间对应的目标文件中,即调用内核操作系统接口,将待更新数据同步到磁盘空间。
S305、基于目标文件在各进程中的内存地址信息,将待更新数据同步到各进程。
可选的,内核操作系统确定磁盘空间的目标文件进行了更新之后,可以基于目标文件在各进程中的内存地址信息,将待更新数据同步到各进程,从而实现各进程对目标文件操作状态的同步。
需要说明的是,本发明实施例通过使得各进程映射同一内存到自己地址空间的同一位置,并将后续libos用到的内存,统一分配到同一共同映射的内存区,可以实现所有受管理的进程中,libos所用内存在同一个地址上;还可以实现所有受管理的进程中,libos所用内存是同一块内存(即通过本发明上述实施例所述的linux的文件映射方式实现,因为是同一个文件,所以内存是一样的);还可以实现所有受管理的进程中,因为内存地址一样,所用内存也是一个,所以无需同步,也没有需要同步所需的繁冗代码,达到共享数据的最好性能。
本发明实施例的技术方案,根据文件句柄和内存地址信息,调用内核操作系统接口,基于文件映射方式,实现至少两个进程对目标文件的共享之后,响应于至少两个进程对目标文件的处理操作,利用外核操作系统对至少两个进程对目标文件的处理数据进行整合得到目标文件中的待更新数据,调用内核操作系统接口,将待更新数据同步到磁盘空间,基于目标文件在各进程中的内存地址信息,将待更新数据同步到各进程。通过这样的方式,实现了至少一个进程对文件进行了操作之后,其他所有进程均可以同步感知到文件的变化,即实现了多进程文件的共享,避免了各进程之间进行交互从而同步造成的性能损耗。
实施例四
图4是本发明实施例四提供的实现多进程文件共享的装置的结构图,本发明实施例所提供的一种实现多进程文件共享装置可执行本发明任一实施例所提供的一种实现多进程文件共享方法,具备执行方法相应的功能模块和有益效果。
如图4所示,该装置包括:
获取模块401,用于获取目标进程在磁盘空间中所创建的目标文件,并获取所述目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息;其中,所述目标进程为至少两个进程中首个启动的进程;
共享模块402,用于根据所述文件句柄和所述内存地址信息,调用内核操作系统接口,基于文件映射方式,实现所述至少两个进程对所述目标文件的共享。
本发明实施例的技术方案,获取至少两个进程中首个启动的目标进程在磁盘空间中所创建的目标文件,并获取目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息,根据文件句柄和内存地址信息,调用内核操作系统接口,基于文件映射方式,实现至少两个进程对目标文件的共享。通过文件映射的方式,使得各进程在各自内存空间的相同位置处存储目标文件,可以快速实现多进程之间对同一文件的共享,避免进程之间通信交互造成的性能损耗。
进一步的,共享模块402具体用于:
调用内核操作系统接口,根据所述文件句柄,从磁盘空间中确定所述目标文件,得到所述目标文件的磁盘地址信息;
将所述目标文件的磁盘地址信息映射到其他进程内存空间中的内存地址信息处,使目标文件在所述至少两个进程中的内存地址信息相同,实现所述至少两个进程对所述目标文件的共享。
进一步的,获取模块401具体用于:
若检测到至少两个进程中目标进程对内核操作系统函数的调用,则获取所述目标进程发送的目标文件的名称和目标文件在目标进程内存空间中的内存地址信息;
根据所述目标文件的名称和所述内存地址信息,获取所述目标文件的文件句柄。
进一步的,上述装置还用于:
响应于至少两个进程对目标文件的处理操作,利用外核操作系统对至少两个进程对目标文件的处理数据进行整合得到目标文件中的待更新数据;
调用内核操作系统接口,将所述待更新数据同步到磁盘空间;
基于所述目标文件在各进程中的内存地址信息,将所述待更新数据同步到各进程。
进一步的,所述处理操作包括:读取、更改以及删除中的至少一种。
进一步的,所述内核操作系统为linux操作系统;所述外核操作系统为libos操作系统。
实施例五
图5是本发明实施例五提供的电子设备的结构示意图。图5示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图5所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如实现多进程文件共享的方法。
在一些实施例中,实现多进程文件共享的方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的实现多进程文件共享的方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行实现多进程文件共享的方法,该方法包括:获取目标进程在磁盘空间中所创建的目标文件,并获取所述目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息;其中,所述目标进程为至少两个进程中首个启动的进程;根据所述文件句柄和所述内存地址信息,调用内核操作系统接口,基于文件映射方式,实现所述至少两个进程对所述目标文件的共享。本发明提供的方案,通过文件映射的方式,可以快速实现多进程之间对同一文件的共享,避免进程之间通信交互造成的性能损耗。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种实现多进程文件共享的方法,其特征在于,包括:
获取目标进程在磁盘空间中所创建的目标文件,并获取所述目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息;其中,所述目标进程为至少两个进程中首个启动的进程;
根据所述文件句柄和所述内存地址信息,调用内核操作系统接口,基于文件映射方式,实现所述至少两个进程对所述目标文件的共享。
2.根据权利要求1所述的方法,其特征在于,根据所述文件句柄和所述内存地址信息,调用内核操作系统接口,基于文件映射方式,实现所述至少两个进程对所述目标文件的共享,包括:
调用内核操作系统接口,根据所述文件句柄,从磁盘空间中确定所述目标文件,得到所述目标文件的磁盘地址信息;
将所述目标文件的磁盘地址信息映射到其他进程内存空间中的内存地址信息处,使目标文件在所述至少两个进程中的内存地址信息相同,实现所述至少两个进程对所述目标文件的共享。
3.根据权利要求1所述的方法,其特征在于,获取所述目标文件的文件句柄,包括:
若检测到至少两个进程中目标进程对内核操作系统函数的调用,则获取所述目标进程发送的目标文件的名称和目标文件在目标进程内存空间中的内存地址信息;
根据所述目标文件的名称和所述内存地址信息,获取所述目标文件的文件句柄。
4.根据权利要求1所述的方法,其特征在于,还包括:
响应于至少两个进程对目标文件的处理操作,利用外核操作系统对至少两个进程对目标文件的处理数据进行整合得到目标文件中的待更新数据;
调用内核操作系统接口,将所述待更新数据同步到磁盘空间;
基于所述目标文件在各进程中的内存地址信息,将所述待更新数据同步到各进程。
5.根据权利要求4所述的方法,其特征在于,其中,所述处理操作包括:读取、更改以及删除中的至少一种。
6.根据权利要求4所述的方法,其特征在于,其中,所述内核操作系统为linux操作系统;所述外核操作系统为libos操作系统。
7.一种实现多进程文件共享的装置,其特征在于,包括:
获取模块,用于获取目标进程在磁盘空间中所创建的目标文件,并获取所述目标文件的文件句柄和目标文件在目标进程内存空间中的内存地址信息;其中,所述目标进程为至少两个进程中首个启动的进程;
共享模块,用于根据所述文件句柄和所述内存地址信息,调用内核操作系统接口,基于文件映射方式,实现所述至少两个进程对所述目标文件的共享。
8.根据权利要求7所述的装置,其特征在于,所述共享模块包括:
得到单元,用于调用内核操作系统接口,根据所述文件句柄,从磁盘空间中确定所述目标文件,得到所述目标文件的磁盘地址信息;
共享单元,用于将所述目标文件的磁盘地址信息映射到其他进程内存空间中的内存地址信息处,使目标文件在所述至少两个进程中的内存地址信息相同,实现所述至少两个进程对所述目标文件的共享。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的实现多进程文件共享的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的实现多进程文件共享的方法。
CN202210956168.4A 2022-08-10 2022-08-10 一种实现多进程文件共享的方法、装置、设备及介质 Pending CN115309568A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210956168.4A CN115309568A (zh) 2022-08-10 2022-08-10 一种实现多进程文件共享的方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210956168.4A CN115309568A (zh) 2022-08-10 2022-08-10 一种实现多进程文件共享的方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN115309568A true CN115309568A (zh) 2022-11-08

Family

ID=83860187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210956168.4A Pending CN115309568A (zh) 2022-08-10 2022-08-10 一种实现多进程文件共享的方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN115309568A (zh)

Similar Documents

Publication Publication Date Title
CN113641457A (zh) 容器创建方法、装置、设备、介质及程序产品
CN112905314A (zh) 异步处理方法、装置、电子设备、存储介质、及路侧设备
CN114936173A (zh) 一种eMMC器件的读写方法、装置、设备和存储介质
CN113377295B (zh) 多生产者单消费者的数据存储和读取方法、装置、设备
CN113360689B (zh) 图像检索系统、方法、相关装置及计算机程序产品
CN115510036A (zh) 数据迁移方法、装置、设备以及存储介质
CN112799642B (zh) 用于处理数据的方法、装置、设备以及存储介质
CN115617800A (zh) 数据读取方法、装置、电子设备及存储介质
CN115309568A (zh) 一种实现多进程文件共享的方法、装置、设备及介质
CN114374703A (zh) 云手机信息的获取方法、装置、设备以及存储介质
CN114090247A (zh) 用于处理数据的方法、装置、设备以及存储介质
CN116579914B (zh) 一种图形处理器引擎执行方法、装置、电子设备及存储介质
CN114816758B (zh) 资源分配方法和装置
CN115934246A (zh) 一种虚拟机创建方法、装置、设备和介质
CN115617454A (zh) 一种容器化服务部署方法、装置、设备及存储介质
CN115913954A (zh) 集群管理信息交互方法、装置、设备和存储介质
CN115578200A (zh) 数据处理方法、装置、电子设备及存储介质
CN115576977A (zh) 数据分页查询方法、装置、电子设备及存储介质
CN114416040A (zh) 一种页面构建方法、装置、设备及存储介质
CN116594764A (zh) 一种应用程序的更新方法、装置、电子设备和存储介质
CN113961775A (zh) 数据可视化的方法、装置、电子设备和可读存储介质
CN115687529A (zh) 数据同步方法、装置、电子设备及存储介质
CN115034895A (zh) 一种区块链节点的管理方法、装置及电子设备
CN115061817A (zh) 运维方法、装置、系统及计算机程序产品
CN115883351A (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