一、进程基本环境
进程是程序的一次运行,是运行在自己的虚拟地址空间的一个具有独立功能的程序。进程是分配和释放资源的基本单位,当程序执行时,系统创建进程,分配内存和CPU等资源;进程结束时,系统回收这些资源。
1进程概念
进程通常由程序、数据和进程控制块(PCB)三个部分组成的。其中,程序部分描述了进程锁要完成的功能;数据部分为进程提供了运行所需的堆栈和私有数据;进程控制块则含有进程的描述和控制信息,几种反应进程的动态特性,是系统识别和控制进程的依据。
1)进程与程序
进程是程序的一次执行,故程序是一个静态的概念,本身可以作为一种软件资源长期保存;而进程是程序的执行过程,是动态概念,有一定的生命周期,具有产生、发展和消亡的过程。
程序是一个规划,它计划了所要执行的代码和所要完成的动作;进程是一位执行者,它依照程序的设计,申请资源,计算数据,并完成预定的任务。一个程序可以同时由多个进程执行;一个进程也可以有顺序地执行若干程序。
进程不能脱离具体程序而存在,程序规定了相应进程所要完成的动作;程序不能脱离进程而应用,进程将程序的设想变成可能。
2)进程与线程
线程又名轻负荷进程,它是在进程基础上程序的一次执行,一个进程可以拥有多个线程。
线程没有独立的资源,它共享进程的ID,共享进程的资源。
线程是UNIX最小的调度单位,目前有系统级调度和进程级调度两种线程调度实行方式:系统级调度的操作系统以线程为单位进程调度;进程级调度的操作系统以仍以进程为单位进行调度,进程再为其上运行的线程提供调度控制。
3)前台进程和后台进程
用户在Shell提示符处键入命令,创建进程,此后该进程接管终端,Shell中不能再输入其它的命令,知道进程执行完毕,才将终端控制权返回Shell并显示用户提示符。这样子的进程是前台进程。
如果用户在输入Shell命令时,在命令串上加上"&",于是就可以同时运行进程和执行Shell操作。这样子的进程就是后台进程,后台进程并不接管终端,因此必须是非交互式的。
4)守护进程
守护进程是与终端无关,常住后台执行的特殊进程。UNIX中最著名的2个守护进程是:
sysproc进程:UNIX的第一个进程,标志号为0,能合理地调度系统中运行的进程,负责将进程从硬件交换区调入内存(换入)或将进程从内存调到硬盘交换区(换出)。
init进程:系统初始化进程,进程标志号为1,是除sysproc外所有进程的祖先。
5)父子进程
进程采用树型结构管理。当一个进程启动另一个进程时,被启动的进程就是子进程,原进程就是父进程。在UNIX中,使用系统调用fork创建进程。fork复制了父进程的数据、堆栈段和进程环境,因此,子进程继承了父进程的某些环境,并且共享父进程的代码段。但子进程也拥有自己的环境,父子进程以并行的执行同一程序的不同分支。
6)进程状态
进程在运行过程中具有运行状态、就绪状态和睡眠状态。
运行态:进程已经分配到CPU,正在处理机上执行时的装填。同一时刻处于运行态的进程不能大于CPU的数目。运行态又可以细分用户态和和心态两种。用户态:如果进程正在运行用户的代码,进程就处于用户态。核心态:如果进程出现系统调用或系统中断,运行操作系统的内部代码,进程就处于和心态。
就绪态:进程已具备运行条件,但是其它进程正占用CPU,所以暂时不能运行而等待分配CPU的状态。处于就绪态的进程一旦获得了CPU,就能立刻运行。
睡眠态:进程正在等待某种时间的发生而暂时不能运