14.僵尸孤儿-进程状态

📅 发布时间:2026/7/9 20:56:37 👁️ 浏览次数:
14.僵尸孤儿-进程状态
一个pcb既属于全局链表又属于这个队列这个队列也是双链表只不过先进先出FIFO运行状态就是正在被cpu运行或者准备好了随时等待被调度。 包括运行和就绪。一个进程要去读键盘就要转去另一个队列如果这个设备没有活跃就没有读到键盘数据所以曹组系统把这个进程从cpu拿下来链入到特定设备的等待队列该进程就永远不会被调度这个进程就卡在那就叫阻塞。从运行到阻塞本质就是把pcb链入到不同结构当中。一旦按下键盘就绪了 操作系统第一时间知道将这个状态设置成活跃检查等待队列发现指针不为空就把这头部进程设置成运行状态重新链回运行队列后来CPU调度下继续运行就读到了。内存资源严重不足时将阻塞的代码数据唤出磁盘swap分区这些进程状态叫阻塞挂起硬件好了再唤入然后改成运行状态就可以再次调度挂起是挂到外设上。如果挂完还是吃紧就打运行队列里进程的主意把一些运行进程末端代码数据挂起叫运行挂起。需要了再唤出。next指向links如何访问内部各个变量看板书这个结构可以让tast struct属于好几个结构所以断链链到别的结构很方便非如果代码printf大部分时间要等硬件所以看不见R状态这个是让进程后台运行就是不影响继续命令行输入状态R是前台运行这样杀掉进程验证阻塞状态scanf状态就是整数根据数组下标确定的理论不知道这个数具体Linux可以知道调试时候可以验证暂停状态t如果用户干的Ctrl c那么是T暂停是系统认为有错误让用户决定是否继续。内存严重不足时候可能杀掉阻塞进程所以设计磁盘这种重要的所以设置成D状态断电或者自己结束才能结束D进程暂停恢复19号就是暂停这个就是继续Z状态此时不会再调用代码数据不再具有意义所以相关信息要给父进程通过pcb给没有获取之前子进程已经退出此时就是僵尸状态。我们看不到X状态父进程回收之后子进程直接释放。运行就绪新建可以认为是运行状态阻塞状态就是S T结束状态就是Z X用户不需要知道唤入唤出所以不用知道状态高频节点可以释放也可以不释放不释放的话pcb放在unuse列表其他进程去使用类似数据结构对象的缓存可以加快创建释放速度这个机制叫slab