一、进程的状态
1. 创建状态 2. 就绪状态 3. 运行状态 4. 阻塞状态 5. 终止状态
图源:进程、线程基础知识全家桶,30 张图一套带走_Linux_小林coding_InfoQ写作社区
NULL -> 创建状态:一个新进程被创建时的第一个状态;
创建状态 -> 就绪状态:当进程被创建完成并初始化后,一切就绪准备运行时,变为就绪状态,这个过程是很快的;
就绪态 -> 运行状态:处于就绪状态的进程被操作系统的进程调度器选中后,就分配给 CPU 正式运行该进程;
运行状态 -> 结束状态:当进程已经运行完成或出错时,会被操作系统作结束状态处理;
运行状态 -> 就绪状态:处于运行状态的进程在运行过程中,由于分配给它的运行时间片用完,操作系统会把该进程变为就绪态,接着从就绪态选中另外一个进程运行;
运行状态 -> 阻塞状态:当进程请求某个事件且必须等待时,例如请求 I/O 事件;
阻塞状态 -> 就绪状态:当进程要等待的事件完成时,它从阻塞状态变到就绪状态;
进程的三种基本状态
就绪状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
执行状态:当进程已获得处理机(CPU),其程序正在处理机上执行,此时的进程状态称为执行状态。
阻塞状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。
当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。
二、进程的创建方式
1、系统的初始化;
2、一个进程在运行过程中开启了子进程;
3、用户的交互式请求,而创建一个新进程(如双击qq);
4、一个批处理作业的初始化(只在大型机的批处理系统中应用)。
批处理作业的意思为 对每个对象进行相同的操作,可以采用机械化或者程序化来操作。举个例子比如我们在电脑上要把一个文件夹里的所有文件都移动到另一个文件夹,就可以一次全部选完移动过去,这就是批处理。