进程的状态与转换
廖家龙 用心听,不照做

进程的状态

创建状态:进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进程分配资源、初始化PCB

就绪状态:当进程创建完成后,便进入了“就绪态”,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行

运行状态:如果一个进程此时在CPU上运行,那么这个进程处于“运行态”,CPU会执行该进程对应的程序(执行指令序列)

阻塞状态(等待态):在进程运行过程中,可能会请求等待某个事件的发生(如等待某种系统资源的分配,或者等待其他进程的响应),在这个事件发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CPU,并让它进入“阻塞态”,如果等待的某个事件发生了,进程就会由“阻塞态”变为“就绪态”,当CPU空闲时,会选择一个“就绪态”进程上CPU运行

终止状态:一个进程可以执行exit系统调用,请求操作系统终止该进程,此时该进程会进入“终止态”,操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收该进程的PCB,当终止进程的工作完成之后,这个进程就彻底消失了(进程运行结束,或运行过程中遇到不可修复的错误)

状态间的转换

就绪态 -> 运行态

运行态 -> 就绪态(时间片到,或处理机被抢占)

运行态 -> 阻塞态

阻塞态 -> 就绪态

注意:不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态,因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求

三种基本状态:就绪态、运行态、阻塞态,进程的整个生命周期中大部分时间都处于三种基本状态

单核CPU情况下,同一时刻只会有一个进程处于运行态,多核CPU情况下,可能有多个进程处于运行态

进程PCB中,会有一个变量state来表示进程的当前状态:如1表示创建态、2表示就绪态、3表示运行态…为了对同一状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来

进程的组织方式(各个进程PCB的组织方式)

链接方式

很多操作系统还会根据阻塞原因不同,再分为多个阻塞队列

索引方式