execve函数

fork创建出来的子进程的PCB是复制了父进程的PCB,进程的4个资源中,我们可以控制了3个资源,系统堆栈和户口pcb已经被创建,还有虚存空间也是可以从新声请(通过COPY_ON_WRITE),但是我们看到代码段寄存器没有被改,2个进程采用仍然是同一个剧本,关于代码段在内存中是只读的,因此页面表项会被复制,代码段内存是不会重新分配的。整体效果看上去就是父子进程做的是同一件事。这样创建出来的子进程的意义将会大打折扣。(同时子进程的PCB是复制父进程而来,信号处理表,页面表这些都是复制过来。)execve就是用来改变这一情况的。

 

他通过改变进程的上下文,从而达到和父进程分开的目的。

 

 

你可能感兴趣的:(exec)