CN117724822B - 一种数据处理方法、装置、设备及存储介质 - Google Patents
一种数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117724822B CN117724822B CN202410163851.1A CN202410163851A CN117724822B CN 117724822 B CN117724822 B CN 117724822B CN 202410163851 A CN202410163851 A CN 202410163851A CN 117724822 B CN117724822 B CN 117724822B
- Authority
- CN
- China
- Prior art keywords
- page table
- virtual memory
- content
- target
- 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.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 64
- 238000003672 processing method Methods 0.000 title abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 689
- 230000015654 memory Effects 0.000 claims abstract description 593
- 230000008569 process Effects 0.000 claims abstract description 511
- 230000006870 function Effects 0.000 claims abstract description 43
- 238000012216 screening Methods 0.000 claims description 129
- 238000012545 processing Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 19
- 230000000903 blocking effect Effects 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 9
- 238000004886 process control Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 208000008469 Peptic Ulcer Diseases 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 101150020741 Hpgds gene Proteins 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种数据处理方法、装置、设备及存储介质,其中方法包括:调用目标进程,根据子进程创建函数创建目标进程的子进程,获取目标进程对应的M个第一虚拟内存区域的M个区域属性信息;当M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息,对目标进程的第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容;调用目标进程,对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容;根据第一子页表内容和第二子页表内容生成子进程的第二页表。采用本申请,可以极大程度的降低目标进程拷贝页表所产生的堵塞时间。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
近年来,随着服务器大规模应用的使用,海量数据爆发式增长,内存的使用也随着增加,在创建父进程的子进程时,需要把父进程的页表拷贝一份给子进程,该父进程的页表用于查询父进程的内存数据。目前,将父进程的页表拷贝给子进程的过程中,父进程是完全阻塞的,这意味着父进程无法处理其他业务,如果页表很大,父进程堵塞的时间会更久,因此如何降低父进程因页表拷贝所产生的堵塞时间是当前亟待解决的问题。
发明内容
本申请实施例提供一种数据处理方法、装置、设备及存储介质,可以极大程度的降低目标进程拷贝页表所产生的堵塞时间。
本申请实施例一方面提供一种数据处理方法,包括:
调用目标进程,根据子进程创建函数创建目标进程的子进程,获取目标进程的第一页表,以及目标进程对应的M个第一虚拟内存区域的M个区域属性信息;第一页表用于指示M个第一虚拟内存区域,与存储目标进程的内存数据的设备内存之间的映射关系;M为正整数;
当M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容;
调用目标进程,对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容;
根据第一子页表内容和第二子页表内容生成子进程的第二页表,子进程根据第二页表从设备内存中获取目标进程的内存数据。
本申请实施例一方面提供一种数据处理装置,包括:
创建模块,用于调用目标进程,根据子进程创建函数创建目标进程的子进程,获取目标进程的第一页表,以及目标进程对应的M个第一虚拟内存区域的M个区域属性信息;第一页表用于指示M个第一虚拟内存区域,与存储目标进程的内存数据的设备内存之间的映射关系;M为正整数;
划分模块,用于当M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容;
第一拷贝模块,用于调用目标进程,对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容;
生成模块,用于根据第一子页表内容和第二子页表内容生成子进程的第二页表,子进程根据第二页表从设备内存中获取目标进程的内存数据。
其中,区域属性信息包括第一虚拟内存区域的区域类型;
划分模块还用于执行以下操作:
当M个区域属性信息指示M个第一虚拟内存区域中,存在区域类型为目标区域类型的第一虚拟内存区域时,确定第一页表满足加速拷贝条件;目标区域类型的虚拟内存区域在设备内存中不具有对应的独立物理内存区域;
统计M个第一虚拟内存区域中区域类型为目标区域类型的第一虚拟内存区域的区域数量;
根据区域数量和M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。
其中,划分模块还用于执行以下操作:
若区域数量等于M,则获取目标进程中待处理任务对应的任务量;
根据任务量,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。
其中,划分模块还用于执行以下操作:
若区域数量小于M,则从M个第一虚拟内存区域中,筛选出区域类型为目标区域类型的匹配第一虚拟内存区域;
从第一页表中,确定匹配第一虚拟内存区域和剩余第一虚拟内存区域分别关联的父页表内容;剩余第一虚拟内存区域为M个第一虚拟内存区域中除匹配第一虚拟内存区域之外的区域;
对匹配第一虚拟内存区域关联的父页表内容进行划分,得到目标进程对应的第一筛选父页表内容和子进程对应的第二筛选父页表内容;
将剩余第一虚拟内存区域关联的父页表内容以及第一筛选父页表内容,确定为目标进程对应的第一父页表内容,将第二筛选父页表内容确定为子进程对应的第二父页表内容。
其中,区域属性信息包括第一虚拟内存区域的区域类型;
数据处理装置还包括:
第二拷贝模块,用于当M个区域属性信息指示M个第一虚拟内存区域分别对应的区域类型均为目标区域类型时,调用子进程,对第一页表进行拷贝处理,得到子进程的第二页表;目标区域类型的虚拟内存区域在设备内存中不具有对应的独立物理内存区域。
其中,第一拷贝模块用于执行以下操作:
调用目标进程,获取子进程对应的M个第二虚拟内存区域;一个第二虚拟内存区域与一个第一虚拟内存区域关联;
根据第一筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成子进程的第一筛选子页表内容;关联第二虚拟内存区域为M个第二虚拟内存区域中,与匹配第一虚拟内存区域关联的第二虚拟内存区域;
根据剩余第一虚拟内存区域关联的父页表内容,以及M个第二虚拟内存区域中与剩余第一虚拟内存区域关联的第二虚拟内存区域,生成子进程的剩余子页表内容;
将第一筛选子页表内容和剩余子页表内容,确定为第一子页表内容。
其中,第一拷贝模块还用于执行以下操作:
获取匹配第一虚拟内存区域的区域索引信息;
在关联第二虚拟内存区域中,添加区域索引信息以及页表拷贝标识;区域索引信息用于获取到匹配第一虚拟内存区域,页表拷贝标识用于指示关联第二虚拟内存区域需要进行关于第二父页表内容的拷贝操作。
其中,第一页表为四级页表;
第一拷贝模块还用于执行以下操作:
若第一筛选父页表内容的内容属性用于指示,第一筛选父页表内容为第一页表中的第一级页表内容、第二级页表内容以及第三级页表内容,则根据关联第二虚拟内存区域中的目标虚拟地址,生成与目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容;
将与目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容,确定为子进程的第一筛选子页表内容。
其中,第一拷贝模块还用于执行以下操作:
调用子进程,从子进程对应的M个第二虚拟内存区域中,确定携带页表拷贝标识的关联第二虚拟内存区域;关联第二虚拟内存区域与匹配第一虚拟内存区域关联;
从第二筛选父页表内容中,确定匹配第一虚拟内存区域对应的目标物理地址;
根据目标物理地址、第二筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成第二子页表内容。
其中,第一拷贝模块还用于执行以下操作:
调用子进程,根据第二筛选父页表内容的内容属性,以及关联第二虚拟内存区域包括的目标虚拟地址,生成与目标虚拟地址关联的初始子页表内容;
将目标物理地址,添加至与目标虚拟地址关联的初始子页表内容中,得到第二子页表内容。
其中,第一页表为四级页表;
第一拷贝模块还用于执行以下操作:
若第二筛选父页表内容的内容属性指示第二筛选父页表内容为第一页表中的第四级页表内容,则根据关联第二虚拟内存区域包括的目标虚拟地址,生成与目标虚拟地址关联的第四级页表内容;
将与目标虚拟地址关联的第四级页表内容,确定为与目标虚拟地址关联的初始子页表内容。
其中,第一拷贝模块还用于执行以下操作:
调用子进程,创建N个线程;N为大于1的整数;
获取关联第二虚拟内存区域的区域数量,根据区域数量以及N个线程的线程数量,将关联第二虚拟内存区域分配给N个线程;
调用N个线程,根据各自对应的关联第二虚拟内存区域、目标物理地址,以及第二筛选父页表内容的内容属性,生成第二子页表内容。
数据处理装置还包括:
更新模块,用于在确定由子进程拷贝的第二父页表内容时,若第二父页表内容为可编辑状态,则将第二父页表内容的可编辑状态更新为不可编辑状态;
恢复模块,用于在检测到已生成第二子页表内容时,将第二父页表内容的不可编辑状态恢复为可编辑状态。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例提供一种加速页表拷贝方式,当目标进程对应的M个第一虚拟内存区域的M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息对目标进程的第一页表进行划分,得到由目标进程拷贝的第一父页表内容和由第二子进程拷贝的第二父页表内容。这样,可以避免第一页表不满足加速拷贝条件时,产生由第二子进程拷贝会消耗更多的时间的问题,可以尽可能的降低页表拷贝时间。同时,目标进程只需要拷贝第一父页表内容,剩余页表内容(即第二父页表内容)由子进程拷贝。这样,目标进程拷贝完第一父页表内容后,便可以继续处理目标进程中的待处理任务,可以极大程度的降低目标进程因拷贝页表而导致的堵塞问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理系统的结构示意图;
图2为本申请实施例提供的一种进程页表加速拷贝方式的示意图;
图3是本申请实施例提供的一种数据处理方法的流程示意图一;
图4是本申请实施例提供的一种目标进程高阶页表拷贝的示意图;
图5是本申请实施例提供的一种子进程低阶页表拷贝的示意图;
图6是本申请实施例提供的一种多线程拷贝页表的示意图;
图7是本申请实施例提供的一种加速页表拷贝方式的示意图;
图8是本申请实施例提供的一种数据处理方法的流程示意图二;
图9是本申请实施例提供的一种数据处理装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请主要涉及云技术中的云计算领域。云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术中的云计算是指云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。在云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。具体的,在本申请实施例中,可以利用云计算,根据需要获取计算力和存储空间,将目标进程的第一页表和内存数据拷贝给子进程。
在本申请实施例中,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是在内存中运行的应用程序,它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。可以理解的是,为了提高设备内存(即设备中的物理内存区域)的灵活性、安全性以及有效管理设备内存,进程调用的是虚拟地址,当进程读写虚拟地址时,设备的内存管理单元会需要根据进程的页表(pagetable),将进程需要读写的虚拟地址转换为物理地址,以访问到物理地址中的内存数据。因此,每个进程均具有自己独立的虚拟内存空间和物理内存空间。进程对应的虚拟内存空间为虚拟地址集合,包括多个虚拟地址,通过该虚拟地址以及进程的页表,可以确定存储了进程的内存数据的物理地址。物理内存空间为物理地址集合,包括多个物理地址,该物理地址中存储了进程的内存数据。
其中,每个进程均具有自己的页表,页表是一种数据结构,它用于管理计算机操作系统中的虚拟内存系统,该页表记录了对应进程的虚拟地址与物理地址之间的映射关系,可以实现从虚拟地址映射到物理地址。页表可以为单级页表、两级页表、三级页表、四级页表以及五级页表等,通常在服务器场景,普遍使用四级页表。两级页表、三级页表、四级页表以及五级页表等是将虚拟地址拆分为多个部分,基于该多个部分生成的。其中,四级页表包括PGD(即页全局目录项)、PUD(即页上级目录项)、PMD(即页中间目录项)、PTE(即页表项)四级。PGD包括若干个PUD,一个PUD包括若干个PMD,一个PMD包括若干个PTE,PTE通常用于维护其对应的物理页的页帧号,即指向虚拟地址对应的物理地址。
以创建目标进程的子进程为例,在目标进程需要创建子进程来处理任务时,可以通过子进程创建函数创建目标进程的子进程,该子进程创建函数可以为Fork函数,该Fork函数是UNIX(一种操作系统)或类UNIX(继承UNIX的设计风格演变出来的系统)中的分叉函数。其中,执行一次Fork函数可以将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程,这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。在通过Fork函数创建子进程时,还需要把目标进程的所有内存数据(如代码段、数据段、堆、栈等)以及第一页表(即目标进程的页表),复制给子进程。
可以理解的是,通过Fork函数生成目标进程的子进程是指为目标进程复制了一个进程,目标进程相当于子进程的父进程,该子进程共享目标进程的内存数据。子进程可以执行与目标进程一样的任务,也可以执行与目标进程不一样的任务,可以自行设置。其中,目标进程通过Fork函数建立子进程时,可以申请该子进程的进程号,以及申请进程控制块PCB(Process Control Block)。该进程控制块PCB用于描述进程的进程属性信息,即进程控制块PCB为用于存放进程的管理和控制信息的数据结构。其中,进程属性信息可以包括进程类型、进程运行状态、进程执行优先级等。进程控制块PCB是进程管理和控制的最重要的数据结构,每一个进程均有一个进程控制块PCB,在创建子进程时,目标进程会建立子进程的进程控制块PCB,伴随子进程运行的全过程,直到子进程撤消而撤消。
其中,进程控制块PCB的结构中包括mm_struct(内存描述结构),在linux(一种操作系统)内核中,进程或者线程是通过mm_struct(内存描述结构)来实现内存管理,每个进程均具有自己独立的mm_struct,用于管理进程的虚拟内存空间。进程的虚拟内存空间可以被分为M个虚拟内存区域(即VMA,数据结构是struct vm_area_struct),M为正整数。每个虚拟内存区域包括起始虚拟地址、该虚拟内存区域的访问权限等信息,每个虚拟内存区域均有相关的区域属性信息和用途。例如,虚拟内存区域001中的虚拟地址用于查询进程的代码数据,虚拟内存区域002中的虚拟地址用于查询进程执行过程产生的数据等。可以理解的是,每个虚拟内存区域由起始虚拟地址到结束虚拟地址(一般是下一个虚拟内存区域的起始虚拟地址)之间的多个具有连续关系的虚拟地址,如虚拟内存区域001包括虚拟地址1、虚拟地址2、虚拟地址3以及虚拟地址4等,该虚拟地址1、虚拟地址2、虚拟地址3以及虚拟地址4是连续的。
在本申请实施例中,目标进程具有自己独立的虚拟内存空间,目标进程的虚拟内存空间可以分为M个第一虚拟内存区域,以及目标进程具有自己独立的物理内存空间,用于存储目标进程的内存数据,如代码段、数据段、堆、栈等。同样的,目标进程执行Fork函数生成子进程后,子进程也具有自己独立的虚拟内存空间,子进程的虚拟内存空间与目标进程的虚拟内存空间不同。子进程的虚拟内存空间也可以划分为M个第二虚拟内存区域,一个第二虚拟内存区域可以是基于一个第一虚拟内存区域生成的,如区域大小相同。
请参见图1,图1是本申请实施例提供的一种数据处理系统的结构示意图。如图1所示,该数据处理系统可以包括服务器10和终端设备集群。该终端设备集群可以包括一个或者多个终端设备,这里将不对终端设备的数量进行限制。如图1所示,具体可以包括终端设备100a、终端设备100b、终端设备100c、…、终端设备100n。如图1所示,终端设备100a、终端设备100b、终端设备100c、…、终端设备100n可以分别与上述服务器10进行网络连接,以便于每个终端设备可以通过该网络连接与服务器10进行数据交互。当然,终端设备100a、终端设备100b、终端设备100c、…、终端设备100n之间可以通过网络直连的方式进行通信,即各个终端设备之间可实现点对点的通信;也就是说,每两个终端设备之间需要进行数据交互时,一个终端设备(即发送终端设备)可将数据直接发送至另一个终端设备(即接收终端)。
其中,终端设备集群中的每个终端设备均可以包括:智能手机、平板电脑、笔记本电脑、台式计算机、智能语音交互设备、智能家电(例如,智能电视)、可穿戴设备、车载终端等具有数据处理功能的智能终端。应当理解,如图1所示的终端设备集群中的每个终端设备均可以安装有具备数据处理功能的应用,当应用运行于各终端设备中时,可以分别与上述图1所示的服务器10之间进行数据交互,如应用具体可以包括数据处理应用、数据推送应用等。为便于理解,本申请实施例可以在图1所示的多个终端设备中选择一个终端设备作为目标终端设备。例如,本申请实施例可以将图1所示的终端设备100a作为目标终端设备,目标终端设备中可以安装有具备数据处理功能的应用,此时,目标终端设备可以通过应用与服务器10之间实现数据交互。在本申请实施例中,从目标进程的页表中确定由子进程拷贝的第二父页表内容,子进程进行第二父页表内容拷贝时,可以采用多个线程进行拷贝,该多个线程的具体数量可以由用户通过具备数据处理功能的应用进行设置。当然,是否允许采用子进程中的多个线程拷贝页表的多队列拷贝方式,也可以由用户通过具有数据处理功能的应用进行设置。
其中,如图1所示,该服务器10可以为终端设备中的应用提供后台服务的设备。该服务器10是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
应当理解,基于图1中的一种数据处理系统可以适用于进程页表拷贝场景,如图2所示,图2为本申请实施例提供的一种进程页表加速拷贝方式的示意图,如图2所示,终端设备20a可以为上述图1的终端设备集群中的任意终端设备,如终端设备20a可以为上述图1中的终端设备100b。服务器20c可以为上述图1中的服务器10,操作对象20b可以为持有终端设备20a的用户。具体的,在目标进程需要创建子进程时,服务器20c可以调用目标进程执行子进程创建函数,创建目标进程的子进程。本申请中的目标进程需要创建子进程时可以是指目标进程执行到子进程创建函数(如Fork函数)代码,一般是需要创建子进程来执行相关任务,以减轻目标进程的任务量,以及提高任务执行效率。服务器20c可以调用目标进程执行Fork函数,将目标进程的源代码复制一份,在内核中运行,创建得到一个子进程。同时,目标进程可以申请子进程的进程号,每个进程均有自己的进程号,用于与其他进程进行区分。同时,目标进程可以根据自己的M个第一虚拟内存区域(即VMA),生成子进程的M个第二虚拟内存区域,一个第二虚拟内存区域基于一个第一虚拟内存区域生成,第二虚拟内存区域与其关联的第一虚拟内存区域的区域大小相同。
目标进程可以将自己的页表(即第一页表)拷贝给子进程。具体的,目标进程可以从自己的mm_struct(内存描述结构)中获取到第一页表的页表地址,根据该第一页表地址获取到目标进程的第一页表。同时,目标进程可以从自己的mm_struct(内存描述结构)中获取到目标进程对应的M个第一虚拟内存区域的M个区域属性信息,一个第一虚拟内存区域对应一个区域属性信息。该区域属性信息可以包括区域类型、区域访问权限等。区域类型可以包括区域内存类型、区域内存属性等,区域内存类型可以为写时复制类型(即Copy-On-Write类型)、匿名页类型、文件页类型等。
写时复制类型的虚拟内存区域不具有对应的独立物理内存区域,而是需要使用共享物理内存区域中的内存数据(即目标进程和子进程共享目标进程的物理内存区域中的内存数据),只有在目标进程或者子进程需要修改共享物理内存区域中的内存数据时,才会生成对应的物理内存区域,将需要修改的内存数据拷贝至新生成的物理内存区域中。写时复制类型(即Copy-On-Write类型)和匿名页类型的虚拟内存区域存储了进程的大量内存数据。区域内存属性可以包括标准页、透明大页、非透明大页、hugetlb、设备类型内存等,hugetlb在linux中熟称标准大页,通常为了应用于大块内存,通过使用该特性,可以大大减少大内存访问导致的缺页异常过多的问题。其中,标准页是指操作系统默认的页大小为4k的页,透明大页、非透明大页以及标准大页均是指页大小超过4k的页。设备类型内存是指对设备可见的内存。
具体的,当M个区域属性信息指示第一页表满足加速拷贝条件时,服务器20c根据M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。其中,当M个区域属性信息指示M个第一虚拟内存区域中存在区域类型为目标区域类型的第一虚拟内存区域时,则确定第一页表满足加速拷贝条件,即M个第一虚拟内存区域中至少一个第一虚拟内存区域的区域类型为目标区域类型时,则确定第一页表满足加速拷贝条件。其中,目标区域类型包括目标区域内存类型和目标区域内存属性,该目标区域内存类型可以为写时复制类型(即Copy-On-Write类型)或者匿名页类型,目标区域内存属性可以为除透明大页、hugetlb以及设备类型内存之外的内存属性。
进一步地,服务器20c调用目标进程对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容。其中,服务器20c在调用子进程对第二父页表内容进行拷贝的时候,可以创建多线程队列,通过该多线程队列中的多个线程对第二父页表内容进行拷贝。其中,多线程队列的多个线程的线程数量可以通过操作对象20b根据需求设置。具体的,终端设备20a可以获取操作对象20b的设置操作所确定的线程数量,将该线程数量发送给服务器20c。服务器20c可以根据操作对象20b设置的线程数量创建多线程队列,通过该多线程队列对第二父页表内容进行拷贝处理,得到第二子页表内容。这样,可以加速子进程拷贝第二父页表内容的效率。
可见,通过子进程拷贝第二父页表内容,目标进程可以得到迅速的解放,在目标进程拷贝完第一父页表内容后,目标进程可以处理其他任务,可以减少目标进程需要拷贝的页表内容,降低目标进程拷贝页表所产生的堵塞时间。根据第一子页表内容和第二子页表内容生成子进程的第二页表,子进程可以根据第二页表从设备内存中获取目标进程的内存数据,这样,可以实现父进程快速拷贝页表,降低父进程的堵塞时间。
进一步地,请参见图3,图3是本申请实施例提供的一种数据处理方法的流程示意图一。如图3所示,该方法可由图1中的任意终端设备来执行,也可以由图1中的服务器10来执行,还可以由图1中的终端设备和服务器共同执行,本申请中用于执行该数据处理方法的设备可以统称为计算机设备。其中,该数据处理方法可以包括但不限于如下步骤:
S101,调用目标进程,根据子进程创建函数创建目标进程的子进程,获取目标进程的第一页表,以及目标进程对应的M个第一虚拟内存区域的M个区域属性信息。
具体的,当需要创建目标进程的子进程来执行相关任务时,计算机设备可以调用目标进程根据子进程创建函数,创建目标进程的子进程,该子进程创建函数可以是指Fork函数,该Fork函数是UNIX(一种操作系统)或类UNIX(继承UNIX的设计风格演变出来的系统)中的分叉函数。通过Fork函数生成目标进程的子进程是指为目标进程复制了一个进程,目标进程相当于子进程的父进程,该子进程共享目标进程的内存数据,相当于是将运行着的进程分成了两个一模一样的进程。同时,计算机设备可以基于目标进程的第一页表生成子进程的第二页表,即计算机设备可以将目标进程的第一页表拷贝给子进程。
其中,第一页表记录了目标进程的虚拟地址与物理地址之间的映射关系,可以实现从虚拟地址映射到物理地址。目标进程可以根据第一页表中记录的虚拟地址,与设备内存中的物理地址之间的映射关系,从设备内存中获取目标进程的内存数据,第一页表中的虚拟地址为目标进程对应的M个第一虚拟内存区域中的虚拟地址,M为正整数。可以理解的是,第一页表记录了目标进程对应的M个第一虚拟内存区域中的虚拟地址,与设备内存中的物理地址之间的映射关系。M个第一虚拟内存区域是为目标进程分配的独立虚拟内存空间进程划分得到的,用于实现设备内存管理。
其中,计算机设备可以获取目标进程对应的M个第一虚拟内存区域分别对应的区域属性信息,即每个第一虚拟内存区域均具有对应的区域属性信息,该区域属性信息可以包括区域类型、区域访问权限等。区域类型可以包括区域内存类型、区域内存属性等,区域内存类型可以为写时复制类型、匿名页类型、文件页类型等,区域内存属性可以包括标准页、透明大页、非透明大页、标准大页、设备类型内存等。
S102,当M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。
具体的,当M个区域属性信息指示第一页表满足加速拷贝条件时,计算机设备可以根据M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。这样,可以避免第一页表不满足加速拷贝条件时,产生由第二子进程拷贝会消耗更多的时间的问题,可以尽可能的降低页表拷贝时间。可以理解的是,第一页表被划分为第一父页表内容和第二父页表内容,第一父页表内容由父进程拷贝,第二父页表内容由子进程拷贝。其中,区域属性信息可以为区域类型,第一页表满足加速拷贝条件可以是指M个区域属性信息指示M个第一虚拟内存区域中,存在区域类型为目标区域类型的第一虚拟内存区域。
换句话说,当M个第一虚拟内存区域中,存在至少一个区域类型为目标区域类型的第一虚拟内存区域时,则确定第一页表满足加速拷贝条件。目标区域类型的虚拟内存区域在设备内存中不具有对应的独立物理内存区域,目标区域类型可以包括目标区域内存类型和目标区域内存属性,目标区域内存类型可以为Copy-On-Write类型和匿名页类型,目标区域内存属性可以为除透明大页、hugetlb以及设备类型内存之外的内存属性。可以理解的是,当M个第一虚拟内存区域中存在区域内存类型为Copy-On-Write类型和匿名页类型,且区域内存属性为除透明大页、hugetlb以及设备类型内存之外的内存属性的第一虚拟内存区域时,则确定第一页表满足加速拷贝条件。由于Copy-On-Write类型和匿名页类型的虚拟内存区域中存储了进程的大量内存数据,占用了大量内存,因此需要消耗大量页表拷贝时间。采用本申请实施例中的加速页表拷贝方式,可以大大地降低目标进程拷贝页表的时间,解决父进程堵塞的问题。
可选的,区域属性信息可以包括第一虚拟内存区域的区域类型,计算机设备对第一页表进行划分的具体方式可以包括:当M个区域属性信息指示M个第一虚拟内存区域中,存在区域类型为目标区域类型的第一虚拟内存区域时,确定第一页表满足加速拷贝条件。统计M个第一虚拟内存区域中区域类型为目标区域类型的第一虚拟内存区域的区域数量,根据区域数量和M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。
具体的,计算机设备确定第一页表满足加速拷贝条件时,由于M个第一虚拟内存区域的区域类型可以均为目标区域类型,当然,也可以M个第一虚拟内存区域中部分第一虚拟内存区域的区域类型为目标区域类型,部分第一虚拟内存区域的区域类型为非目标区域类型,该非目标区域类型为目标区域类型之外的类型。计算机设备可以统计M个第一虚拟内存区域中区域类型为目标区域类型的第一虚拟内存区域的区域数量,根据区域数量和M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。由于目标进程拷贝一部分页表内容,需要增加一些步骤以调用子进程拷贝一部分页表内容,当第一虚拟内存区域的区域类型为非目标区域类型时,非目标区域类型的第一虚拟内存区域的虚拟地址所对应的内存较小,让子进程参与拷贝,可能会产生由第二子进程拷贝消耗更多的时间的问题。因此,计算机设备确定第一页表满足加速拷贝条件时,才让子进程参与页表拷贝,这样可以尽可能的降低页表拷贝时间。
可选的,计算机设备根据区域数量和M个区域属性信息,对第一页表进行划分的具体方式可以包括:若区域数量等于M,则获取目标进程中待处理任务对应的任务量。根据任务量,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。
具体的,若区域数量等于M,即M个第一虚拟内存区域的区域类型均为目标区域类型,则可以获取目标进程中待处理任务对应的任务量,根据该任务量,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。例如,目标进程的任务量越多,则将第一页表中越少的页表内容,作为目标进程对应的第一父页表内容;目标进程的任务量越少,则将第一页表中越多的页表内容,作为目标进程对应的第一父页表内容。划分得到目标进程对应的第一父页表内容后,将第一页表中的剩余页表内容(即除第一父页表内容之外的页表内容)确定子进程对应的第二父页表内容。这样,由目标进程和子进程联合对第一页表进程拷贝,以及根据目标进程的任务量自适应对第一页表进行划分,在避免目标进程堵塞的情况下,为目标进程分配适量的页表内容拷贝量,提高页表拷贝的准确性和安全性,同时可以降低目标进程拷贝第一页表导致的堵塞时间。
当然,计算机设备也可以根据操作对象预先设置的页表划分规则,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。例如,以第一页表为四级页表为例,该四级页表包括PGD(即页全局目录项)、PUD(即页上级目录项)、PMD(即页中间目录项)以及PTE(即页表项)四级。页表划分规则可以用于指示将第一页表中的PGD(即页全局目录项)、PUD(即页上级目录项)以及PMD(即页中间目录项)确定为由目标进程拷贝的第一父页表内容,即让目标进程拷贝到PMD粒度,将第一页表中的PTE(即页表项)确定为由子进程拷贝的第二父页表内容。可以理解的是,目标进程只拷贝到第一页表中的PMD粒度,剩余的页表内容以及内存数据拷贝不再由父进程去完成,而是由子进程去处理。这样,目标进程能得到迅速的解放,去处理其他事务,通过这种方法优化目标进程的页表拷贝耗时问题。
当然,页表划分规则也可以用于指示将第一页表中的PGD(即页全局目录项)以及PUD(即页上级目录项)确定为由目标进程拷贝的第一父页表内容,将第一页表中的PMD(即页中间目录项)以及PTE(即页表项)确定为由子进程拷贝的第二父页表内容。当然,页表划分规则也可以用于指示将第一页表中的PGD(即页全局目录项)确定为由目标进程拷贝的第一父页表内容,将第一页表中的PUD(即页上级目录项)、PMD(即页中间目录项)以及PTE(即页表项)确定为由子进程拷贝的第二父页表内容。可以理解的,页表划分规则可以任意指定第一页表中由目标进程拷贝的第一父页表内容以及由子进程拷贝的第二父页表内容。
可选的,当M个区域属性信息指示M个第一虚拟内存区域分别对应的区域类型均为目标区域类型时,调用子进程,对第一页表进行拷贝处理,得到子进程的第二页表。可以理解的是,当M个第一虚拟内存区域分别对应的区域类型均为目标区域类型时,由子进程单独拷贝第一页表的全部页表内容,目标进程不需要进行页表拷贝,直接避免因目标进程拷贝第一页表所带来的堵塞问题。
可选的,在区域数量小于M的情况下,计算机设备根据区域数量和M个区域属性信息,对第一页表进行划分的具体方式可以包括:若区域数量小于M,则从M个第一虚拟内存区域中,筛选出区域类型为目标区域类型的匹配第一虚拟内存区域。从第一页表中,确定匹配第一虚拟内存区域和剩余第一虚拟内存区域分别关联的父页表内容;剩余第一虚拟内存区域为M个第一虚拟内存区域中除匹配第一虚拟内存区域之外的区域。对匹配第一虚拟内存区域关联的父页表内容进行划分,得到目标进程对应的第一筛选父页表内容和子进程对应的第二筛选父页表内容。将剩余第一虚拟内存区域关联的父页表内容以及第一筛选父页表内容,确定为目标进程对应的第一父页表内容,将第二筛选父页表内容确定为子进程对应的第二父页表内容。
具体的,目标区域类型的第一虚拟内存区域与非目标区域类型的第一虚拟内存区域分别对应的页表内容的拷贝方式不一样。若区域数量小于M,即M个第一虚拟内存区域中部分第一虚拟内存区域的区域类型为目标区域类型,部分第一虚拟内存区域的区域类型为非目标区域类型,则计算机设备可以从M个第一虚拟内存区域中,筛选出区域类型为目标区域类型的第一虚拟内存区域,作为匹配第一虚拟内存区域。计算机设备可以将M个第一虚拟内存区域中除匹配第一虚拟内存区域之外的第一虚拟内存区域,确定为剩余第一虚拟内存区域。
由于第一页表记录了目标进程的虚拟地址与物理地址之间的映射关系,且第一页表中的虚拟地址为目标进程对应的M个第一虚拟内存区域中的虚拟地址。因此,计算机设备可以从第一页表中,确定匹配第一虚拟内存区域和剩余第一虚拟内存区域分别关联的父页表内容。匹配第一虚拟内存区域关联的父页表内容是指第一页表中记录的匹配第一虚拟内存区域中的虚拟地址与物理地址之间的映射关系,剩余第一虚拟内存区域关联的父页表内容是指第一页表中记录的剩余第一虚拟内存区域中的虚拟地址与物理地址之间的映射关系。
由于页表原本是由目标进程拷贝的,而且剩余第一虚拟内存区域的区域类型为非目标区域类型,剩余第一虚拟内存区域所对应的物理内存区域较小,剩余第一虚拟内存区域关联的父页表内容较少。因此可以将剩余第一虚拟内存区域关联的父页表内容确定为目标进程拷贝的页表内容,并不会花费目标进程较多的时间,且能够确定页表拷贝流程的变动性较小。由于匹配第一虚拟内存区域的区域类型为目标区域类型,剩余第一虚拟内存区域所对应的物理内存区域较大,匹配第一虚拟内存区域关联的父页表内容较多。因此,可以对匹配第一虚拟内存区域关联的父页表内容进行划分,得到由目标进程拷贝的第一筛选父页表内容和由子进程拷贝的第二筛选父页表内容。可见,采用子进程来辅助拷贝第一页表,可以提高目标进程拷贝第一页表的效率,减少目标进程堵塞的时间。其中,计算机设备可以根据目标进程的任务量或者页表划分规则,对匹配第一虚拟内存区域关联的父页表内容进行划分,得到由目标进程拷贝的第一筛选父页表内容和由子进程拷贝的第二筛选父页表内容,具体可以参考上述区域数量等于M时,对第一页表的划分方式,本申请实施例在此不再赘述。
具体的,在区域数量小于M时,将剩余第一虚拟内存区域关联的父页表内容以及第一筛选父页表内容,确定为目标进程对应的第一父页表内容,将第二筛选父页表内容确定为子进程对应的第二父页表内容。
S103,调用目标进程,对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容。
具体的,计算机设备可以调用目标进程,对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容。可见,目标进程拷贝完第一父页表内容后,第一页表中剩余的页表内容和内存拷贝不再由目标进程去完成,而是由子进程去处理。这样,目标进程拷贝完成第一父页表内容后,可以去执行目标进程的待处理事务,可以解决页表拷贝导致目标进程堵塞的问题,将原先堵塞时间由内存大小导致的几十毫秒到几秒级别,优化到只有几百微秒,极大程度的减少了目标进程堵塞时间。
可选的,在区域数量等于M,且由目标进程和子进程联合拷贝第一页表(即计算机设备对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容)时,计算机设备调用目标进程,对第一父页表内容进行拷贝处理,得到子进程的第一子页表内容的具体方式可以包括:调用目标进程,获取子进程对应的M个第二虚拟内存区域。一个第二虚拟内存区域与一个第一虚拟内存区域关联。根据第一筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成子进程的第一筛选子页表内容;关联第二虚拟内存区域为M个第二虚拟内存区域中,与匹配第一虚拟内存区域关联的第二虚拟内存区域。根据剩余第一虚拟内存区域关联的父页表内容,以及M个第二虚拟内存区域中与剩余第一虚拟内存区域关联的第二虚拟内存区域,生成子进程的剩余子页表内容。将第一筛选子页表内容和剩余子页表内容,确定为子进程的第一子页表内容。
具体的,计算机设备可以调用目标进程,获取子进程对应的M个第二虚拟内存区域,该M个第二虚拟内存区域是基于对子进程的虚拟内存空间进行划分得到的,一个第二虚拟内存区域与一个第一虚拟内存区域关联,即一个第二虚拟内存区域的区域大小可以与对应第一虚拟内存区域的区域大小相同。其中,一个第二虚拟内存区域的虚拟地址可以与对应第一虚拟内存区域的虚拟地址分别关联。计算机设备可以从M个第二虚拟内存区域中,确定与匹配第一虚拟内存区域关联的第二虚拟内存区域,作为关联第二虚拟内存区域。计算机设备可以根据第一筛选父页表内容的内容属性,以及关联第二虚拟内存区域,生成子进程的第一筛选子页表内容。同时,计算机设备可以从M个第二虚拟内存区域中,确定与剩余第一虚拟内存区域关联的第二虚拟内存区域,根据剩余第一虚拟内存区域关联的父页表内容,以及M个第二虚拟内存区域中与剩余第一虚拟内存区域关联的第二虚拟内存区域,生成子进程的剩余子页表内容。进一步地,计算机设备可以将第一筛选子页表内容和剩余子页表内容,确定为子进程的第一子页表内容。
可选的,计算机设备根据剩余第一虚拟内存区域关联的父页表内容,以及M个第二虚拟内存区域中与剩余第一虚拟内存区域关联的第二虚拟内存区域,生成子进程的剩余子页表内容的具体方式可以包括:调用目标进程,从M个第二虚拟内存区域中确定与剩余第一虚拟内存区域关联的第二虚拟内存区域。根据剩余第一虚拟内存区域关联的父页表内容的内容属性,以及与剩余第一虚拟内存区域关联的第二虚拟内存区域中的虚拟地址,生成子进程的剩余子页表内容。
具体的,以第一页表为四级页表为例,若第一页表为四级页表时,剩余第一虚拟内存区域关联的父页表内容的内容属性用于指示,剩余第一虚拟内存区域关联的父页表内容为四级页表内容(即PGD、PUD、PMD、PTE四级页表内容)。计算机设备可以根据关联虚拟地址,生成与关联虚拟地址关联的四级页表内容,将该与关联虚拟地址关联的四级页表内容确定为子进程的剩余子页表内容,该关联虚拟地址为剩余第一虚拟内存区域关联的第二虚拟内存区域中的虚拟地址。具体的,计算机设备可以将关联虚拟地址的页号划分成四个部分(即第一关联页号部分、第二关联页号部分、第三关联页号部分以及第四关联页号部分),在设备内存中确定第一存储区域,该第一存储区域用于存储与关联虚拟地址关联的PGD(即页全局目录项)。进一步地,计算机设备可以在设备内存中确定第二存储区域,将第二存储区域的物理地址确定为与关联虚拟地址关联的PGD(即页全局目录项),将该第二存储区域的物理地址与第一关联页号部分关联存储至第一存储区域中。
进一步地,计算机设备可以在设备内存中确定第三存储区域,将第三存储区域的物理地址确定为与关联虚拟地址关联的PUD(即页上级目录项),将该第三存储区域的物理地址与第二关联页号部分关联存储至第二存储区域中。计算机设备可以在设备内存中确定第四存储区域,将第四存储区域的物理地址确定为与关联虚拟地址关联的PMD(即页中间目录项),将该第四存储区域的物理地址与第三关联页号部分关联存储至第三存储区域中。进一步地,计算机设备可以在设备内存中确定第五存储区域(即虚拟地址对应的物理地址),将第五存储区域的物理地址确定为与关联虚拟地址关联的PTE(即页表项),将该第五存储区域的物理地址与第四关联页号部分关联存储至第四存储区域中。即第五存储区域的物理地址为关联虚拟地址对应的物理地址,将与关联虚拟地址关联的PGD、与关联虚拟地址关联的PUD、与关联虚拟地址关联的PMD以及与关联虚拟地址关联的PTE(即页表项),确定为子进程的剩余子页表内容。这样,通过子进程的剩余子页表内容便可以实现关联虚拟地址到物理地址之间的映射。同时,计算机设备可以将剩余第一虚拟内存区域对应的物理内存区域中的内存数据,拷贝至关联虚拟地址对应的物理地址中,实现子进程共享目标进程在剩余第一虚拟内存区域对应的内存数据。
当然,第一页表的页表类型也可以为其他页表类型,如单级页表、两级页表、三级页表、五级页表等,当第一页表的页表类型不同时,剩余第一虚拟内存区域关联的父页表内容的内容属性也不同。例如,第一页表为三级页表时,剩余第一虚拟内存区域关联的父页表内容的内容属性用于指示,剩余第一虚拟内存区域关联的父页表内容为三级页表内容。例如,第一页表为五级页表时,剩余第一虚拟内存区域关联的父页表内容的内容属性用于指示,剩余第一虚拟内存区域关联的父页表内容为五级页表内容。
可选的,由于剩余第一虚拟内存区域关联的父页表内容不需要子进程拷贝,因此为了便于子进程快速获取到匹配第一虚拟内存区域以及加速第二父页表内容拷贝,计算机设备可以获取匹配第一虚拟内存区域的区域索引信息,在关联第二虚拟内存区域中,添加区域索引信息以及页表拷贝标识。其中,区域索引信息用于获取到匹配第一虚拟内存区域,这样可以便于子进程快速获取到匹配第一虚拟内存区域。页表拷贝标识用于指示关联第二虚拟内存区域需要进行第二父页表内容拷贝操作。这样,可以便于子进程快速获取到需要进程第二父页表拷贝的关联第二虚拟内存区域,提高子进程页表拷贝的效率。
可选的,第一页表的页表类型可以包括单级页表、两级页表、三级页表、四级页表以及五级页表等,当第一页表的页表类型不同时,第一筛选父页表内容的内容属性可能也不同。第一筛选父页表内容是对匹配第一虚拟内存区域关联的父页表内容进行划分得到的,第一筛选父页表内容可以为第一页表中的前x级页表内容,该x为小于第一页表的级数的正整数。例如,第一页表为四级页表时,第一筛选父页表内容可以为第一级页表内容(即PGD),或者第一级页表内容(即PGD)和第二级页表内容(即PUD),或者第一级页表内容(即PGD)、第二级页表内容(即PUD)以及第三级页表内容(即PMD)。例如,第一页表为三级页表时,第一筛选父页表内容可以为第一级页表内容,或者第一级页表内容和第二级页表内容。
可选的,以第一页表为四级页表为例,计算机设备根据第一筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成子进程的第一筛选子页表内容的具体方式可以包括:若第一筛选父页表内容的内容属性用于指示,第一筛选父页表内容为第一页表中的第一级页表内容、第二级页表内容以及第三级页表内容,则根据关联第二虚拟内存区域中的目标虚拟地址,生成与目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容。将与目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容,确定为子进程的第一筛选子页表内容。
具体的,若第一筛选父页表内容为第一页表中的第一级页表内容(即PGD)、第二级页表内容(即PUD)以及第三级页表内容(即PMD),即第一筛选父页表内容为第一页表中的高阶页表内容,则计算机设备可以将关联第二虚拟内存区域中的目标虚拟地址的页号进行划分四个部分,即第一目标页号部分、第二目标页号部分、第三目标页号部分以及第四目标页号部分。计算机设备可以检测是否已经存在第一目标页号部分、第二目标页号部分以及第三目标页号部分分别对应的存储区域,若存在则不需要从设备内存中分配物理区域,若不存在则需要从设备内存中分配物理区域。
具体,若上述剩余第一虚拟内存区域关联的父页表内容先拷贝完成,即已经生成子进程的剩余子页表内容,计算机设备可以检测第一目标页号部分与上述第一关联页号部分是否相同。若第一目标页号部分与上述第一关联页号部分相同,则检测第二目标页号部分与上述第二关联页号部分是否相同。若第二目标页号部分与上述第二关联页号部分相同,则检测第三目标页号部分与上述第三关联页号部分是否相同。若第三目标页号部分与上述第三关联页号部分相同,则将与关联虚拟地址关联的PGD、与关联虚拟地址关联的PUD以及与关联虚拟地址关联的PMD,确定为与目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容。
若第一目标页号部分与上述第一关联页号部分不相同,则从设备内存中确定第六存储区域,将第六存储区域的物理地址确定为与目标虚拟地址关联的PGD,将第六存储区域与第一目标页号部分关联存储至上述第一存储区域中。从设备内存中确定第七存储区域,将第七存储区域的物理地址确定为与目标虚拟地址关联的PUD,将第七存储区域与第二目标页号部分关联存储至上述第六存储区域中。从设备内存中确定第八存储区域,将第八存储区域的物理地址确定为与目标虚拟地址关联的PMD,将第八存储区域与第三目标页号部分关联存储至上述第七存储区域中。
若第一目标页号部分与上述第一关联页号部分相同,且第二目标页号部分与上述第二关联页号部分不相同,则将与关联虚拟地址关联的PGD确定为与目标虚拟地址关联的PGD,同时按照上述方法依次生成与目标虚拟地址关联的PUD和PMD。若第二目标页号部分与上述第二关联页号部分相同,且第三目标页号部分与上述第三关联页号部分不相同,则将与关联虚拟地址关联的PGD和PUD确定为与目标虚拟地址关联的PGD和PUD,依照上述方法依次生成与目标虚拟地址关联的PMD。计算机设备可以将与目标虚拟地址关联的第一级页表内容(即目标虚拟地址关联的PGD)、第二级页表内容(即与目标虚拟地址关联的PUD)以及第三级页表内容(即与目标虚拟地址关联的PMD),确定为子进程的第一筛选子页表内容。
如图4所示,图4是本申请实施例提供的一种目标进程高阶页表拷贝的示意图,如图4所示,以第一页表为四级页表,其第一筛选父页表内容为高阶页表内容为例,该高阶页表内容包括第一页表中的第一级页表内容(即PGD)、第二级页表内容(即PUD)以及第三级页表内容(即PMD)。如图4所示,计算机设备调用目标进程拷贝第一筛选父页表内容中的PGD、PUD以及PMD页表内容时,可以遍历目标进程的M个第一虚拟内存区域和子进程的M个第二虚拟内存区域,将第一筛选父页表内容中的PGD、PUD以及PMD页表内容拷贝给子进程,得到子进程的第一筛选子页表内容中的PGD、PUD以及PMD页表内容。即第一筛选子页表内容中的PGD包括第一筛选子页表内容中PUD的物理地址,第一筛选子页表内容中的PUD包括第一筛选子页表内容中的PMD的物理地址。由于第一筛选子页表内容中的PMD的物理地址还未生成,此时,第一筛选子页表内容中的PMD可以为空。具体可以参见上述生成子进程的第一筛选子页表内容的内容,本申请实施例在此不再赘述。同时,由于第二筛选父页表内容(即PMD粒度下的页表内容)由子进程进行拷贝,目标进程拷贝完成第一父页表内容继续处理其他事务的过程中,可能会对第二父页表内容进行更改,因此可以对第二父页表内容设置写保护标识。这样,可以确保子进程拷贝第二父页表内容的过程中,第二父页表内容不会被更改,以确保第一页表拷贝的准确性。由于PMD页表内容中记录有flag标签,计算机设备可以将该第一筛选父页表内容中PMD的flag标签设置为写保护标签(即将第一筛选父页表内容中PMD粒度下的页表内容设置为不可编辑状态)。
可选的,计算机设备调用子进程,对第二父页表内容进行拷贝处理,得到子进程的第二子页表内容的具体方式可以包括:调用子进程,获取子进程对应的M个第二虚拟内存区域。子进程可以遍历子进程对应的M个第二虚拟内存区域,从子进程对应的M个第二虚拟内存区域中,确定携带页表拷贝标识的第二虚拟内存区域,作为关联第二虚拟内存区域。关联第二虚拟内存区域与匹配第一虚拟内存区域关联,没有携带页表拷贝标识的第二虚拟内存区域不需要进行第二父页表内容拷贝。由于目标进程已经完成与剩余第一虚拟内存区域关联的第二虚拟内存区域的页表内容拷贝,因此通过页表拷贝标识,可以快速获取到需要子进程进行拷贝的第二虚拟内存区域,提高子进程的页表拷贝效率。由于第二筛选父页表内容记录了匹配第一虚拟内存区域中的目标虚拟地址与物理地址之间的映射关系,因此计算机设备可以从第二筛选父页表内容中,确定匹配第一虚拟内存区域对应的目标物理地址。进一步地,计算机设备可以根据目标物理地址、第二筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成子进程的第二子页表内容。关联第二虚拟内存区域为M个第二虚拟内存区域中,与匹配第一虚拟内存区域关联的第二虚拟内存区域。其中,目标物理地址属于设备内存,即目标物理地址为设备内存中的地址。
可选的,根据目标物理地址、第二筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成子进程的第二子页表内容的具体方式可以包括:调用子进程,根据第二筛选父页表内容的内容属性,以及关联第二虚拟内存区域包括的目标虚拟地址,生成与目标虚拟地址关联的初始子页表内容。将目标物理地址,添加至与目标虚拟地址关联的初始子页表内容,得到子进程的第二子页表内容。
具体的,由于目标进程对应的第一筛选父页表内容和子进程对应的第二筛选父页表内容,是对匹配第一虚拟内存区域关联的父页表内容进行划分得到。因此,第一筛选父页表内容的内容属性不同时,则第二筛选父页表内容的内容属性也会随之不同。例如,以第一页表为四级页表为例,若第一筛选父页表内容的内容属性指示,第一筛选父页表内容为第一页表中的第一级页表内容(即PGD)、第二级页表内容(即PUD)以及第三级页表内容(即PMD),则第二筛选父页表内容的内容属性指示,第二筛选父页表内容为第一页表中的第四级页表内容(即PMD)。若第一筛选父页表内容的内容属性指示,第一筛选父页表内容为第一页表中的第一级页表内容(即PGD)以及第二级页表内容(即PUD),则第二筛选父页表内容的内容属性指示,第二筛选父页表内容为第一页表中的第三级页表内容(即PMD)以及第四级页表内容(即PMD)。因此,计算机设备可以根据第二筛选父页表内容的内容属性,以及关联第二虚拟内存区域包括的目标虚拟地址,生成与目标虚拟地址关联的初始子页表内容。将目标物理地址,添加至与目标虚拟地址关联的初始子页表内容,得到子进程的第二子页表内容。
可选的,以第一页表为四级页表,第一筛选父页表内容的内容属性指示,第一筛选父页表内容为第一页表中的第一级页表内容(即PGD)、第二级页表内容(即PUD)以及第三级页表内容(即PMD),第二筛选父页表内容的内容属性指示第二筛选父页表内容为第一页表中的第四级页表内容(即PTE)为例,计算机设备生成与目标虚拟地址关联的初始子页表内容的具体方式可以包括:若第二筛选父页表内容的内容属性指示第二筛选父页表内容为第一页表中的第四级页表内容,则根据关联第二虚拟内存区域包括的目标虚拟地址,生成与目标虚拟地址关联的第四级页表内容。将与目标虚拟地址关联的第四级页表内容,确定为与目标虚拟地址关联的初始子页表内容。
具体的,计算机设备可以根据上述对目标虚拟地址的页号进行划分得到的第四目标页号部分,生成与目标虚拟地址关联的第四级页表内容(即与目标虚拟地址关联的PTE),将与目标虚拟地址关联的第四级页表内容,确定为与目标虚拟地址关联的初始子页表内容。计算机设备可以将匹配第一虚拟内存区域对应的目标物理地址,作为关联第二虚拟内存区域对应的物理地址,将目标物理地址与第四目标页号部分关联存储至与目标虚拟地址关联的PTE。这样,可以实现子进程与目标进程之间的内存数据共享。可以理解的是,将第一页表拷贝给子进程是指将第一页表中关于目标进程对应的虚拟内存区域中的虚拟地址与物理地址之间的映射关系,拷贝给子进程,这样,可以实现子进程与目标进程之间的内存数据共享。
如图5所示,图5是本申请实施例提供的一种子进程低阶页表拷贝的示意图,如图5所示,以第一页表为四级页表,其第二筛选父页表内容为低阶页表内容为例,该低阶页表内容包括第一页表中的第四级页表内容(即PTE页表内容)。如图5所示,由于目标进程已经完成与剩余第一虚拟内存区域关联的第二虚拟内存区域的页表内容拷贝,即M个第二虚拟内存区域中部分第二虚拟内存区域已完成页表拷贝。因此计算机设备在调用子进程拷贝第二筛选父页表内容中的PTE页表内容时,可以遍历目标进程的M个第一虚拟内存区域,从M个第一虚拟内存区域中确定需要进行低阶页表拷贝的第二虚拟内存区域,得到关联第二虚拟内存区域。
同时,子进程可以通过关联第二虚拟内存区域中的区域索引信息,从目标进程的M个第一虚拟内存区域中,确定与关联第二虚拟内存区域关联的匹配第一虚拟内存区域。计算机设备可以根据关联第二虚拟内存区域中的目标虚拟地址的第四目标页表部分,在设备内存中确定一个存储区域,作为PTE存储区域,同时将该PTE存储区域的物理地址与上述第三目标页表部分关联存储在PMD中。可以根据关联第二虚拟内存区域中的目标虚拟地址以及匹配第二虚拟内存区域对应的物理地址,生成与目标虚拟地址关联的物理地址(即页表项),将每个目标虚拟地址关联的物理地址与目标虚拟地址关联存储在PTE存储区域中。即将第四目标页表部分与目标虚拟地址关联的物理地址关联存储。同时,计算机设备可以去除第二筛选父页表内容的写保护标识(即将PMD的flag标签恢复为原来标签(如可读写标签)),即将第二筛选父页表内容恢复为可编辑状态。这样,目标进程可以继续对第二父页表内容进行写操作,或者对第二父页表内容记录的物理地址中的内存数据进行写操作。
可选的,本申请实施例在调用子进程拷贝第二父页表内容时,可以调用子进程创建多线程队列,该多线程队列中的多个线程的线程数量可以由操作对象(即用户)根据需求进程设置。通过多线程队列中的多个线程,对第二父页表内容进程拷贝,可以提高子进程页表拷贝的效率。以第二父页表内容为计算机设备对匹配第一虚拟内存区域关联的父页表内容进行划分得到的为例,计算机设备根据目标物理地址、第二筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成子进程的第二子页表内容的具体方式可以包括:调用子进程,创建N个线程;N为大于1的整数。获取关联第二虚拟内存区域的区域数量,根据区域数量以及N个线程的线程数量,将关联第二虚拟内存区域分配给N个线程。调用N个线程,根据各自对应的关联第二虚拟内存区域、目标物理地址,以及第二筛选父页表内容的内容属性,生成子进程的第二子页表内容。
具体的,计算机设备可以调用子进程创建N个线程,N为大于1的正整数,该线程数量N可以由操作对象根据具体需求设置。该线程数量N也可以由计算机设备根据第二筛选父页表内容的内容数量确定,例如,第二筛选父页表内容的内容数量越多,则N越大;第二筛选父页表内容的内容数量越少,则N越小。当然,该线程数量N也可以由计算机设备根据关联第二虚拟内存区域的区域数量确定,例如,关联第二虚拟内存区域的区域数量越多,则N越大;关联第二虚拟内存区域的区域数量越少,则N越小。例如,一个关联第二虚拟内存区域由一个线程进程拷贝。
计算机设备可以获取关联第二虚拟内存区域的区域数量,根据区域数量以及N个线程的线程数量,将关联第二虚拟内存区域分配给N个线程。例如,将y个关联第二虚拟内存区域分配给一个线程进程,y为区域数量与线程数量之间的比值,y为正整数。其中,可以将关联第二虚拟内存区域中连续的关联第二虚拟内存区域,分配给同一个线程处理。计算机设备调用N个线程,根据各自对应的关联第二虚拟内存区域、目标物理地址,以及第二筛选父页表内容的内容属性,生成子进程的第二子页表内容。具体的,各个线程可以根据各自对应的关联第二虚拟内存区域中包括的目标虚拟地址,以及第二筛选父页表内容的内容属性,生成对应的页表内容,线程具体拷贝内容可以参考上述生成子进程的第二子页表内容的内容,本申请实施例在此不再赘述。
例如,N个线程包括线程r,r为小于或者等于N的正整数,以为线程r分配关联第二虚拟内存区域为例,计算机设备可以获取区域数量与N个线程的线程数量之间的比值。根据比值,从关联第二虚拟内存区域中确定目标第二虚拟内存区域;将目标第二虚拟内存区域分配给线程r,并在目标第二虚拟内存区域中添加已分配标识,该已分配标识用于指示目标第二虚拟内存区域处于已分配状态。这样,可以防止重复操作或者非法访问关联第二虚拟内存区域,拷贝完成后,置零该已分配标识(或者移除该已分配标识),才表示该对应的关联第二虚拟内存区域拷贝完成。最后所有线程下不支持主动调度让出,确保多线程拷贝一次完成。为了保证修改的代码对内存造成更低的影响,还增加了基于cgroup粒度(多线程队列)功能支持开关,做到即开即用,大大降低了代码引入造成的风险。本申请实施例在redis类业务上进行了验证,技术效果相比于原生Fork操作,阻塞时间大大减少,性能提升明显。而且阻塞时间非常稳定,目标进程的页表拷贝时间不会因为页表的数据量增加而出现倍数级增长,即目标进程的页表拷贝时间不随拷贝内存大小影响,固定在百微妙级别。
图6所示,图6是本申请实施例提供的一种多线程拷贝页表的示意图,如图6所示,以第一页表为四级页表,目标进程拷贝高阶页表内容,子进程拷贝低阶页表内容为例,该高阶页表内容包括第一页表中的第一级页表内容(即PGD)、第二级页表内容(即PUD)以及第三级页表内容(即PMD),该低阶页表内容包括第一页表中的第四级页表内容(即PTE)。如图6所示,计算机设备调用目标进程,将第一筛选父页表内容中的PGD、PUD以及PMD页表内容拷贝给子进程,得到子进程的第一筛选子页表内容中的PGD、PUD以及PMD页表内容,即目标进程拷贝到PMD粒度。目标进程便完成页表拷贝任务,可以继续处理其他事务,进而可以降低目标进程堵塞时间。
进一步地,计算机设备可以调用子进程,确定需要进行低阶拷贝的关联第二虚拟内存区域,即第二虚拟内存区域w001、第二虚拟内存区域w002等。同时,子进程可以创建N个线程,即线程n001、线程n002等,将需要进行低阶拷贝的关联第二虚拟内存区域分配给多线程队列中的N个线程,如一个关联第二虚拟内存区域分配给一个线程。N个线程可以根据各自对应的关联第二虚拟内存区域中的区域索引信息,获取到与关联第二虚拟内存区域关联的匹配第一虚拟内存区域,即第一虚拟内存区域p001、第一虚拟内存区域p002等,一个关联第二虚拟内存区域与一个匹配第一虚拟内存区域关联。进一步地,N个线程可以根据关联第二虚拟内存区域和匹配第一虚拟内存区域,在设备内存中确定一个存储区域,作为PTE存储区域,同时将该PTE存储区域的物理地址存储在PMD中。同时,N个线程可以匹配第一虚拟内存区域中的虚拟地址对应的物理地址,确定关联第二虚拟内存区域中的目标虚拟地址对应的物理地址,将目标虚拟地址对应的物理地址与目标虚拟地址关联存储在PTE存储区域中,得到第二子页表内容。同时,计算机设备可以去除第二筛选父页表内容的写保护标识。
其中,多线程队列中的N个线程的个数可以由操作对象(即用户)设定,以及是否允许关联第二虚拟内存区域进行多线程队列拷贝操作,都提供用户态接口设定操作,供操作对象自由选择。可以理解的是,在目标进程进行高阶页表拷贝完成后,子进程的低阶页表拷贝任务并未完成,但这部分低阶页表任务目标进程将不再参与,而是由子进程自己处理,在子进程得到调度时,会暂停子进程其他事务处理,先处理完低阶页表拷贝任务。
S104,根据第一子页表内容和第二子页表内容生成子进程的第二页表。
具体的,计算机设备可以对第一子页表内容和第二子页表内容进行合并,得到子进程的第二页表,该第二页表记录了子进程的M个第二虚拟内存区域,与设备内存之间的映射关系。子进程可以根据第二页表,从设备内存中获取目标进程的内存数据,以实现子进程共享目标进程的内存数据。当然,当子进程生成自己独有的内存数据时,会对第二页表进行更新,以根据更新后的第二页表获取到子进程自己的内存数据。可见,本申请实施例通过子进程拷贝第二父页表内容,目标进程可以得到迅速的解放,在目标进程拷贝完第一父页表内容后,目标进程可以处理其他任务,可以减少目标进程需要拷贝的页表内容,降低目标进程拷贝页表所产生的堵塞时间。总的来讲,通过本申请实施,目标进程执行Fork函数时的页表拷贝耗时大大降低了,而且不再受页表大小(即内存大小)的影响,可以使得目标进程执行Fork函数的耗时固定在某个时间段内,此外子进程通过加速低阶页表拷贝,同样将子进程的页表拷贝耗时进行了加速优化。
如图7所示,图7是本申请实施例提供的一种加速页表拷贝方式的示意图,如图7所示,目标进程执行子进程创建操作(如执行Fork函数)后,创建目标进程的子进程,同时将目标进程的第一页表拷贝给子进程。在将目标进程的第一页表拷贝给子进程的过程,可以将第一页表划分为第一父页表内容(如上述高阶页表内容)和第二父页表内容(如上述低阶页表内容)。由目标进程执行关于第一父页表内容的高阶页表拷贝,以及由子进程执行关于第二父页表内容的低阶页表拷贝。当目标进程执行高阶页表拷贝完成后,可以继续处理目标进程的待处理任务,这样可以降低目标进程拷贝页表所带来的堵塞时间。同时,子进程可以开始运行,执行低阶页表拷贝任务,对第二父页表内容进行拷贝。子进程也可以创建多线程队列,根据多线程队列进行低阶页表拷贝,实现异步加速第一页表的拷贝效率。可见,本申请实施例可以通过子进程拷贝第二父页表内容,目标进程可以得到迅速的解放,在目标进程拷贝完第一父页表内容后,目标进程可以处理其他任务,可以减少目标进程需要拷贝的页表内容,降低目标进程拷贝页表所产生的堵塞时间。
本申请实施例提供一种加速页表拷贝方式,当目标进程对应的M个第一虚拟内存区域的M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息对目标进程的第一页表进行划分,得到由目标进程拷贝的第一父页表内容和由第二子进程拷贝的第二父页表内容。这样,可以避免第一页表不满足加速拷贝条件时,产生由第二子进程拷贝会消耗更多的时间的问题,可以尽可能的降低页表拷贝时间。同时,目标进程只需要拷贝第一父页表内容,剩余页表内容(即第二父页表内容)由子进程拷贝。这样,目标进程拷贝完第一父页表内容后,便可以继续处理目标进程中的待处理任务,可以极大程度的降低目标进程因拷贝页表而导致的堵塞问题。同时,通过子进程创建多个线程,由多个线程对第二父页表内容进行拷贝,可以加速子进程拷贝第二父页表内容的效率。
进一步地,请参见图8,图8是本申请实施例提供的一种数据处理方法的流程示意图二。如图8所示,该方法可由图1中的任意终端设备来执行,也可以由图1中的服务器10来执行,还可以由图1中的终端设备和服务器共同执行,本申请中用于执行该数据处理方法的设备可以统称为计算机设备。其中,该数据处理方法可以包括但不限于如下步骤:
S201,调用目标进程,根据子进程创建函数创建目标进程的子进程,获取目标进程的第一页表,以及目标进程对应的M个第一虚拟内存区域的M个区域属性信息。
S202,当M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。
具体的,本申请实施例中步骤S201-步骤S202的内容可以参见上述步骤S101-步骤S102的内容,本申请实施例在此不再赘述。
S203,在确定由子进程拷贝的第二父页表内容后,若第二父页表内容为可编辑状态,则将第二父页表内容的可编辑状态更新为不可编辑状态。
具体的,由于第二父页表内容由子进程进行拷贝,目标进程拷贝完成第一父页表内容继续处理其他事务的过程中,可能会对第二父页表内容进行更改,或者对第二父页表内容记录的物理地址中的内存数据进行更改。但是需要把目标进程创建子进程的目标时刻,目标进程的内存数据共享给子进程,因此,若第二父页表内容还没有拷贝就被更改时,会导致第一页表拷贝错误。因此,在确定由子进程拷贝的第二父页表内容后,若第二父页表内容为可编辑状态,则将第二父页表内容的可编辑状态更新为不可编辑状态,即对第二父页表内容设置写保护标识。例如,目标进程拷贝的第一父页表内容为PGD、PUD、PMD对应的高阶页表内容时,计算机设备可以将第一父页表内容中的PMD对齐地址设定写保护操作,确保其数据不会被篡改,以保证子进程进行低阶页表拷贝数据的一致性。这样,可以确保子进程拷贝第二父页表内容的过程中,第二父页表内容不会被更改,以确保第一页表拷贝的准确性。
S204,调用目标进程,对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容。
具体的,本申请实施例中步骤S203的内容可以参见上述步骤S103的内容,本申请实施例在此不再赘述。
S205,在检测到已生成第二子页表内容时,将第二父页表内容的不可编辑状态恢复为可编辑状态。
具体的,在检测到子进程完成根据第二父页表内容生成子进程的第二子页表内容时,则将第二父页表内容的不可编辑状态恢复为可编辑状态,即第二父页表内容去掉写保护标识。这样,目标进程可以继续对第二父页表内容进行写操作,或者对第二父页表内容记录的物理地址中的内存数据进行写操作。
S206,根据第一子页表内容和第二子页表内容生成子进程的第二页表。
具体的,计算机设备可以对第一子页表内容和第二子页表内容进行合并,得到子进程的第二页表,子进程根据第二页表从设备内存中获取目标进程的内存数据,以实现子进程共享目标进程的内存数据。当然,当子进程生成自己独有的内存数据时,会对第二页表进行更新,以根据更新后的第二页表获取到子进程自己的内存数据。可见,本申请实施例通过子进程拷贝第二父页表内容,目标进程可以得到迅速的解放,在目标进程拷贝完第一父页表内容后,目标进程可以处理其他任务,可以减少目标进程需要拷贝的页表内容,降低目标进程拷贝页表所产生的堵塞时间。
本申请实施例提供一种加速页表拷贝方式,当目标进程对应的M个第一虚拟内存区域的M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息对目标进程的第一页表进行划分,得到由目标进程拷贝的第一父页表内容和由第二子进程拷贝的第二父页表内容。这样,可以避免第一页表不满足加速拷贝条件时,产生由第二子进程拷贝会消耗更多的时间的问题,可以尽可能的降低页表拷贝时间。同时,目标进程只需要拷贝第一父页表内容,剩余页表内容(即第二父页表内容)由子进程拷贝。这样,目标进程拷贝完第一父页表内容后,便可以继续处理目标进程中的待处理任务,可以极大程度的降低目标进程因拷贝页表而导致的堵塞问题。同时,通过子进程创建多个线程,由多个线程对第二父页表内容进行拷贝,可以加速子进程拷贝第二父页表内容的效率。另外,在确定由子进程拷贝的第二父页表内容后,若第二父页表内容为可编辑状态,则将第二父页表内容的可编辑状态更新为不可编辑状态,即对第二父页表内容设置写保护标识。这样,可以确保子进程拷贝第二父页表内容的过程中,第二父页表内容不会被更改,以确保第一页表拷贝的准确性。
进一步地,请参见图9,图9是本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如,该数据处理装置为一个应用软件;该数据处理装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该数据处理装置可以为区块链网络中的任意区块链节点。该数据处理装置可以包括:创建模块11、划分模块12、第一拷贝模块13、生成模块14、更新模块15、恢复模块16以及第二拷贝模块17。
创建模块11,用于调用目标进程,根据子进程创建函数创建目标进程的子进程,获取目标进程的第一页表,以及目标进程对应的M个第一虚拟内存区域的M个区域属性信息;第一页表用于指示M个第一虚拟内存区域,与存储目标进程的内存数据的设备内存之间的映射关系;M为正整数;
划分模块12,用于当M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容;
第一拷贝模块13,用于调用目标进程,对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容;
生成模块14,用于根据第一子页表内容和第二子页表内容生成子进程的第二页表,子进程根据第二页表从设备内存中获取目标进程的内存数据。
其中,区域属性信息包括第一虚拟内存区域的区域类型;
划分模块12还用于执行以下操作:
当M个区域属性信息指示M个第一虚拟内存区域中,存在区域类型为目标区域类型的第一虚拟内存区域时,确定第一页表满足加速拷贝条件;目标区域类型的虚拟内存区域在设备内存中不具有对应的独立物理内存区域;
统计M个第一虚拟内存区域中区域类型为目标区域类型的第一虚拟内存区域的区域数量;
根据区域数量和M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。
其中,划分模块12还用于执行以下操作:
若区域数量等于M,则获取目标进程中待处理任务对应的任务量;
根据任务量,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容。
其中,划分模块12还用于执行以下操作:
若区域数量小于M,则从M个第一虚拟内存区域中,筛选出区域类型为目标区域类型的匹配第一虚拟内存区域;
从第一页表中,确定匹配第一虚拟内存区域和剩余第一虚拟内存区域分别关联的父页表内容;剩余第一虚拟内存区域为M个第一虚拟内存区域中除匹配第一虚拟内存区域之外的区域;
对匹配第一虚拟内存区域关联的父页表内容进行划分,得到目标进程对应的第一筛选父页表内容和子进程对应的第二筛选父页表内容;
将剩余第一虚拟内存区域关联的父页表内容以及第一筛选父页表内容,确定为目标进程对应的第一父页表内容,将第二筛选父页表内容确定为子进程对应的第二父页表内容。
其中,第一拷贝模块13用于执行以下操作:
调用目标进程,获取子进程对应的M个第二虚拟内存区域;一个第二虚拟内存区域与一个第一虚拟内存区域关联;
根据第一筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成子进程的第一筛选子页表内容;关联第二虚拟内存区域为M个第二虚拟内存区域中,与匹配第一虚拟内存区域关联的第二虚拟内存区域;
根据剩余第一虚拟内存区域关联的父页表内容,以及M个第二虚拟内存区域中与剩余第一虚拟内存区域关联的第二虚拟内存区域,生成子进程的剩余子页表内容;
将第一筛选子页表内容和剩余子页表内容,确定为子进程的第一子页表内容。
其中,第一拷贝模块13还用于执行以下操作:
获取匹配第一虚拟内存区域的区域索引信息;
在关联第二虚拟内存区域中,添加区域索引信息以及页表拷贝标识;区域索引信息用于获取到匹配第一虚拟内存区域,页表拷贝标识用于指示关联第二虚拟内存区域需要进行关于第二父页表内容的拷贝操作。
其中,第一页表为四级页表;
第一拷贝模块13还用于执行以下操作:
若第一筛选父页表内容的内容属性用于指示,第一筛选父页表内容为第一页表中的第一级页表内容、第二级页表内容以及第三级页表内容,则根据关联第二虚拟内存区域中的目标虚拟地址,生成与目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容;
将与目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容,确定为子进程的第一筛选子页表内容。
其中,第一拷贝模块13还用于执行以下操作:
调用子进程,从子进程对应的M个第二虚拟内存区域中,确定携带页表拷贝标识的关联第二虚拟内存区域;关联第二虚拟内存区域与匹配第一虚拟内存区域关联;
从第二筛选父页表内容中,确定匹配第一虚拟内存区域对应的目标物理地址;
根据目标物理地址、第二筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成子进程的第二子页表内容。
其中,第一拷贝模块13还用于执行以下操作:
调用子进程,根据第二筛选父页表内容的内容属性,以及关联第二虚拟内存区域包括的目标虚拟地址,生成与目标虚拟地址关联的初始子页表内容;
将目标物理地址,添加至与目标虚拟地址关联的初始子页表内容中,得到子进程的第二子页表内容。
其中,第一页表为四级页表;
第一拷贝模块13还用于执行以下操作:
若第二筛选父页表内容的内容属性指示第二筛选父页表内容为第一页表中的第四级页表内容,则根据关联第二虚拟内存区域包括的目标虚拟地址,生成与目标虚拟地址关联的第四级页表内容;
将与目标虚拟地址关联的第四级页表内容,确定为与目标虚拟地址关联的初始子页表内容。
其中,第一拷贝模块13还用于执行以下操作:
调用子进程,创建N个线程;N为大于1的整数;
获取关联第二虚拟内存区域的区域数量,根据区域数量以及N个线程的线程数量,将关联第二虚拟内存区域分配给N个线程;
调用N个线程,根据各自对应的关联第二虚拟内存区域、目标物理地址,以及第二筛选父页表内容的内容属性,生成子进程的第二子页表内容。
数据处理装置还包括:
更新模块15,用于在确定由子进程拷贝的第二父页表内容时,若第二父页表内容为可编辑状态,则将第二父页表内容的可编辑状态更新为不可编辑状态;
恢复模块16,用于在检测到已生成第二子页表内容时,将第二父页表内容的不可编辑状态恢复为可编辑状态。
其中,区域属性信息包括第一虚拟内存区域的区域类型;
数据处理装置还包括:
第二拷贝模块17,用于当M个区域属性信息指示M个第一虚拟内存区域分别对应的区域类型均为目标区域类型时,调用子进程,对第一页表进行拷贝处理,得到子进程的第二页表;目标区域类型的虚拟内存区域在设备内存中不具有对应的独立物理内存区域。
本申请实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。根据本申请的一个实施例,图9所示的数据处理装置中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的至少两个子单元,可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由至少两个单元来实现,或者至少两个模块的功能由一个单元实现。在本申请的其它实施例中,数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由至少两个单元协作实现。
根据本申请的一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算机设备上运行能够执行如图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图9中所示的数据处理装置,以及来实现本申请实施例的一种数据处理方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算机设备中,并在其中运行。
本申请实施例提供一种加速页表拷贝方式,当目标进程对应的M个第一虚拟内存区域的M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息对目标进程的第一页表进行划分,得到由目标进程拷贝的第一父页表内容和由第二子进程拷贝的第二父页表内容。这样,可以避免第一页表不满足加速拷贝条件时,产生由第二子进程拷贝会消耗更多的时间的问题,可以尽可能的降低页表拷贝时间。同时,目标进程只需要拷贝第一父页表内容,剩余页表内容(即第二父页表内容)由子进程拷贝。这样,目标进程拷贝完第一父页表内容后,便可以继续处理目标进程中的待处理任务,可以极大程度的降低目标进程因拷贝页表而导致的堵塞问题。同时,通过子进程创建多个线程,由多个线程对第二父页表内容进行拷贝,可以加速子进程拷贝第二父页表内容的效率。另外,在确定由子进程拷贝的第二父页表内容后,若第二父页表内容为可编辑状态,则将第二父页表内容的可编辑状态更新为不可编辑状态,即对第二父页表内容设置写保护标识。这样,可以确保子进程拷贝第二父页表内容的过程中,第二父页表内容不会被更改,以确保第一页表拷贝的准确性。
进一步地,请参见图10,图10是本申请实施例提供的一种计算机设备的示意图。如图10所示,该计算机设备3000可以为上述图2对应实施例中的终端设备或者服务器,该计算机设备3000可以包括:至少一个处理器3001,例如CPU,至少一个网络接口3004,用户接口3003,存储器3005,至少一个通信总线3002。其中,通信总线3002用于实现这些组件之间的连接通信。其中,用户接口3003可以包括显示屏(Display)、键盘(Keyboard),网络接口3004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器3005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储3005可选地还可以是至少一个位于远离前述处理器3001的存储装置。如图10所示,作为一种计算机存储介质的存储器3005可以包括操作系统、网络通信模块、用户接口模块以及计算机程序控制应用程序。
在图10所示的计算机设备3000中,网络接口3004主要用于第二节点设备与目标中继服务器以及目标预言机服务器进行网络通信;而用户接口3003主要用于为用户提供输入的接口;而处理器3001可以用于调用存储器3005中存储的计算机程序控制应用程序,以实现:
调用目标进程,根据子进程创建函数创建目标进程的子进程,获取目标进程的第一页表,以及目标进程对应的M个第一虚拟内存区域的M个区域属性信息;第一页表用于指示M个第一虚拟内存区域,与存储目标进程的内存数据的设备内存之间的映射关系;M为正整数;
当M个区域属性信息指示第一页表满足加速拷贝条件时,根据M个区域属性信息,对第一页表进行划分,得到目标进程对应的第一父页表内容和子进程对应的第二父页表内容;
调用目标进程,对第一父页表内容进行拷贝处理,得到第一子页表内容,调用子进程,对第二父页表内容进行拷贝处理,得到第二子页表内容;
根据第一子页表内容和第二子页表内容生成子进程的第二页表,子进程根据第二页表从设备内存中获取目标进程的内存数据。
应当理解,本申请实施例中所描述的计算机设备3000也可执行前文图8对应实施例中对一种数据处理方法的描述,本申请实施例中所描述的计算机设备3000也可执行前文图9分别对应实施例中对数据处理装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且该计算机可读存储介质中存储有前文提及的数据处理装置所执行的计算机程序,且该计算机程序包括程序指令,当该处理器执行该程序指令时,能够执行前文图3或者图8所对应实施例中对该一种数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
本申请一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可执行前文图3或者图8所对应实施例中对一种数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (16)
1.一种数据处理方法,其特征在于,包括:
调用目标进程,根据子进程创建函数创建所述目标进程的子进程,获取所述目标进程的第一页表,以及所述目标进程对应的M个第一虚拟内存区域的M个区域属性信息;所述第一页表用于指示所述M个第一虚拟内存区域,与存储所述目标进程的内存数据的设备内存之间的映射关系;所述区域属性信息包括所述第一虚拟内存区域的区域类型,M为正整数;
当所述M个区域属性信息指示所述M个第一虚拟内存区域中,存在区域类型为目标区域类型的第一虚拟内存区域时,确定所述第一页表满足加速拷贝条件,统计所述M个第一虚拟内存区域中区域类型为所述目标区域类型的第一虚拟内存区域的区域数量,根据所述区域数量和所述M个区域属性信息,对所述第一页表进行划分,得到所述目标进程对应的第一父页表内容和所述子进程对应的第二父页表内容;所述目标区域类型的虚拟内存区域在所述设备内存中不具有对应的独立物理内存区域;
调用所述目标进程,对所述第一父页表内容进行拷贝处理,得到第一子页表内容,调用所述子进程,对所述第二父页表内容进行拷贝处理,得到第二子页表内容;
根据所述第一子页表内容和所述第二子页表内容生成所述子进程的第二页表,所述子进程根据所述第二页表从所述设备内存中获取所述目标进程的内存数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述区域数量和所述M个区域属性信息,对所述第一页表进行划分,得到所述目标进程对应的第一父页表内容和所述子进程对应的第二父页表内容,包括:
若所述区域数量等于M,则获取所述目标进程中待处理任务对应的任务量;
根据所述任务量,对所述第一页表进行划分,得到所述目标进程对应的第一父页表内容和所述子进程对应的第二父页表内容。
3.根据权利要求1所述的方法,其特征在于,所述根据所述区域数量和所述M个区域属性信息,对所述第一页表进行划分,得到所述目标进程对应的第一父页表内容和所述子进程对应的第二父页表内容,包括:
若所述区域数量小于M,则从所述M个第一虚拟内存区域中,筛选出区域类型为所述目标区域类型的匹配第一虚拟内存区域;
从所述第一页表中,确定所述匹配第一虚拟内存区域和剩余第一虚拟内存区域分别关联的父页表内容;所述剩余第一虚拟内存区域为所述M个第一虚拟内存区域中除所述匹配第一虚拟内存区域之外的区域;
对所述匹配第一虚拟内存区域关联的父页表内容进行划分,得到所述目标进程对应的第一筛选父页表内容和所述子进程对应的第二筛选父页表内容;
将所述剩余第一虚拟内存区域关联的父页表内容以及所述第一筛选父页表内容,确定为所述目标进程对应的第一父页表内容,将所述第二筛选父页表内容确定为所述子进程对应的第二父页表内容。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述M个区域属性信息指示所述M个第一虚拟内存区域分别对应的区域类型均为目标区域类型时,调用所述子进程,对所述第一页表进行拷贝处理,得到所述子进程的第二页表;所述目标区域类型的虚拟内存区域在所述设备内存中不具有对应的独立物理内存区域。
5.根据权利要求3所述的方法,其特征在于,所述调用所述目标进程,对所述第一父页表内容进行拷贝处理,得到第一子页表内容,包括:
调用所述目标进程,获取所述子进程对应的M个第二虚拟内存区域;一个所述第二虚拟内存区域与一个所述第一虚拟内存区域关联;
根据所述第一筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成所述子进程的第一筛选子页表内容;所述关联第二虚拟内存区域为所述M个第二虚拟内存区域中,与所述匹配第一虚拟内存区域关联的第二虚拟内存区域;
根据所述剩余第一虚拟内存区域关联的父页表内容,以及所述M个第二虚拟内存区域中与所述剩余第一虚拟内存区域关联的第二虚拟内存区域,生成所述子进程的剩余子页表内容;
将所述第一筛选子页表内容和所述剩余子页表内容,确定为第一子页表内容。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取所述匹配第一虚拟内存区域的区域索引信息;
在所述关联第二虚拟内存区域中,添加所述区域索引信息以及页表拷贝标识;所述区域索引信息用于获取到所述匹配第一虚拟内存区域,所述页表拷贝标识用于指示所述关联第二虚拟内存区域需要进行关于所述第二父页表内容的拷贝操作。
7.根据权利要求5所述的方法,其特征在于,所述第一页表为四级页表;
所述根据所述第一筛选父页表内容的内容属性以及关联第二虚拟内存区域,生成所述子进程的第一筛选子页表内容,包括:
若所述第一筛选父页表内容的内容属性用于指示,所述第一筛选父页表内容为所述第一页表中的第一级页表内容、第二级页表内容以及第三级页表内容,则根据所述关联第二虚拟内存区域中的目标虚拟地址,生成与所述目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容;
将与所述目标虚拟地址关联的第一级页表内容、第二级页表内容以及第三级页表内容,确定为所述子进程的第一筛选子页表内容。
8.根据权利要求3所述的方法,其特征在于,所述调用所述子进程,对所述第二父页表内容进行拷贝处理,得到第二子页表内容,包括:
调用所述子进程,从所述子进程对应的M个第二虚拟内存区域中,确定携带页表拷贝标识的关联第二虚拟内存区域;所述关联第二虚拟内存区域与所述匹配第一虚拟内存区域关联;
从所述第二筛选父页表内容中,确定所述匹配第一虚拟内存区域对应的目标物理地址;
根据所述目标物理地址、所述第二筛选父页表内容的内容属性以及所述关联第二虚拟内存区域,生成第二子页表内容。
9.根据权利要求8所述的方法,其特征在于,所述根据所述目标物理地址、所述第二筛选父页表内容的内容属性以及所述关联第二虚拟内存区域,生成第二子页表内容,包括:
调用所述子进程,根据所述第二筛选父页表内容的内容属性,以及所述关联第二虚拟内存区域包括的目标虚拟地址,生成与所述目标虚拟地址关联的初始子页表内容;
将所述目标物理地址,添加至与所述目标虚拟地址关联的初始子页表内容中,得到第二子页表内容。
10.根据权利要求9所述的方法,其特征在于,所述第一页表为四级页表;
所述调用所述子进程,根据所述第二筛选父页表内容的内容属性,以及所述关联第二虚拟内存区域包括的目标虚拟地址,生成与所述目标虚拟地址关联的初始子页表内容,包括:
若所述第二筛选父页表内容的内容属性指示所述第二筛选父页表内容为所述第一页表中的第四级页表内容,则根据所述关联第二虚拟内存区域包括的目标虚拟地址,生成与所述目标虚拟地址关联的第四级页表内容;
将与所述目标虚拟地址关联的第四级页表内容,确定为与所述目标虚拟地址关联的初始子页表内容。
11.根据权利要求8所述的方法,其特征在于,所述根据所述目标物理地址、所述第二筛选父页表内容的内容属性以及所述关联第二虚拟内存区域,生成第二子页表内容,包括:
调用所述子进程,创建N个线程;N为大于1的整数;
获取所述关联第二虚拟内存区域的区域数量,根据所述区域数量以及所述N个线程的线程数量,将所述关联第二虚拟内存区域分配给所述N个线程;
调用所述N个线程,根据各自对应的关联第二虚拟内存区域、所述目标物理地址,以及所述第二筛选父页表内容的内容属性,生成第二子页表内容。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定由所述子进程拷贝的第二父页表内容时,若所述第二父页表内容为可编辑状态,则将所述第二父页表内容的可编辑状态更新为不可编辑状态;
在检测已生成所述第二子页表内容时,将所述第二父页表内容的不可编辑状态恢复为所述可编辑状态。
13.一种数据处理装置,其特征在于,包括:
创建模块,用于调用目标进程,根据子进程创建函数创建所述目标进程的子进程,获取所述目标进程的第一页表,以及所述目标进程对应的M个第一虚拟内存区域的M个区域属性信息;所述第一页表用于指示所述M个第一虚拟内存区域,与存储所述目标进程的内存数据的设备内存之间的映射关系;所述区域属性信息包括所述第一虚拟内存区域的区域类型,M为正整数;
划分模块,用于当所述M个区域属性信息指示所述M个第一虚拟内存区域中,存在区域类型为目标区域类型的第一虚拟内存区域时,确定所述第一页表满足加速拷贝条件,统计所述M个第一虚拟内存区域中区域类型为所述目标区域类型的第一虚拟内存区域的区域数量,根据所述区域数量和所述M个区域属性信息,对所述第一页表进行划分,得到所述目标进程对应的第一父页表内容和所述子进程对应的第二父页表内容;所述目标区域类型的虚拟内存区域在所述设备内存中不具有对应的独立物理内存区域;
第一拷贝模块,用于调用所述目标进程,对所述第一父页表内容进行拷贝处理,得到第一子页表内容,调用所述子进程,对所述第二父页表内容进行拷贝处理,得到第二子页表内容;
生成模块,用于根据所述第一子页表内容和所述第二子页表内容生成所述子进程的第二页表,所述子进程根据所述第二页表从所述设备内存中获取所述目标进程的内存数据。
14.一种计算机设备,其特征在于,包括:处理器和存储器;
所述处理器与所述存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
16.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,所述计算机指令适于由处理器读取并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410163851.1A CN117724822B (zh) | 2024-02-05 | 2024-02-05 | 一种数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410163851.1A CN117724822B (zh) | 2024-02-05 | 2024-02-05 | 一种数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117724822A CN117724822A (zh) | 2024-03-19 |
CN117724822B true CN117724822B (zh) | 2024-05-24 |
Family
ID=90205650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410163851.1A Active CN117724822B (zh) | 2024-02-05 | 2024-02-05 | 一种数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117724822B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118626063A (zh) * | 2024-08-14 | 2024-09-10 | 一网互通(北京)科技有限公司 | 大数据中加速处理elasticsearch数据的方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111443949A (zh) * | 2020-03-25 | 2020-07-24 | 北京计算机技术及应用研究所 | 一种飞腾服务器平台下的内核内存页拷贝加速方法 |
CN114416425A (zh) * | 2021-12-17 | 2022-04-29 | 阿里巴巴(中国)有限公司 | 进程拷贝方法以及装置 |
KR20220095526A (ko) * | 2020-12-30 | 2022-07-07 | 아주대학교산학협력단 | 프로세스 포크 시의 카피-온-라이트 최적화 장치 및 방법 |
CN116302376A (zh) * | 2022-09-06 | 2023-06-23 | Oppo广东移动通信有限公司 | 进程创建方法、装置、电子设备及计算机可读介质 |
-
2024
- 2024-02-05 CN CN202410163851.1A patent/CN117724822B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111443949A (zh) * | 2020-03-25 | 2020-07-24 | 北京计算机技术及应用研究所 | 一种飞腾服务器平台下的内核内存页拷贝加速方法 |
KR20220095526A (ko) * | 2020-12-30 | 2022-07-07 | 아주대학교산학협력단 | 프로세스 포크 시의 카피-온-라이트 최적화 장치 및 방법 |
CN114416425A (zh) * | 2021-12-17 | 2022-04-29 | 阿里巴巴(中国)有限公司 | 进程拷贝方法以及装置 |
CN116302376A (zh) * | 2022-09-06 | 2023-06-23 | Oppo广东移动通信有限公司 | 进程创建方法、装置、电子设备及计算机可读介质 |
Non-Patent Citations (2)
Title |
---|
Linux内核的内存管理探秘之四__虚拟内存的管理_徐炜;徐炜;《电脑编程技巧与维护》;20060531;第1-6页 * |
Minjong Ha ET AL..CCoW: Optimizing Copy-on-Write Considering the Spatial Locality in Workloads.MDPI.第1-17页. * |
Also Published As
Publication number | Publication date |
---|---|
CN117724822A (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10193977B2 (en) | System, device and process for dynamic tenant structure adjustment in a distributed resource management system | |
CN117724822B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US5870742A (en) | Method and apparatus for enabling persistent attributes in an object oriented environment | |
CN107391527A (zh) | 一种基于区块链的数据处理方法及设备 | |
CN110008018A (zh) | 一种批量任务处理方法、装置及设备 | |
US9063918B2 (en) | Determining a virtual interrupt source number from a physical interrupt source number | |
CN112236760B (zh) | 一种图数据的更新方法、系统、计算机可读存储介质及设备 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN109102200B (zh) | 一种定时任务处理方法及装置 | |
CN113626510A (zh) | 交易核对方法、装置、电子设备及存储介质 | |
CN111163060B (zh) | 一种基于应用组的转发方法、设备以及系统 | |
US20180225333A1 (en) | Data write/import performance in a database through distributed memory | |
CN110535724B (zh) | 应用程序网络读写限制方法、装置、电子设备及存储介质 | |
CN113961523A (zh) | 业务文件拆分汇总方法、装置及设备 | |
CN112015552A (zh) | hash环均衡负载方法、装置、电子设备和存储介质 | |
CN113127430A (zh) | 镜像信息处理方法、装置、计算机可读介质及电子设备 | |
CN116954815A (zh) | 资源调度方法及装置、计算机设备、计算机可读存储介质 | |
CN113420269B (zh) | 基于大数据平台管理多租户的方法、系统、设备及介质 | |
US11669358B2 (en) | Virtual network functions allocation in a datacenter | |
US11340952B2 (en) | Function performance trigger | |
CN114490076A (zh) | 内存分配方法、装置、计算机设备和存储介质 | |
CN115686811A (zh) | 进程管理方法、装置、计算机设备及存储介质 | |
CN113626005B (zh) | 一种区块链基础合约开发部署方法、设备及储存介质 | |
CN112291241A (zh) | 防火墙开墙方法、防火墙开墙装置及终端设备 | |
CN113760446A (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 |