进程状态和Linux的进程状态

本文详细探讨了Linux下的进程状态,包括运行态、终止状态、堵塞(浅度睡眠和深度睡眠)、挂起、僵尸状态、孤儿进程、暂停状态以及追踪状态。通过实例解析了各种状态的转换和特点,如D状态的不可中断睡眠,Z状态的僵尸进程需要父进程回收,以及T状态的进程暂停和追踪。
摘要由CSDN通过智能技术生成

1.进程状态

1.运行态

运行态是:进程已经在运行队列中就叫运行态,代表着我已经准备好了,随时可以进行调度

2.终止状态

终止状态是:进程还在,但是永远不会运行了,随时等着被释放
但是有的人可能会想,为什么要维护一个永远不会终止态?他都不会运行了
因为释放进程其实是需要时间的,操作系统可能会很忙

3.进程堵塞

1.一个进程,使用资源的时候,可不仅仅是在申请cpu资源
2.进程可能申请更多的其他资源:磁盘,网卡,显卡,显示器资源,声卡/音响
如果我们申请cpu资源,暂时无法得到满足,需要排队的,这个叫做运行队列
那么如果申请其他慢设备的资源,申请不到,但是需要这个资源,也是需要排队的
当进程访问某些资源(磁盘网卡),该资源如果暂时没有准备好,或者正在给其他进程提供服务,此时:1.当前进程要从runqueque中移除 2.将当前进程放入对应设备的描述结构体中的等待队列,cpu速度其实非常,其实因为硬件速度太慢了,完成一个进程cpu可能连一秒都不需要
那么了解下面的概念,
进程堵塞是:当我们的进程此时在等待外部资源的时候,该进程的代码,不会被执行,在我们应用层上看到就是,我们被卡住了,这个就是进程阻塞

4.进程挂起

如果内存不足了怎么办?
操作系统就要帮我们进行辗转腾挪
进程挂起:辗转腾挪意思是:短期内不会被调度(你等的资源,短期内不会就绪)进程,它的代码和数据依旧在内存中,就是白白的浪费空间,操作系统就会把该进程的代码和数据临时置换到磁盘上这就是进程挂起

2.linux进程状态

Linux 下的主要进程状态有:
在这里插入图片描述

R状态 运行态

process代码

#include <stdio.h>
#include <unistd.h>

int main()
{
   
    while(1)
    {
   
        printf("hello pid:%d!\n",getpid());
        sleep(1);
    }
}

makefile

process:process.c
		gcc -o process process.c
.PHONY:clean
clean:
		rm -f process

运行结果
在这里插入图片描述
按我们的想法R应该是运行状态毕竟是run!但是上面显示是S,意思是sleep睡眠模式,为什么,有人说可能是slppe(1)的问题,其实把sleep(1)给取消掉了,也还是S,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值