Linux 进程详解
进程:正在运行的程序(每个运行着的程序实例就构成一个进程)
一般来说,Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份副本。(在任何时刻内存中都只有代码的一份副本???)
程序代码和系统函数库可以被多个进程安全的共享。
举例:
1. 程序代码可以共享:多个用户可以调用同一个程序代码(同一个函数)
2. 系统函数库也可以被共享:不管有多少个正在运行的程序要调用printf函数,内存中只要有它的一份副本即可。
每个进程都会被分配一个唯一的数字编号,我们称之为进程标识符或PID。它通常是一个取值范围从2到32768的正整数。当进程被启动时,系统将按顺序选择下一个未被使用的数字作为它的PID,当数字已经回绕一圈时,新的PID重新从2开始。数字1一般是为特殊进程init保留的,init进程负责管理其他进程。
并不是程序在运行时所需要的所有东西都可以被共享。例如,进程中使用的变量就不能共享。
进程有自己的栈空间,用于保存函数中的局部变量和控制函数的调用与返回。进程还有自己的环境空间,包含专门为这个进程建立的环境变量。进程还必须维护自己的程序计数器,这个计数器用来记录它执行到的位置,即在执行线程中的位置。
系统进程常见的STAT代码: