Linux linux下的进程状态

进程状态

进程状态有:就绪 / 运行 / 阻塞
linux下进程的状态
运行态 R:就绪以及正在运行,运行状态的进程才会被操作系统调度在cpu上运行
可中断休眠态 S:当前的阻塞能够被中断唤醒的休眠状态
不可中断休眠态 D:当前的阻塞不会被中断唤醒,等待条件满足自动唤醒
暂停态 T:停止运行,什么都不做
僵尸态 Z:进程已经退出了但是资源没有完全被释放的一种状态 (这是一种等待后续处理的状态)
可中断休眠状态展示S
loop.c代码

#include<stdio.h>
#include<unistd.h>
int main()
{
	int a = 0;
	sleep(5)
	while (1)
	{
		++a;
	}
	return 0;
}

运行后查看进程状态pu -aux | grep loop
在这里插入图片描述

S表示的就是该进程处于可中断休眠状态
经过5秒后自动唤醒
在这里插入图片描述

暂停状态展示T
当你尝试杀死前面的那个进程,但是在查看进程信息时,该进程还是存在,但是是暂停状态。
在这里插入图片描述
运行状态展示R
loop.c代码

#include<stdio.h>
int main()
{
	while (1)
	{}
	return 0;
}

运行后查看进程状态pu -aux | grep loop
在这里插入图片描述
僵尸状态展示Z
f.c代码

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
	int main()
	{
   
       pid_t pid;
       pid = fork();
       while (1)
      {
          sleep(1);
          printf("---child...pid:%d\n",getpid());
          printf("---father...pid:%d\n",getpid());
      }
      return 0;
  	 }

运行后查看进程状态ps -efl | head -n 1 && ps -efl | grep f
在这里插入图片描述
第一个是父进程,第二个是子进程。我们现在杀死子进程kill 4884
再查看进程状态ps -efl | head -n 1 && ps -efl | grep f
在这里插入图片描述
可以发现第二个的子进程已经是僵死状态

命令:
kill 进程号 杀死进程
kill -9 进程号 强制杀死进程

僵尸进程:处于僵死状态的进程,指的是进程已经退出不在运行,但是资源没有完全释放
僵尸进程产生的条件:子进程先于父进程退出,但是父进程没有进行进程等待,导致无法获取子进程的退出状态,因此操作系统无法直接释放子进程资源
资源没释放完是因为要保存僵尸进程的退出原因
僵尸进程的危害:资源泄漏(占据内存、进程数量等),一个用户所能创建的进程数量是有限的,并且资源没有完全回收,会占用内存资源。
处理僵尸进程的方法
退出父进程(父进程退出,子进程保存退出原因就没有意义了)
避免僵尸进程的方法
进程等待

孤儿进程:父进程先于子进程退出,则子进程称为孤儿进程,这孤儿进程的父进程成为了1号进程,并且这个孤儿进程运行在后台,并不占据前台终端。孤儿进程不会成为僵尸进程。
守护进程:是一种特殊的孤儿进程,父进程是1号(init)进程,运行在后台,与终端以及登录会话脱离关系,不再受影响。守护进程通常是一种运行在系统后台的批处理(默默的做一些循环往复的事情)
精灵进程:就是守护进程

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WhiteShirtI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值