一 、进程的概念和分类
1.进程的概念
Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统;多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的方法,所有的任务都放在一个队列中,操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片很短,用户根本感觉不到是多个任务在运行,从而使所有的任务共同分享系统资源,因此linux可以在一个任务还未执行完时,暂时挂起此任务,又去执行另一个任务,过一段时间以后再回来处理这个任务,直到这个任务完成,才从任务队列中去除.这就是多任务的概念.
上面说的是单CPU多任务操作系统的情形,在这种环境下,虽然系统可以运行多个任务,但是在某一个时间点,CPU只能执行一个进程,而在多CPU多任务的操作系统下,有多个CPU,在某个时间点上,可以有多个进程同时运行.
进程的的基本定义是:在自身的虚拟地址空间运行的一个独立的程序,从操作系统的角度来看,所有在系统上运行的东西,都可以称为一个进程.
需要注意的是:程序和进程是有区别的,进程虽然有程序产生,但是它并不是程序,程序是一个进程指令的集合,它可以启用一个或多个进程,同时,程序只占用磁盘空间,而不占用系统运行资源,而进程仅仅占用系统内存空间,是动态的、可变的,关闭进程,占用的内存资源随之释放.
例如,用户在linux上打开一个文件、就会产生一个打开文件的进程,关闭文件,进程也随机关闭.如果在系统上启动一个服务,例如启动tomcat服务,就会产生一个对应的java的进程.而如果启动apache服务,就会产生多个httpd进程.
2.进程的分类
按照进程的功能和运行的程序分类,进程可划分为两大类:
系统进程:可以执行内存资源分配和进程切换等管理工作;,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行.
用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭.
针对用户进程,又可以分为交互进程、批处理进程和守护进程三类.
交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台.
批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程.
守护进程:守护进程是一直运行的一种进程,经常在linux系统启动时启动,在系统关闭时终止.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.例如httpd进程,一直处于运行状态,等待用户的访问.还有经常用的crond进程,这个进程类似与windows的计划任务,可以周期性的执行用户设定的某些任务.
3.进程的属性
(1)进程的几种状态
进程在启动后,不一定马上开始运行,因而进程存在很多种状态.
可运行状态:处于这种状态的进程,要么正在运行、要么正准备运行.
可中断的等待状态:这类进程处于阻塞状态,一旦达到某种条件,就会变为运行态.同时该状态的进程也会接收到信号而被提前唤醒进入到运行态.
不中断的等待状态:与“可中断的等待状态”含义基本类似,唯一不同的是处于这个状态的进程对信号不做响应.
僵死状态:也就是僵死进程,每个进程在结束后都会处于僵死状态,等待父进程调用进而释放资源,处于该状态的进程已经结束,但是它的父进程还没有释放其系统资源.
暂停状态:表明此时的进程暂时停止,来接收某种特殊处理,
(2)进程之间的关系
在linux系统中,进程ID(用PID表示)是区分不同进程的唯一标识,它们的大小是有限制的,最大ID为32768,用UID和GID分别表示启动这个进程的用户和用户组.所有的进程都是PI |