首页
学习
活动
专区
圈层
工具
发布

Linux 中 D 状态的进程与平均负载

这篇文章聊聊 Linux 中 D 状态的进程与平均负载的关系,通过阅读本文,你会了解到这些东西。...D 状态的进程是什么 如何编写内核模块模拟 D 状态进程 Linus 对 D 状态进程的看法 平均负载的概念 在 top 和 uptime 命令输出中的第一行有一个 load average 字段,由三个数字表示...当使用 fork() 等系统调用来创建一个新进程时,新进程的状态是 Ready 状态,在 linux 中,就绪态的进程也属于 TASK_RUNNING 状态,这个时候只是还没有拿到 CPU 的使用权。...D 状态的进程 TASK_UNINTERRUPTIBLE 在 top 命令中显示为 D 标记,也就是大名鼎鼎的 「D 状态」进程。...D 状态的进程算在平均负载里也还算合理。

3.5K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux】进程状态

    前言:   在Linux操作系统中,进程状态是一个重要而又复杂的话题。了解进程状态可以帮助我们更好地理解操作系统的运行机制。那么话不多说,开启我们今天的话题。...内核中的进程状态   Linux内核给出进程状态的几个表述: /* * The task state array is a strange "bitmap" of * reasons to sleep....✈️前后台进程   我们来解释一下为什么我们看到的进程状态是 S+ 或者 R+?在Linux中,存在着 前台进程 和 后台进程 之分。...右侧监视显示状态为 S+ ,说明此时处于休眠状态。...这时程其实就是操作系统里的阻塞状态! 虽然S状态就是 操作系统里的阻塞状态,但是操作系统级别的阻塞状态可能不仅仅包含S状态。

    1.5K10

    Linux——进程状态

    进程状态 为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有多个状态,在Linux内核中,进程也可以叫做任务。...在Linux中也是如此,Linux可能存在很多的进程,操作系统要根据它们的状态来决定后续对这些进程的操作。...对于了就绪状态和运行状态。 S睡眠状态(sleeping):意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠)。对于了堵塞状态。...D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。...从该程序我们可以看出该进程的各个信息,其中有个信息是有关进程状态的。就是STAT。 可是在上面的图片中为什么我们进程显示的状态是S呢?S可是睡眠的意思啊。令人费解,程序不是正在运行吗?

    2.6K10

    【Linux】进程状态

    3.Linux进程状态 static const char * const task_state_array[] = { "R (running)", /* 0 */ "S (sleeping)",...*/ "Z (zombie)", /* 32 */ }; Linux源码当中进程所对应的状态 ---- struct task_struct { int status;//0代表R状态 1代表s状态.../mytest 发现此时进程状态为S+ (+号后面会说) S称为休眠状态,不是R状态 ---- test.c代码修改如下 #include//test.c 2 int main(.../mytest 10 10 ^C//可以被终止 在终端1中ctrl c,终止mytest运行,S状态被终止 3.D休眠状态 ——不可中断休眠 想要往磁盘写入100MB的数据,由于磁盘写入数据很慢,所以进程把自己设置成阻塞状态...linux当进程退出的时候,一般进程不会立即彻底退出,而是要维持一个状态叫做Z状态,也叫做僵尸状态 方便后续父进程读取子进程退出的退出结果 如何让我们看到僵尸状态呢?

    7.3K30

    【Linux】进程状态

    LInux是如何做到的?...S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠状态(interruptible sleep)) D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态...接着,我们先将这个进程用19号命令暂停,然后又用18号命令重新启动这个进程,发现进程状态由原来的S+变为S,即转为后台进程。...深度睡眠状态(D状态) 这种状态我们平时很难见到,多出现在高并发,高IO的情况下 下面,我们简单了解一下这个状态,为了方便描述,我用第一人称视角来叙述。...所以在LInux退出时,一般不会彻底退出,而是先进入Z状态,Z状态是为了方便后续父进程获取子进程的退出结果。

    1.3K10

    【Linux】进程状态

    前言: 上文我们讲到了关于进程的基本概念【Linux】初见,进程概念-CSDN博客 本文我们来讲讲关于进程的状态 操作系统进程状态 操作系统中进程的概念大致分为三种...理解内核中的链表 【Linux】初见,进程概念-CSDN博客在上文我们讲到了linux中stack_struct的组织方式是:双链表。...不论是双链表、队列、单链表等等等等,都可以实现 Linux进程状态 上面讲到的操作系统进程状态,是笼统的大概念。...下面我们来讲讲具体的操作系统下进程的状态 static const char *const task_state_array[] = { "R (running)", /*0 */ "S (sleeping...运行状态 R(running)与上述无异,既在运行队列中的进程即为运行状态 阻塞状态 S(sleeping)与 D(disk sleep) S:可中断休眠,浅睡眠。

    33210

    Linux:进程状态

    等待了,等键盘输出后,把等待队列链回运行队列 内核链表 这里双指针指向指向内部 运行状态 进程在调度队列中,进程的状态都是running 阻塞状态 我们写的scanf()函数的时候,控制台卡住...进程状态 R状态 每隔一秒钟查一次进程的状态 每隔一秒查一查状态 这里&后缀,放在后台运行 kill -9 26168,结束运行。 这里都是进程都是s因为运行时间太短。...S状态 阻塞状态 T状态 暂停状态 这里按顺序操作打上断点 b9给第九行打断点 然后运行 这时候状态 这就是追踪暂停 ctrl+z命令行暂停是T状态 D状态 可中断休眠...,浅度休眠 用ctrl+c中断s状态程序演示 disk sleep,也叫磁盘休眠 挂起的时候也无法节省空间,这时候可中断休眠就会杀掉该进程,满足其他进程, 举个列子如果该进程是传入磁盘的数据的进程...为了防止这个情况,就为了优化s状态,给了进程D状态,操作系统不能杀掉他,只有重启才能杀掉进程。

    38410

    【Linux】Linux进程状态深度解析

    本文会从实际场景出发,拆解 Linux 中常见的进程状态(比如 R、S、D 等),以及它们背后的内核逻辑,帮你搞懂进程在系统里到底是怎么 “干活” 的。...,而在 Linux 系统中,运行、阻塞、挂起是最 核心的三种状态(实际会通过更具体的状态标识,如 R、S、D 等,来对应这些逻辑状态)。...【测试1】: ​​​​​​ 启动这个程序后,发现它的进程状态一直是阻塞类状态(对应 Linux 中的 S 态)。这是为什么呢?...3、D(磁盘休眠状态,disk sleep) D 状态(磁盘休眠状态,disk sleep)是 Linux 进程的一种阻塞状态,指进程因等待磁盘 IO 操作完成而进入的休眠状态。...【S/D 与 T的区别】 S(睡眠)、D(磁盘休眠)是 “被动等待”:进程是因为缺少资源(如 IO 未完成、数据未就绪)而被迫进入阻塞,等资源满足后会自动恢复; T(停止)是 “主动干预下的等待”:进程是被外部信号

    89321

    D状态IO进程造成的麻烦

    背景 当后端是本地磁盘或者底层是一个分布式的块存储,底层磁盘或者分布式块存储出现问题,比如mount进程处于D状态,这时候内核会什么行为?重复挂载会出现什么问题?...模式出现D状态的mount Interruptible Sleep :可中断睡眠,在 ps 命令中显示 S。处在这种睡眠状态的进程是可以通过给它发送信号来唤醒的。...Uninterruptible Sleep:不可中断睡眠,在 ps 命令中显示 D。处在这种睡眠状态的进程无法立即处理任何发送给它的信号,这也是无法用 kill 杀掉它的原因。...D状态的dd导致某些设备处于执行IO的不可中断的模式。mount进程读取超级块先关资源时候hang主了.在了解这个问题之前需要了解下外设磁盘和系统之间的通信方式。...既然IO通过方式,D状态的mount 进程设备处于做IO操作,无法被打断的状态,新的进程再次mount务必要进行一些IO操作,也必然产生中断,但是这个中断无法被响应,就一直处于D+状态。

    2K20

    Linux进程的状态

    S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptible sleep))。...D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。...负面影响: PID 资源耗尽:Linux 系统中 PID 范围通常为 1~32768,僵尸进程长期存在会占用 PID,导致新进程无法创建。...处理方式 被init进程接管(在类Unix系统中): 在类Unix系统(如Linux)中,当一个进程成为孤儿进程时,它会被init进程(进程ID为1)接管。...被systemd进程接管(在现代Linux系统中): 在现代Linux系统中,systemd进程取代了传统的init进程,成为系统的初始化进程。

    52210

    【Linux】进程(3)状态

    二、Linux操作系统状态说明 以下是Linux系统里对于状态的定义 static const char * const task_state_array[] = { "R (running)"...2.3 休眠状态S和深度休眠状态D S和D状态其实都是对于上面提到过的阻塞状态的定义。它们都是在等待事件的完成。...S和D状态的不同之处在于:S状态是可以打断的,可以发送信号kill -9也可以ctrl+c结束进程。而D状态是无法被打断的,它会等待IO信号输入的完成,在此期间不会相应任何外部信号。...,也就是对应的S状态。...停止状态并不属于阻塞状态,阻塞状态的S和D是停下来等待资源的输入输出没有办法运行,而停止状态则是被信号叫停。 若把有scanf输入的进程放在后台,执行到scanf时,进程会进入暂停状态。

    32110
    领券