CN112231121A - 创建进程的方法、装置和电子设备 - Google Patents
创建进程的方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112231121A CN112231121A CN202011130643.XA CN202011130643A CN112231121A CN 112231121 A CN112231121 A CN 112231121A CN 202011130643 A CN202011130643 A CN 202011130643A CN 112231121 A CN112231121 A CN 112231121A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- target
- access
- sub
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; 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
技术领域
本发明涉及内存优化技术领域,尤其是涉及一种创建进程的方法、装置和电子设备。
背景技术
在Linux环境下,父进程创建子进程后,在父进程或子进程没有写入数据之前,父进程和子进程共享内存中的同一块物理内存区域;如果父进程或子进程需要写入数据,则需要将父进程和子进程的物理内存区域分开,即,将原本共享的物理内存区域中的数据,在内存的其他区域进行复制;在复制的过程中,如果需要复制的数据量较大,或者当前内存资源紧张,则可能引起内存溢出,导致内存中正在运行的某些程序或实例等停止运行,造成系统运行的稳定性较差。
发明内容
有鉴于此,本发明的目的在于提供一种创建进程的方法、装置和电子设备,以避免在复制数据的过程中,内存使用增长过高导致内存溢出的问题,进而提升系统运行的稳定性。
第一方面,本发明实施例提供了一种创建进程的方法,方法包括:如果需要基于目标进程创建子进程,根据子进程的进程任务,从目标进程的内存数据中确定子进程需要访问的目标数据;基于目标数据,设置目标进程的至少一部分内存数据的访问状态;其中,访问状态用于指示:子进程是否有权限访问至少一部分内存数据;基于设置访问状态后的目标进程,创建子进程。
进一步的,基于目标数据,设置目标进程的至少一部分内存数据的访问状态的步骤,包括:对目标进程的内存数据中,除目标数据以外的数据设置标记符;其中,标记符用于指示:子进程没有权限访问除目标数据以外的数据。
进一步的,对目标进程的内存数据中,除目标数据以外的数据设置标记符的步骤,包括:获取除目标数据以外的数据的内存地址和内存大小;对内存地址和内存大小所对应的数据设置标记符,以将内存地址和内存大小所对应的数据标记为:子进程没有权限访问的数据。
进一步的,基于设置访问状态后的目标进程,创建子进程的步骤之后,方法还包括:当子进程需要访问目标进程的内存数据时,根据访问状态访问目标进程的内存数据。
进一步的,目标进程的内存数据包括多种类型;根据访问状态访问目标进程的内存数据的步骤,包括:针对每种类型的内存数据,如果当前类型的内存数据设置有访问状态,且访问状态指示子进程没有权限访问当前类型的内存数据,拒绝子进程访问当前类型的内存数据;如果当前类型的内存数据没有访问状态,或者设置的访问状态指示子进程具有权限访问当前类型的内存数据,将当前类型的内存数据写入子进程对应的物理内存中。
进一步的,根据访问状态访问目标进程的内存数据的步骤之后,方法还包括:取消设置的访问状态。
进一步的,子进程的进程任务包括:数据库数据备份任务;子进程需要访问的目标数据包括:目标进程的内存数据中的数据库数据。
第二方面,本发明实施例提供了一种创建进程的装置,装置包括:确定模块,用于如果需要基于目标进程创建子进程,根据子进程的进程任务,从目标进程的内存数据中确定子进程需要访问的目标数据;设置模块,用于基于目标数据,设置目标进程的至少一部分内存数据的访问状态;其中,访问状态用于指示:子进程是否有权限访问至少一部分内存数据;创建模块,用于基于设置访问状态后的目标进程,创建子进程。
第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现第一方面任一项的创建进程的方法。
第四方面,本发明实施例提供了一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现第一方面任一项的创建进程的方法。
本发明实施例带来了以下有益效果:
本发明实施例提供了一种创建进程的方法、装置和电子设备,当需要基于目标进程创建子进程时,首先根据子进程的进程任务,从目标进程的内存数据中确定子进程需要访问的目标数据;然后基于该目标数据,设置目标进程的至少一部分内存数据的访问状态;最后基于设置访问状态后的目标进程,创建子进程。该方式中,在基于目标进程创建子进程时,根据子进程需要访问的目标数据,对目标进程中的内存数据设置访问状态,使子进程仅具有访问目标进程中一部分内存数据的权限,无需对目标进程中所有内存数据均双倍拷贝,避免了内存使用增长过高导致内存溢出的问题,进而提升了系统运行的稳定性。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种创建进程的方法流程图;
图2为本发明实施例提供的另一种创建进程的方法流程图;
图3为本发明实施例提供的一种创建进程的示意图;
图4为本发明实施例提供的一种创建进程的装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,在Linux环境下,父子进程之间的内存优化通常采用COW(Copy On Write,写时复制)机制,该方式节省了较多的内存空间的拷贝,从而减轻了内存的使用。但是,在父进程或者子进程其中一方修改内存时,都会产生COW的副作用,即产生内存的双份拷贝。例如,Redis(Remote dictionary server,远程字典服务)作为一个全内存数据库,在主从全量复制或者备份时,需要创建子进程产生rdb(reverse dot blot)数据库,在主机的大容量实例内存和IO(Input/Output,输入/输出)紧张的情况下,并且主进程数据操作时,可能会造成COW机制的副作用,即双份内存拷贝,使主机内存的使用增长过高,可能会引起OOM(Out OfMemory,内存溢出),导致内存中正在运行的某些内存使用过高程序或实例等停止运行,造成系统运行的稳定性较差。基于此,本发明实施例提供的一种创建进程的方法、装置和电子设备,该技术可以应用于电脑、笔记本等各种硬件设备中。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种创建进程的方法进行详细介绍,如图1所示,该方法包括如下步骤:
步骤S102,如果需要基于目标进程创建子进程,根据子进程的进程任务,从目标进程的内存数据中确定子进程需要访问的目标数据;
上述目标进程通常是指正在运行的程序的实例,运行中的程序,可能会有多个进程;在该目标进程创建一个或多个子进程后可以称为父进程;上述子进程为目标进程所创建的进程;上述子进程的进程任务包括:数据库数据备份任务;即备份的数据类型,基于该数据产生各种类型的文件,具体可以根据实际需要进行设置,比如,针对目标进程需要创建子进程产生rdb文件,此时进程任务可以为产生rdb文件需要备份的数据库数据。
上述子进程需要访问的目标数据包括:目标进程的内存数据中的数据库数据;可以包括目标进程的内存数据中的一部分数据;另外,目标进程的内存数据可以包括多种类型,比如,数据内存、主从复制缓存区、client以及客户端缓存区、AOF(Append Only File,仅附加文件)的缓存区、lua脚本的GC(垃圾回收)缓冲区、程序运行内存等,可以根据子进程的进程任务包括的数据库数据备份任务,可以是备份数据内存,从目标进程的内存数据中确定子进程需要访问的目标数据,可以为数据内存中的数据,进而对该目标数据进行复制产生子进程的目标文件。
步骤S104,基于目标数据,设置目标进程的至少一部分内存数据的访问状态;其中,访问状态用于指示:子进程是否有权限访问至少一部分内存数据;
上述访问状态可以是为目标进程的至少一部分内存数据设置标记参数,可以利用接口函数进行标记;具体的,在接收到基于目标进程创建子进程的信息后,在开始利用COW机制进行复制之前,需要将目标进程中除目标数据以外的内存数据进行标记,也可以将目标进程中与目标数据对应的内存数据进行标记;可以利用接口函数对至少一部分内存数据进行参数标记,以使该部分内存数据的访问状态为子进程没有权限访问该部分内存数据,或子进程有权限访问该部分内存数据。
步骤S106,基于设置访问状态后的目标进程,创建子进程。
将目标进程中的数据内存设置访问状态后,可以根据访问状态中子进程可以访问的数据内存,创建子进程,以使创建的子进程中包括对应的物理内存。
以Redis全内存数据库为例,本实施例举例说明不设置访问状态,对创建子进程所导致的内存占用问题;目标进程中的AOF的buf缓冲区,当redis服务开启AOF数据操作日志时,子进程产生rdb文件不需要该部分内存,如果目标进程使用了100MB的内存作为AOF的buf缓冲,如果对buf缓冲数据不进行访问状态的标记,创建子进程对该数据复制后,父进程对AOF的buf缓冲内存数据进行修改,会产生占用系统200MB的场景。
主从复制之间的内存缓冲区,当redis服务已经存在一个从节点时,子进程产生rdb文件不需要这部分内存;假如父进程使用了100MB的内存作为主从增量缓冲区,如果不进行访问状态的标记,f创建子进程对该数据复制后,父进程主从复制缓冲区内存进行修改,会产生占用系统200MB的场景。
redis客户端和redis-server服务之间的网络包缓冲区,当用户有多个客户端连接,在子进程产生rdb文件的场景中,由于子进程不需要这部分内存,父进程在恢复客户端请求结果便会修改该内存,从而产生双倍内存占用。
lua脚本的GC(垃圾回收)缓冲区,在用户大量使用lua脚本的场景,在子进程产生rdb数据,由于大量执行lua脚本,会导致lua虚拟机的内存使用上升,从而导致lua虚拟机的垃圾回收机制的内存使用率双倍占用。
本发明实施例提供了一种创建进程的方法,当需要基于目标进程创建子进程时,首先根据子进程的进程任务,从目标进程的内存数据中确定子进程需要访问的目标数据;然后基于该目标数据,设置目标进程的至少一部分内存数据的访问状态;最后基于设置访问状态后的目标进程,创建子进程。该方式中,在基于目标进程创建子进程时,根据子进程需要访问的目标数据,对目标进程中的内存数据设置访问状态,使子进程仅具有访问目标进程中一部分内存数据的权限,无需对目标进程中所有内存数据均双倍拷贝,避免了内存使用增长过高导致内存溢出的问题,进而提升了系统运行的稳定性。
本实施例还提供了另一种创建进程的方法,本实施例重点描述基于目标数据,设置目标进程的至少一部分内存数据的访问状态的步骤的具体实现过程(通过步骤S204实现),以及基于设置访问状态后的目标进程,创建子进程的步骤之后的步骤的具体实现过程(通过步骤S208-S210实现)如图2所示,该方法包括如下步骤:
步骤S202,如果需要基于目标进程创建子进程,根据子进程的进程任务,从目标进程的内存数据中确定子进程需要访问的目标数据;
步骤S204,对目标进程的内存数据中,除目标数据以外的数据设置标记符;其中,标记符用于指示:子进程没有权限访问除目标数据以外的数据;
由于在利用COW机制创建子进程的过程中,会将目标进程中的所有内存全量复制,增加主机内存的使用;另外,子进程的进程任务并不需要将将目标进程中的所有内存全量复制,仅需要将目标数据进行复制,因此可以对目标进程的内存数据中,除目标数据以外的数据设置标记符,以使子进程没有权限访问除目标数据以外的数据,进而只对目标数据进行复制创建子进程。
比如,现在方案即开源社区版本的方案中,大容量redis实例主从复制创建子进程的过程中进行了完全的内存复制,其中有很大一部分内存在子进程中是没有用的,比如:AOF的buf缓冲区,主从之间的内存缓冲区,redis client和redis-server之间的网络包缓冲区等。全量的rdb文件备份仅仅使用db部分的内存数据,其他部分都会导致在子进程进行rdb全量文件备份的时候出现内存的双倍占用。
上述标记符可以利用接口函数进行设置,可以设置除目标数据以外的数据的内存地址、内存大小、数据本身等;比如,可以通过linux系统平台的一个系统接口madviseMADV_DONTFORK int madvise(void*addr,size_t length,int advice)设置除目标数据以外的数据标记符;从而表示设置了标记符的内存数据不需要和子进程共享,即子进程没有权限访问该部分内存数据,该部分内存数据为目标进程的内存数据中除目标数据以外的数据。该中在内核中进行标记,不让这些内存进行拷贝的方式,可以在复制的时候不会产生page页的拷贝和引用问题;由于子进程的内存仅仅使用数据库的存储部分的内存,那么即使在目标进程进行一定量其他部分的内存修改后,也会减轻内存的使用增高。
上述步骤S204中,对目标进程的内存数据中,除目标数据以外的数据设置标记符的步骤,包括:
(1)获取除目标数据以外的数据的内存地址和内存大小;
具体的,数据的不同内存是在内存管理的区域有指针标识的,可以通过数据库的内存地址的管理区域,寻找上述除目标数据以外的数据的内存地址,以及内存大小。
(2)对内存地址和内存大小所对应的数据设置标记符,以将内存地址和内存大小所对应的数据标记为:子进程没有权限访问的数据。
同样的,可以利用接口函数进行设置,比如,可以通过linux系统平台的一个系统接口madvise MADV_DONTFORK int madvise(void*addr,size_t length,int advice)设置标记符;其中第一个void*addr可以是指向的内存地址,第二个size_t length可以是内存的大小,进行标记的内存地址和内存大小所对应的数据可以利用第三个int advice标记为:子进程没有权限访问的数据,其中设置的标记符可以是MADV_DONTFORK表示该部分内存数据不需要和子进程共享,即子进程没有权限访问该部分内存数据,该部分内存数据为目标进程的内存数据中除目标数据以外的数据;当然也可以是MADV_DOFORK表示取消这部分内存的标记状态。
步骤S206,基于设置访问状态后的目标进程,创建子进程;
步骤S208,当子进程需要访问目标进程的内存数据时,根据访问状态访问目标进程的内存数据;
在实际实现时,当子进程需要访问目标进程的内存数据时,子进程会利用COW机制对目标进程的所有内存数据进行访问,当访问状态指示不允许子进程访问时,则不进行该内存数据的访问;通常没有设置访问状态的内存数据可以直接进行访问,即访问目标进程的内存数据中子进程需要访问的目标数据,可以将访问到的内存数据进行复制,保存至创建的子进程对应的内存中。
上述步骤S208中目标进程的内存数据包括多种类型;根据访问状态访问目标进程的内存数据的步骤,包括:
(1)针对每种类型的内存数据,如果当前类型的内存数据设置有访问状态,且访问状态指示子进程没有权限访问当前类型的内存数据,拒绝子进程访问当前类型的内存数据;
例如图3所示的创建进程的示意图,目标进程的内存数据包括:内存数据、主从复制缓存区、client以及客户端缓存区、AOF(Append Only File,仅附加文件)的缓存区、lua脚本的GC(垃圾回收)缓冲区、程序运行内存等,在实际实现时,可以针对上述每种内存数据进行访问,如果当前类型的内存数据设置有访问状态,且访问状态指示子进程没有权限访问当前类型的内存数据,拒绝子进程访问当前类型的内存数据。
再如图3所示,在子进程产生rdb文件的场景中,子进程只需要访问复制目标进程中内存数据和程序运行内存,在针对除内存数据和程序运行内存以外的主从复制缓存区数据、client以及客户端缓存区、AOF(Append Only File,仅附加文件)的缓存区、lua脚本的GC(垃圾回收)缓冲区进行访问时,均设置有访问状态,且访问状态指示子进程没有权限访问该部分数据,则拒绝子进程访问当前类型的内存数据,可以避免复制不需要的数据,以及产生page页的拷贝和引用问题。
(2)如果当前类型的内存数据没有访问状态,或者设置的访问状态指示子进程具有权限访问当前类型的内存数据,将当前类型的内存数据写入子进程对应的物理内存中。
例如图3所示的创建进程的示意图,在子进程产生rdb文件的场景中,子进程只需要访问复制目标进程中内存数据和程序运行内存,在针对内存数据和程序运行内存进行访问时,由于没有设置访问状态,子进程具有权限访问当前类型的内存数据,可以直接将当前类型的内存数据写入子进程对应的物理内存中;或者由于设置的访问状态指示子进程有权限访问该部分数据,则可以将当前类型的内存数据写入子进程对应的物理内存中,可以避免复制不需要的数据,以及产生page页的拷贝和引用问题。
步骤S210,取消设置的访问状态。
在完成复制工作后,方便后续创建不同的进程任务,可以将已经完成复制任务的目进程中的内存数据设置的访问状态取消。
需要说明的是,本申请不仅限于产生rdb文件的场景,即子进程的进程任务可以包括多种,其中进行复制的内存数据的种类,即目标数据可以根据进程任务进行设置,不仅限于数据内存和程序运行数据。
该方式中,通过对目标进程中的除目标数据以外的数据设置标记符,使子进程没有权限访问除目标数据以外的数据,基于设置访问状态后的目标进程,创建子进程;当子进程需要访问目标进程的内存数据时,根据访问状态访问目标进程的内存数据;避免了在复制数据的过程中,子进程中所有内存数据双倍拷贝,将不需要进行cow拷贝的内存地址在内核中进行标记,不让这些内存进行拷贝,然后在fork的时候就不会产生page页的拷贝和引用问题。由于子进程的内存仅仅使用数据库的存储部分的内存,那么即使在父进程进行一定量其他部分的内存修改后,也会减轻内存的使用增高,以及减少了在资源紧张环境下主从同步时所造成的内存使用增长过高的问题,进而提升了服务稳定性和同步成功率。另外,可以优化大部分的父进程和子进程复制的情况的软件的内存使用情况,在线上redis数据库实例的主从全量复制时,降低内存使用率优化。
对应上述方法实施例,本发明实施例提供了一种创建进程的装置,如图4所示,该装置包括:
确定模块41,用于如果需要基于目标进程创建子进程,根据子进程的进程任务,从目标进程的内存数据中确定子进程需要访问的目标数据;
设置模块42,用于基于目标数据,设置目标进程的至少一部分内存数据的访问状态;其中,访问状态用于指示:子进程是否有权限访问至少一部分内存数据;
创建模块43,用于基于设置访问状态后的目标进程,创建子进程。
本发明实施例提供了一种创建进程的装置,当需要基于目标进程创建子进程时,首先根据子进程的进程任务,从目标进程的内存数据中确定子进程需要访问的目标数据;然后基于该目标数据,设置目标进程的至少一部分内存数据的访问状态;最后基于设置访问状态后的目标进程,创建子进程。该方式中,在基于目标进程创建子进程时,根据子进程需要访问的目标数据,对目标进程中的内存数据设置访问状态,使子进程仅具有访问目标进程中一部分内存数据的权限,无需对目标进程中所有内存数据均双倍拷贝,避免了内存使用增长过高导致内存溢出的问题,进而提升了系统运行的稳定性。
进一步的,上述设置模块还用于:对目标进程的内存数据中,除目标数据以外的数据设置标记符;其中,标记符用于指示:子进程没有权限访问除目标数据以外的数据。
进一步的,上述设置模块还用于:获取除目标数据以外的数据的内存地址和内存大小;对内存地址和内存大小所对应的数据设置标记符,以将内存地址和内存大小所对应的数据标记为:子进程没有权限访问的数据。
进一步的,上述装置还包括访问模块,用于当子进程需要访问目标进程的内存数据时,根据访问状态访问目标进程的内存数据。
进一步的,上述目标进程的内存数据包括多种类型;上述访问模块还用于:针对每种类型的内存数据,如果当前类型的内存数据设置有访问状态,且访问状态指示子进程没有权限访问当前类型的内存数据,拒绝子进程访问当前类型的内存数据;如果当前类型的内存数据没有访问状态,或者设置的访问状态指示子进程具有权限访问当前类型的内存数据,将当前类型的内存数据写入子进程对应的物理内存中。
进一步的,上述装置还用于取消设置的访问状态。
进一步的,上述子进程的进程任务包括:数据库数据备份任务;上述子进程需要访问的目标数据包括:目标进程的内存数据中的数据库数据。
本发明实施例提供的创建进程的装置,与上述实施例提供的创建进程的方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述创建进程的方法。
参见图5所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述创建进程的方法。
进一步地,图5所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
其中,存储器101可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述创建进程的方法。
本发明实施例所提供的创建进程的方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种创建进程的方法,其特征在于,所述方法包括:
如果需要基于目标进程创建子进程,根据所述子进程的进程任务,从所述目标进程的内存数据中确定所述子进程需要访问的目标数据;
基于所述目标数据,设置所述目标进程的至少一部分内存数据的访问状态;其中,所述访问状态用于指示:所述子进程是否有权限访问所述至少一部分内存数据;
基于设置访问状态后的所述目标进程,创建所述子进程。
2.根据权利要求1所述的方法,其特征在于,基于所述目标数据,设置所述目标进程的至少一部分内存数据的访问状态的步骤,包括:
对所述目标进程的内存数据中,除所述目标数据以外的数据设置标记符;其中,所述标记符用于指示:所述子进程没有权限访问除所述目标数据以外的数据。
3.根据权利要求2所述的方法,其特征在于,对所述目标进程的内存数据中,除所述目标数据以外的数据设置标记符的步骤,包括:
获取除所述目标数据以外的数据的内存地址和内存大小;
对所述内存地址和所述内存大小所对应的数据设置所述标记符,以将所述内存地址和所述内存大小所对应的数据标记为:所述子进程没有权限访问的数据。
4.根据权利要求1所述的方法,其特征在于,基于设置访问状态后的所述目标进程,创建所述子进程的步骤之后,所述方法还包括:
当所述子进程需要访问所述目标进程的内存数据时,根据所述访问状态访问所述目标进程的内存数据。
5.根据权利要求4所述的方法,其特征在于,所述目标进程的内存数据包括多种类型;所述根据所述访问状态访问所述目标进程的内存数据的步骤,包括:
针对每种类型的内存数据,如果当前类型的内存数据设置有访问状态,且所述访问状态指示所述子进程没有权限访问所述当前类型的内存数据,拒绝所述子进程访问所述当前类型的内存数据;
如果当前类型的内存数据没有访问状态,或者设置的访问状态指示所述子进程具有权限访问所述当前类型的内存数据,将所述当前类型的内存数据写入所述子进程对应的物理内存中。
6.根据权利要求4所述的方法,其特征在于,根据所述访问状态访问所述目标进程的内存数据的步骤之后,所述方法还包括:取消设置的所述访问状态。
7.根据权利要求1所述的方法,其特征在于,所述子进程的进程任务包括:数据库数据备份任务;所述子进程需要访问的目标数据包括:所述目标进程的内存数据中的数据库数据。
8.一种创建进程的装置,其特征在于,所述装置包括:
确定模块,用于如果需要基于目标进程创建子进程,根据所述子进程的进程任务,从所述目标进程的内存数据中确定所述子进程需要访问的目标数据;
设置模块,用于基于所述目标数据,设置所述目标进程的至少一部分内存数据的访问状态;其中,所述访问状态用于指示:所述子进程是否有权限访问所述至少一部分内存数据;
创建模块,用于基于设置访问状态后的所述目标进程,创建所述子进程。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至7任一项所述的创建进程的方法。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1至7任一项所述的创建进程的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011130643.XA CN112231121A (zh) | 2020-10-20 | 2020-10-20 | 创建进程的方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011130643.XA CN112231121A (zh) | 2020-10-20 | 2020-10-20 | 创建进程的方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112231121A true CN112231121A (zh) | 2021-01-15 |
Family
ID=74117607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011130643.XA Pending CN112231121A (zh) | 2020-10-20 | 2020-10-20 | 创建进程的方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231121A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656175A (zh) * | 2021-08-18 | 2021-11-16 | 北京百度网讯科技有限公司 | 基于分布式系统训练模型的方法、设备及程序产品 |
CN114416426A (zh) * | 2021-12-17 | 2022-04-29 | 阿里巴巴(中国)有限公司 | 进程拷贝方法以及装置 |
WO2024021477A1 (zh) * | 2022-07-28 | 2024-02-01 | 青岛云天励飞科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
-
2020
- 2020-10-20 CN CN202011130643.XA patent/CN112231121A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656175A (zh) * | 2021-08-18 | 2021-11-16 | 北京百度网讯科技有限公司 | 基于分布式系统训练模型的方法、设备及程序产品 |
CN113656175B (zh) * | 2021-08-18 | 2022-07-08 | 北京百度网讯科技有限公司 | 基于分布式系统训练模型的方法及设备 |
CN114416426A (zh) * | 2021-12-17 | 2022-04-29 | 阿里巴巴(中国)有限公司 | 进程拷贝方法以及装置 |
WO2024021477A1 (zh) * | 2022-07-28 | 2024-02-01 | 青岛云天励飞科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112231121A (zh) | 创建进程的方法、装置和电子设备 | |
CN110262929B (zh) | 一种保证复制事务一致性的方法以及相应的复制装置 | |
CN113568566B (zh) | 利用索引物件来进行简易存储服务无缝迁移的方法、主装置以及存储服务器 | |
US20170371889A1 (en) | Data cloning in memory-based file systems | |
CN103729442A (zh) | 记录事务日志的方法和数据库引擎 | |
JPH0773087A (ja) | データ処理システムにおけるファイル状態の回復方法 | |
US20190087130A1 (en) | Key-value storage device supporting snapshot function and operating method thereof | |
CN111274252A (zh) | 一种区块链的数据上链方法、装置、存储介质和服务器 | |
CN112506710B (zh) | 分布式文件系统数据修复方法、装置、设备及存储介质 | |
CN111200634B (zh) | 缓存资源联动更新方法、系统及服务器 | |
US11113251B2 (en) | Transaction manager | |
US11080909B2 (en) | Image layer processing method and computing device | |
US11226755B1 (en) | Core dump in a storage device | |
CN111639087B (zh) | 数据库中数据更新方法、装置和电子设备 | |
US9317432B2 (en) | Methods and systems for consistently replicating data | |
CN107547593B (zh) | 一种实现日志同步的方法、装置及分布式系统 | |
CN111400128A (zh) | 日志管理方法、装置、计算机设备及存储介质 | |
US10073874B1 (en) | Updating inverted indices | |
CN111737223B (zh) | 一种文件拷贝方法、装置、设备及存储介质 | |
CN116226041A (zh) | 分布式文件系统中的文件读/写方法、装置和设备 | |
CN114675995A (zh) | 数据备份方法、装置和电子设备 | |
CN109725856B (zh) | 一种共享节点管理方法、装置、电子设备及存储介质 | |
CN109254870B (zh) | 数据备份的方法和装置 | |
CN111984473A (zh) | 一种内存快照数据获取方法及相关装置 | |
US10783136B1 (en) | Management of garbage data in distributed systems |
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 |