文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux进程(一)

Linux进程(一)

时间:2006-03-27  来源:icymoon

 

Linux进程中,新的进程是由一个已经存在的进程复制出来的,只有第一个进程是在内核引导完成了基本的初始化工作后就存在的。所以说,Linux系统中的进程都是同一祖先的。

 

1.       进程创建

1.1 进程复制(copy是一种美德,比如DNA的copy带来比较稳定的性状遗传 :p)

复制出来的子进程的task_struct结构与系统的堆栈空间是与父进程独立的,但其他资源却是与父进程共享的,比如文件指针,socket描述符等。

这里要提到几个系统调用,fork()与clone(),以及vfork()。Fork()无参数,将父进程资源全部复制,而clone()有参数,可以有选择地复制部分资源。Vfork()复制的是除了task_struct结构和系统堆栈外所有的资源,所以vfork()出来的算是线程。

但是有一点要说清楚,现在的Linux做进程复制,只复制基本资源,而对于父进程的代码、全局变量等,暂时不复制,做只读访问,当需要修改时才进行复制,这就是所谓的copy_on_write。

1.2    目标代码的执行

系统调用execve()让进程执行一个可执行程序的映象。

 

2.       进程的消亡

子进程比父进程消亡得早,会通过内核给父进程发一个信号。父进程也可以等待子进程消亡后再继续执行,也可以exit()。父进程使用wait4()等待特定子进程结束,wait3()等待任何一个子进程结束。

 

3.       几个系统调用

(1)    fork()对父进程返回子进程的ID号,对子进程返回0。

(2)    系统中的sys_fork(),sys_clone(),sys_vfork()都是通过do_fork()来完成的。

(3)    glibc里的fork调用的sys_clone()…

4.       ….

相关阅读 更多 +
排行榜 更多 +
动物大战僵尸I

动物大战僵尸I

飞行射击 下载
龙兽争霸无限零件图纸

龙兽争霸无限零件图纸

飞行射击 下载
金属战士2最新版

金属战士2最新版

飞行射击 下载