分类: LINUX
2015-07-17 12:56:31
进程(process):在linux系统当中,执行一个程序或命令时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID同时依据触发这个进程的用户与相关属性,给予这个PID一组有效的权限设置。程序触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,操作系统并给予这个内存内的单元一个标识符PID,可以说,进程局势一个正在运行中的程序。
程序(Program):通常为二进制程序放置在存储介质中,以物理文件形式存在;
当root执行touch时,他取得的是UID/GID=0/0的权限
当普通用户如awake执行touch时,他取得的是UID/GID=501/501
子进程与父进程
当我们登陆系统后,会取得一个bash的shell,然后,我们用这个bash提供的接口去执行另一个命令,例如passwd、touch或vi等,那些另外执行的命令也会被触发成为PID,这个就是衍生出来的进程,那个后来执行命令才产生的PID就是"子进程",而在我们原本的bash环境下,就称为父进程。只里面只阐述了两级关系,子进程,父进程,其实系统中进程有多级关系,所有进程的父进程都是init,其他进程都是init的子子孙孙进程。
某个进程的父进程是通过PPID(Parent PID)来判断的,就是父进程的进程标识符,子进程可以继承父进程的环境变量。子进程与父进程之间的关系还挺复杂的,最大的复杂点在于进程互相之间的调用。
fork and exec:过程调用的流程
当执行一个程序触发一个进程时,系统先以fork的方式复制一个与父进程的暂存进程,这个进程与父进程唯一的区别就是PID不同!然后暂存进程开始以exec的方式加载实际要执行的程序。
系统或网络服务:常驻在内存的进程
常驻在内存的进程通常是负责一些系统所提供的功能以服务用户各项任务,因此这些常驻进程丢回被我们称为服务也叫守护进程(daemon)。