长沙门户网站建设公司,深圳 网站设计公司价格,顶尖文案,烟台做网站公司哪家好广义概念#xff1a;
从广义上来讲#xff0c;进程分为新建、运行、阻塞、挂起、退出五个状态#xff0c;其中新建和退出两个状态可以直接理解字面意思。 运行状态#xff1a; 这里涉及到运行队列的概念#xff0c;CPU在读取数据的时候#xff0c;需要把内存中的进程放入…广义概念
从广义上来讲进程分为新建、运行、阻塞、挂起、退出五个状态其中新建和退出两个状态可以直接理解字面意思。 运行状态 这里涉及到运行队列的概念CPU在读取数据的时候需要把内存中的进程放入运行队列之中依次执行我们一般认为只要一个进程在运行队列之中无论当前CPU是否正在处理它这个进程的状态都是运行状态。 阻塞状态 一些进程可能需要在运行过程中发生向磁盘写入或读取数据的操作我们知道磁盘的速度是相对较慢的当操作系统认为某一个进程需要消耗一定时间与磁盘交互的时候就会暂时将它移出运行队列否则就浪费CPU资源了当然进程与磁盘交互也是要讲求顺序的我们称之为等待队列。 挂起状态 按我的看法来挂起状态是阻塞状态的一种极端当内存空间非常有限的情况下一些进程由于迟迟不能完成与外设的交互处于一种占着茅坑不拉屎的状态操作系统当然要对这种进程予以一定的管理通常会把此进程信息置换到磁盘中的swap分区中等待合理实际再次调度。
Linux下的进程状态
Linux的进程大致分为6中分别是运行R、睡眠S、休眠D、停止T、僵尸Z、死亡XR对应运行S、D、T对应阻塞X、Z对应退出
下面我们通过实现来观察一下部分进程状态 R运行 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9f204d1262cb4b30913d3b717fed9150.png
睡眠S
printf的过程就是在与外设交互的过程
————————————————————
一般我们把S状态成为可中断睡眠通俗一点讲就是一个进程正在等待队列之中但交互迟迟没有完成操作系统便会讲该进程挂起。而D状态又称不可中断睡眠如果不得到需要的数据就会一直抢占着空间。T则是直接暂停一个进程。
僵尸进程 指的是一个已经执行完却仍然占据内存空间的一个将死进程正在等待其父进程对它进行检验回收一般在父进程比子进程迟结束的时候发生过多的僵尸进程会浪费空间资源。
下面来模拟一个僵尸进程
孤儿进程
通过fork之后会形成一对父子进程一般情况下子进程结束后是需要父进程来帮助回收资源的但是有些时候父进程可能比子进程先退出子进程就丧父了这种情况下的子进程我们称之为孤儿进程。 但是孤儿进程不像僵尸进程一样会浪费资源在一个进程成为孤儿进程后将有1号init进程领养帮助其回收。