进程的状态

目录

进程的状态

从操作系统的角度宏观的看待进程状态:

S:

T:

R/R+

D


进程的状态

cpp 复制代码
pid_t id=fork();
    if(id<0)
    {
        perror("fork");
        return 1;
    }
    else if(id==0)
    {
        //child
        while(1)
        {
            printf("Son process,pid :%d ,ppid :%d\n",getpid(),getppid());
            sleep(1);
        }
    }
    else
    {
        //parent
        while(2)
        {
            printf("Parent process,pid :%d ,ppid :%d\n",getpid(),getppid());
            sleep(3);
        }
    }

这段代码printf时必须加上\n将其设置为行刷新。否则无法实时打印。

从操作系统的角度宏观的看待进程状态:

1.一个CPU一个运行队列

2.让进程入队列,本质:将该进程的task_struct结构体对象放入运行队列中。

3.进程PCB在runqueue,就是R(运行状态),并不是这个进程在运行,才是运行状态

4.进程不止占用CPU的资源,也可能随时需要外设资源

5.所谓的进程不同状态,本质是进程在不同队列中,等待某种资源

cpp 复制代码
int a=1;
while(1)
{
    printf("当前进行: %d",a;
)

./myprocess执行一下

S:

printf->显示器(外设->满)等待显示器就绪需要花费大量的时间(相对CPU而言)

%99等待IO就绪,%1执行打印代码

T:

向一个R状态的进程发送19号信号其状态就会变为T.

在发送一次18号信号就可以将其状态恢复为R

R/R+

R+前台进程,R为后台进程。

后台进程不能用ctrl+c终止,只能向其发送9号信号。

D

高IO情况才有可能出现。

处于深度睡眠状态的进程无法被OS杀掉,只能通过断电,或进程自己主动醒来。来解决。

相关推荐
小此方13 分钟前
Linux网络(二十九):从内网穿透到P2P打洞:NAT转换、代理机制与局域网通信的底层全景解析
linux·网络·p2p
Brilliantwxx20 分钟前
【Linux】基础IO(下):输出重定向、dup2 与 minishell 重定向实战
linux·运维·服务器·github·bash
学linux的QQ蛋22 分钟前
IMX6 嵌入式多传感器系统整体架构梳理
linux·嵌入式硬件·架构
小HANN33 分钟前
(架构 + InnoDB 事务 MVCC):《MySQL 底层探秘①:拆解 InnoDB,读懂事务、MVCC 与日志的底层逻辑》
linux·运维·服务器·经验分享
kyle~36 分钟前
Linux --- 虚拟内存 1.fork、2.COW、3.mmap、4.page fault、5.TLB、6.页表
linux·运维·服务器
服务器硬件项目经理1 小时前
第3章GPU vs CPU:为什么AI训练要用GPU
服务器·人工智能·嵌入式硬件·gru·硬件工程·硬件
Techblog of HaoWANG1 小时前
Ubuntu 下将 Ollama 服务配置为监听 0.0.0.0:11434 完整实践
linux·数据库·ubuntu·ollama
似水流年QC1 小时前
LangChain 入门与实战
服务器·数据库·langchain
小HANN1 小时前
Ceph分布式存储深度解析-下篇
linux·运维·服务器·经验分享
张文君1 小时前
ubuntu iscsi客户端 关闭磁盘
linux·运维·ubuntu