什么是进程?
1.进程是已启动的可执行程序的运行实例,进程由以下几部分组成:
a.已分配内存的地址空间
b.安全属性,包括所有权凭据和特权
c.程序代码的一个或多个执行线程
d.进程状态
e.进程需要一个用户身份去运行
2.程序和进程比较
程序:二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/nginx
进程:是程序运行的过程,动态的,有生命周期及运行状态
进程的生命周期
父进程复制自己的地址空间(fork)创建一个新的子进程结构,每个新进程分配一个唯一的进程ID号(PID)
PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:
Centos5/6:init
Centos7:systemd
子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。