本发明涉及计算机系统进程技术领域,特别涉及一种创建进程的方法。
背景技术:
创建进程是操作系统常见的核心基础服务,通常是父进程创建出子进程。以linux操作系统为例,使用fork系统调用函数创建出子进程,考虑到性能问题,fork创建出来的子进程内存内容会引用父进程内存内容,当子进程要写入新数据时,会启动cow(copyonwrite)机制,先从父进程复制一份内容然后再进行修改。
现有技术是,每次父进程创建子进程的时候,会启动cow机制,都要从父进程复制一份内容然后再进行修改,导致新建的子进程碎片式地cow从而频繁调用fork系统。
技术实现要素:
本发明为了解决上述问题之一,提供一种创建进程的方法,通过在父进程创建子进程后,对子进程数据读写产生的cow数据进行统计,统计出子进程共有的cow数据,将共有的cow数据预先批量复制,然后父进程下一次在创建新的子进程的时候直接将共有的cow数据传递给新的子进程即可,减少后续新的子进程进行碎片式地cow操作以及频繁地调用fork系统。
为解决上述技术问题,本发明提供如下技术方案:一种创建进程的方法,包括以下步骤:
对于同一个父进程下所属的所有子进程,统计所有子进程的cow数据,每个子进程包括若干个cow数据;对各个子进程的cow数据进行比对,获取各个子进程共有的cow数据;
对共有的cow数据进行批量复制并存储;
父进程创建新的子进程时,将已复制并存储的共有的cow数据传递至新的子进程。
采用上述技术方案后,本发明至少具有如下有益效果:本发明通过在父进程创建子进程后,对子进程数据读写产生的cow数据进行统计,统计出子进程共有的cow数据,将共有的cow数据预先批量复制,然后父进程下一次在创建新的子进程的时候直接将共有的cow数据传递给新的子进程即可,减少后续新的子进程进行碎片式地cow操作以及频繁地调用fork系统。
附图说明
图1为本发明一种创建进程的方法步骤流程图。
具体实施方式
需要说明的是,在不冲突的情况下,
本技术:
中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。
实施例1
本实施例提供一种创建进程的方法,如图1所示,包括以下步骤:
对同一个父进程下所属的所有子进程,统计所有子进程的cow数据,每个子进程包括若干个cow数据;对各个子进程cow数据进行比对,获取各个子进程共有的cow数据(相当于子进程的交集);
例如,有一个父进程a,父进程a已创建的子进程包括子进程b1、子进程b2、子进程b3和子进程b4,其中,子进程b1使用的cow包括cow1、cow2、cow3、cow4、cow5、cow6,子进程b2使用的cow包括cow1、cow2、cow3、cow4、cow5,子进程b3使用的cow包括cow1、cow2、cow3、cow4,子进程b4使用的cow包括cow1、cow2、cow3,那么各个子进程共有的cow数据则为:cow1、cow2、cow3;
对共有的cow数据进行批量复制并存储;如上所述,对子进程共有的cow1、cow2、cow3进行大量复制,
父进程创建新的子进程时,将已复制并存储的共有的cow数据传递至子进程。父进程直接将cow1、cow2、cow3传递给新的子进程进行使用即可,无需调用fork系统。
本实施例通过在父进程创建子进程后,对子进程数据读写产生的cow数据进行统计,统计出子进程共有的cow数据,将共有的cow数据预先批量复制,然后父进程下一次在创建新的子进程的时候直接将共有的cow数据传递给新的子进程即可,减少后续新的子进程进行碎片式地cow操作以及频繁地调用fork系统。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。
1.一种创建进程的方法,其特征在于,包括以下步骤:
对于同一个父进程下所属的所有子进程,统计所有子进程的cow数据,每个子进程包括若干个cow数据;对各个子进程的cow数据进行比对,获取各个子进程共有的cow数据;
对共有的cow数据进行批量复制并存储;
父进程创建新的子进程时,将已复制并存储的共有的cow数据传递至新的子进程。