@[toc]
1进程的状态
:ice_cream:创建态:进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进程分配资源,初始化PCB
:jack_o_lantern:就绪态:当进程创建完成之后,便进入“就绪态”,处于就绪态的进程以及具备运行条件,但如果没有空闲CPU的话,就暂时不能运行。
:bread:运行态:当CPU空闲时,操作系统就回选择一个就绪进程,让它上CPU运行。在CPU运行的进程就处于运行态。CPU会执行该进程对应的程序。
:apple: 阻塞态:如果正在运行的程序想要请求某个时间的发生(如等待系统资源的分配,或者等待其他进程的响应),就不会在进行下去,而是转为阻塞状态。此时CPU就可以选择一个就绪态的进程上CPU执行。如果阻塞态想要请求的那个时间发生了,那么操作系统就会把这个进程转回就绪态。
:banana:终止态:一个进程可以执行exit系统调用,请求操作系统终止该进程,此时该进程会进入”终止态“,操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收进程的PCB,当终止进程的工作完成之后,这个进程就彻底消失了。(我挥一挥衣袖,不带走一片云彩)
2.进程状态的转换
如下图:
进程PCB中,会有一个变量state
来表示进程的当前状态,如1表示创建态,2表示就绪态...(这让了想起了算法里的状态机)为了对同一个状态下的各个进程进行一个统一的管理,操作系统会将各个进程的PCB组织起来。那怎么组织呢?(数据结构)
3.进程的组织
:leaves:链表方式
:christmas_tree:索引方式
总结