Linux操作系统中进程的七种状态

发布时间:2018-05-07 20:43,

浏览次数:741

, 标签:

Linux

1 Linux中进程的七种状态(1)R运行状态(runing):并不意味着进程一定在运行中,也可以在运行队列里;

(2)S睡眠状态(sleeping):进程在等待事件完成;(浅度睡眠,可以被唤醒)(3)D磁盘睡眠状态(Disk

sleep):不可中断睡眠(深度睡眠,不可以被唤醒,通常在磁盘写入时发生)

(4)T停止状态(stopped):可以通过发送SIGSTOP信号给进程来停止进程,可以发送SIGCONT信号让进程继续运行

(5)X死亡状态(dead):该状态是返回状态,在任务列表中看不到;

(6)Z僵尸状态(zombie):子进程退出,父进程还在运行,但是父进程没有读到子进程的退出状态,子进程进入僵尸状态;(7)t追踪停止状态(trancing

stop)

2 R运行状态  当我们让一个程序在运行中(比如:建立一个死循环,输出一条语句),那么该进程一定是R状态3 S睡眠状态

显然,当我们让一个程序执行sleep代码,该进程此时一定是S状态4 僵尸状态

僵尸状态是指:当子进程退出,并且父进程没有读到子进程的退出码,子进程的状态会变为僵尸状态(Z)。通常来说就是,子进程退出,父进程还在运行,但父进程没有读取子进程的状态,子进程会变为僵尸态。

我们先简单建立一个僵尸进程:让子进程sleep后直接exit,父进程一直在循环中。1 #include 2 #include

3 #include 4 #include 5 6 int main() 7 { 8

pid_t id = fork(); 9 if(id == 0)//child 10 { 11 printf("child do something...

,pid:%d,ppid:%d\n",getpid(),getppid()); 12 sleep(10); 13 exit(1);//退出该进程 14 }

15 16 else if(id > 0)//father 17 { 18 while(1) 19 { 20 printf("father do

something... ,pid:%d,ppid:%d\n",getpid(),getppid()); 21 sleep(1); 22 } 23 } 24

25 else 26 { 27 perror("fork"); 28 } 29 return 0; 30 }在运行中,查看进程状态:僵尸进程的危害:  1

上面说到僵尸进程是由于父进程没有读取到子进程的退出信息而产生的,那么我们是不是就可以理解为父进程一直以为处于僵尸状态的子进程是没有退出的。而进程是需要维护的,

僵尸进程就会一直需要PCB对其进行维护;2 浪费内存资源。如果僵尸进程一直没有退出,就会一直占用这块内存,就会导致内存资源的浪费;3 内存泄漏。

僵尸进程一直占用资源,但是却不使用,就可能会导致内存泄漏。

5 孤儿进程孤儿进程是指:父进程先退出,子进程变为“孤儿进程”

父进程先退出,子进程后退出,由于父进程已经退出读取不到子进程的退出信息,子进程变为Z(僵尸)状态,随后子进程被1号进程Init“领养”,即子进程的父进程变为1号进程。

我们先简单建立一个孤儿进程:让子进程一直循环,父进程在sleep3秒后退出。1 #include 2 #include

3 #include 4 #include 5 6 int main() 7 { 8

9 pid_t id = fork(); 10 if(id == 0)//child 11 { 12 while(1) 13 { 14

printf("child do something... ,pid:%d,ppid:%d\n",getpid(),getppid()); 15

sleep(1); 16 } 17 } 18 19 else if(id > 0)//father 20 { 21 printf("father do

something... ,pid:%d,ppid:%d\n",getpid(),getppid()); 22 sleep(3); 23 exit(1);

24 } 25 26 else 27 { 28 perror("fork"); 29 } 30 return 0;

在运行中,查看进程的状态:

