Linux是多用户、多任务的操作系统,它允许多个用户登录系统,使用系统中的各种资源,由操作系统为每个登录用户建立相应的管理进程并可以执行用户要求的多个程序。
进程可以说是无处不在,从操作系统开始启动到出现图形用户桌面或系统终端提示符时,系统中已经有了许多进程;这些进程在Linux系统中一般称为守护进程,它们担负运行和管理系统的职能。
用户在桌面上、目录窗口中或终端提示符下运行的程序或命令也构成进程。
进程与程序的主要区别是:
第一、进程是程序处理数据的过程,而程序只是一组指令的有序集合。
第二、进程具有动态性、并发性、独立性和异步性,而程序只是静态的代码不具有这 些特性。
第三、进程与程序并非一一对应的,一个进程可能对应一个程序,也可能多个进程对应一个程序;例如,一个编译程序为多个用户程序编译,构成多个进程。
多任务的实现
对于单处理机的计算机系统而言CPU只有一个,而需要运行的进程可能有许多个。
Linux系统采用多级反馈队列实现处理机的调度,每个进程都有优先级,当它被创建时加入到相应优先级的队列中,对于实时和系统进程采用优先级和先来先服务相结合的调度算法,对于普通的用户进程采用优先级与时间片轮转相结合的调度算法。
在Linux系统中,一般使用优先数来表示进程的优先级,优先数越小,优先级越高。
进程的类型
在Linux系统中,如果从应用的角度来看待进程,则存在三种不同类型的进程,即交互进程、批处理进程和监控进程,每种进程都有各自的特点和属性。有的进程类型运行在前台,称为前台进程;有的运行在后台,称为后台进程;有的进程类型既可以运行在前台,也可以运行在后台。
对于前台进程,它是属于某一个终端shell创建的进程,如果使用这个终端的用户退出了该终端(例如,在终端上执行Ctrl+c命令,即控制台中断),则这个进程就会被终止;而后台进程也是属于某一个终端shell创建的进程,但是除非该进程自己退出(包括正常和非正常)或者被其他进程和用户手工终止,否则即使用户进行控制台中断或退出该终端,但是后台进程会一直运行直到完成为止。
交互进程
它是由某种shell程序启动的进程,如执行一个命令。交互进程既可以在前台运行,也可以在后台运行。
批处理进程:
这种进程和终端没有联系,但它是一个进程系列。例如执行一个shell脚本程序。
监控进程:
也称为守护进程,它是在Linux 系统启动时运行的进程,并且运行在后台。