进程的状态
进程状态,就是PCB中的一个变量,所谓的状态变化,本质就是1.改变变量 2.将PCB链入不同队列中
状态后带+加号是什么意思?
前台进程,此时bash无法接受命令,并且ctrl+c可以终止
如何让他不为前台进程
在运行进程时加个&即可
1.运行状态
在运行队列中的进程都为运行状态
2.阻塞状态
进程被CPU执行时,进程或多或少会有等待数据的时候,例如 scanf,当数据没有准备就绪时,我们的进程就无法向后执行,此时PCB就需要被链入到设备(例如是需要设备的数据)的等待队列,此时PCB没有在运行队列而是在设备的等待队列中,此时就叫做阻塞状态
tips:当进程从阻塞状态中重回运行状态是,此过程叫唤醒。
当一个进程阻塞了,我们应该看到什么现象?
1.进程卡住了
2.pcb没有在运行队列中,CPU不调度你的进程
所以我们的计算机上,什么时候会很卡?
频繁的使用同一个设备
3.挂起状态
当一个进程处于阻塞状态时,也就是说,该进程是无法被调度的,此时OS的内存资源已经严重不足时,此时OS会把该进程挂起,此过程也叫阻塞挂起
S(sleeping):休眠状态,可以被终止,浅度睡眠会对外部信号做出响应
D(disk sleep):专门对磁盘做设计的,深度睡眠,当进程向磁盘写入重要数据时,此时内存资源严重不足,OS不会将此状态的进程杀掉。
(当用户看到此进程状态时,服务器离挂掉就不远了)
T(stopped):在进程访问软件资源时,可能我们不让进程进行访问,就将它设置为STOP
t(tracing stop) :调试程序时,追踪程序,遇到断点,进程暂停了
Z(zombie):进程退出,但是PCB的退出信息并没有被OS或者父进程读取,此时OS必须维护这个退出进程的PCB,此时就叫Z状态
X(dead):OS或父进程读取完Z状态的进程退出信息完后,进程就会处于死亡状态,PCB才会被释放