linux六种进程状态,Linux操作系统中进程的七种状态相关推荐

  1. linux进程僵停状态,Linux操作系统中进程的七种状态

    1 Linux中进程的七种状态(1)R运行状态(runing):并不意味着进程一定在运行中,也可以在运行队列里:(2)S睡眠状态(sleeping):进程在等待事件完成:(浅度睡眠,可以被唤醒)(3) ...

  2. Linux操作系统中进程的七种状态

    1 Linux中进程的七种状态 (1)R运行状态(runing):并不意味着进程一定在运行中,也可以在运行队列里: (2)S睡眠状态(sleeping):进程在等待事件完成:(浅度睡眠,可以被唤醒) ...

  3. 操作系统中进程的五种状态与JAVA中线程的六种状态

    操作系统中的五种状态 新建:创建新的进程 就绪:进程已经获得除CPU时间片以外的任何资源,一旦获得cpu时间片就能立马执行. 执行:处于就绪队列中的进程获得了时间片运行进程. 阻塞:进程时间片用完进入 ...

  4. linux进程的七种状态

    在学操作系统原理的时候,书上都说进程分为5种状态,分别为:新建状态.就绪状态.运行状态.阻塞状态,结束状态 他们的转换关系如下图 但是查了linux的进程状态之后,发现并不是那么回事,linux进程状 ...

  5. 操作系统:进程的三种状态

    进程的三种状态 1.   就绪状态:进程获得了除了CPU之外的所有的必要资源,只要获得CPU就可以立即执行,此时的进程处于就绪态. 2.   运行状态:进程已经获得CPU,正在运行,在多处理其系统中, ...

  6. 操作系统中进程的五种基本状态及其转换

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/cafucwxy/article/det ...

  7. 华为——OSPF单区域实验配置,实验抓包分析,五种报文分析,六种LSA介绍,以及如何建立邻接关系的七种状态

    华为--OSPF单区域实验配置,实验抓包分析,五种报文分析,六种LSA介绍,以及如何建立邻接关系的七种状态 前言 一:OSPF简介 1.1:工作原理 1.1.1:架构介绍 1.1.2:信息传递 1.1 ...

  8. Java中对象的三种状态

    转载自   Java中对象的三种状态 Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究. 状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可 ...

  9. css button 四种状态,css中按钮的四种状态

    css中按钮有四种状态 普通状态 hover 鼠标悬停状态 active 点击状态 focus 取得焦点状态 .btn:focus{outline:0;} 可以去除按钮或a标签点击后的蓝色边框 下面的 ...

最新文章

  1. 华为八爪鱼自动驾驶云
  2. 你知道那些JVM性能调优
  3. 神经张量网络:探索文本实体之间的关系
  4. 转:C#使用Log4Net记录日志
  5. 用gdb调试core dump文件
  6. 感知器 Perceptron
  7. 蓝桥杯练习系统习题-算法训练5
  8. php 构造骚扰短信发送机(仅供学习与参考,请勿用于非法用途)
  9. 显示和隐藏菜单栏(两种方式div、table)
  10. SpringCloud微服务注册调用入门-路由网关
  11. npm install vs. update - 有什么区别?
  12. ant 使用java 运行类_用ANT构建java可执行程序
  13. 在Kali中安装foremost
  14. 计算机系统大作业——hello的一生
  15. PLC模拟量控制的3个要求
  16. linux ftp上传命令实例,ftp上传文件命令,Linux中使用ftp命令上传文件
  17. 用【花生壳】穿透内网主机运用dai搭建校园实现访问外网访问只有学校内网的教务系统
  18. 专用计算机的运行速度,WIN10专业版下电脑运行速度慢多个解决技巧
  19. Bloodsucker ZOJ - 3551(期望DP)
  20. 卷尺精度标准_钢卷尺精度等级介绍

热门文章

  1. 和我一起打造个简单搜索之SpringDataElasticSearch入门
  2. C++走向远洋——39(指向学生类的指针)
  3. arm汇编学习(二)
  4. java中组件与容器_java中的容器组件和非容器组件
  5. 看看专科程序员与本科程序员之间,到底有什么区别?
  6. python语言只采用解释一种翻译方式对吗_python-guide翻译
  7. Mysql使用存储过程快速添加百万数据
  8. iptables 常用规则使用实例
  9. php网站首页点击更多时获取数据,jQuery+PHP实现点击按钮加载更多,不刷新页面加载更多数据!附:可用源码+demo...
  10. java thread参数传递_将参数传递给Java Thread