进程创建函数分析[修改版]

第一篇:进程创建函数分析1.进程状态:1)可运行状态(TASK_RUNNING)2)可中断的等待状态(TASK_INTERRUPTIBLE)3)不可中断的等待状态(TASK_UNINTERRUPTIB

第一篇:进程创建函数分析 1. 进程状态: 1)TASK_RUNNING 可运行状态() 2)TASK_INTERRUPTIBLE 可中断的等待状态() 3)TASK_UNINTERRUPTIBLE 不可中断的等待状态() 4)TASK_STOPPED 暂停状态() 5)TASK_ZOMBIE 僵死状态() 2.1fork: 进程的创建:)使用该系统调用时,子进程复制父进程的全部资源。由于要复制父进程进程描 ()linux(copyon 述符给子进程进程描述的结构很大!!,这一过程开销是很大的。采用了”写时复制技术” write,COW) ,使子进程先共享父进程的物理页,只有子进程进行写操作时,再复制对应的物理页,避免了 无用的复制开销,提高了系统的性能。 x86arch/x86/kernel/process.c 实现代码(): intsys_fork(structpt_regs*regs) { Returndo_fork(SIGCHLD,regs->sp,regs,0,NULL,NULL); } 2vfork ):该系统调用创建的子进程,完全运行在父进程地址空间之上。子进程对地址空间任何数据的 vfork 修改同样为父进程所见。执行后父进程堵塞,知道子进程运行结束。 x86arch/x86/kernel/process.c 实现代码(): intsys_vfork(structpt_regs*regs) { Returndo_fork(CLONE_VFORK|CLONE_VM|SIGCHLD,regs->sp,regs,0,NULL,NULL); }3clonelinuxNPTLforkvforkclone ):该调用是系统所特有的,其的实现依赖此函数。与,相比对 进程创建有更好的控制能力,能控制子进程和父进程共享何种资源。 x86arch/x86/kernel/process.c 实现代码():

腾讯文库进程创建函数分析[修改版]