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

Linux进程的Uninterruptible sleep(D状态

Linux 进程有两种睡眠状态,一种interruptible sleep,处在这种睡眠状态进程是可以通过给它发信号来唤醒的,比如发 HUP 信号给 nginx 的 master 进程可以让 nginx...Linux进程的睡眠状态有2种:     一种是可中断睡眠,其标志位是TASK_INTERRUPTIBLE ,可中断的睡眠状态进程会睡眠直到某个条件变为真,比如说产生一个硬件中断、释放进程正在等待的系统资源或是传递一个信号都可以是唤醒进程的条件...NFS 卷不可访问导致进程进入 D状态的,那么可以通过恢复该 NFS 卷的连接来使进程的 IO 请求得到满足,除此之外,要想干掉处在 D 状态进程就只能重启整个 Linux 系统了。...如果为了想要杀掉 D 状态进程,而去杀掉它的父进程(通常是shell,在shell下允许某进程,然后某进程转入D状态),就会出现这样的状态:他们的父进程被杀掉了,但是他们的父进程 PID 都变成了1,...也就是 init 进程D状态进程会变成僵尸进程

9.8K10

LinuxD 状态进程与平均负载

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

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

Linux进程状态

,再把存入磁盘的数据和代码换入内存中,并把进程放入CPU中运行 把代码和数据暂时性由操作系统交换到磁盘时,此时的进程称之为挂起状态 3.Linux进程状态 static const char * const...stopped)", /* 4 */ "t (tracing stop)", /* 8 */ "X (dead)", /* 16 */ "Z (zombie)", /* 32 */ }; Linux源码当中进程所对应的状态.../mytest 10 10 ^C//可以被终止 在终端1中ctrl c,终止mytest运行,S状态被终止 3.D休眠状态 ——不可中断休眠 想要往磁盘写入100MB的数据,由于磁盘写入数据很慢,所以进程把自己设置成阻塞状态...,若内存资源特别紧张,操作系统就想要把这个阻塞状态进程干掉,可是此时磁盘依旧还在写入数据,这样做就会使磁盘写入数据失败,最终就会使100MB的数据丢失 若该进程的休眠状态D状态,使操作系统无法干掉进程...linux进程退出的时候,一般进程不会立即彻底退出,而是要维持一个状态叫做Z状态,也叫做僵尸状态 方便后续父进程读取子进程退出的退出结果 如何让我们看到僵尸状态呢?

5.9K30

Linux进程状态

; 程序计数器: 程序中即将被执行的下一条指令的地址; 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针上下文数据:                  进程执行时处理器的寄存器中的数据...[休学例子,要加图CPU,寄存器; I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表; 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。...其他信息  在抢占式多任务处理中,进程被抢占时,所有cpu寄存器的内容,页表指针,程序计数器会被保存下来。...linux进程状态 linux中的进程状态分为这几种 static const char * const task_state_array[] = { "R (running)", /* 0...stop)", /* 8 */ "X (dead)", /* 16 */ "Z (zombie)", /* 32 */ }; 这个S状态D状态就算是阻塞状态了,S状态又叫浅度睡眠,D

15610

Linux进程学习【进程状态

,即把手机揣进兜里,然后 专心执行走路这个 进程 进程状态 进程 有各种运行状态,方便OS进行管理,在 Windows 中,进程 状态是这样的 而在我们 Linux 中,新建、就绪、运行都可以看作...运行 R 这一个状态,所以比较清晰 而我们今天要学习的正是 Linux 中的 进程 状态 进程是何种状态,取决于此进程的PCB在哪里排队 ️运行 R 首先来看看第一种状态 R 以我们以往的认知来说...不用在等待队列中 排队, CPU 就一直在处理死循环,此时可以观察到 运行 R 状态 此时进程 myProcess 就在运行中 注意: R 表示此时 进程 已经在 运行队列 中排队了,但 进程...休眠 D,休眠 又被称为不可中断休眠,顾名思义,休眠 D 状态下的 进程 是无法终止的,kill 指令和 OS都无能为力,只能默默等待 进程阻塞 结束,拿到资源了,进程 才会停止 休眠 D 状态 终止...休眠 D 进程的一个方法就是切断电源,此时进程是结束了,但整个系统也结束了 倘若存在 休眠 D 进程长时间运行,那么此时就表示系统离宕机不远了 不可休眠状态比较少见,一般出现于IO阻塞 用途: 使操作系统无法杀死该

17030

Linux进程概念与进程状态

: 程序中即将被执行的下一条指令的地址; 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针; 上下文数据: 进程执行时处理器的寄存器中的数据; I/O状态信息: 包括显示的...I/O请求,分配给进程的I/O设备和被进程使用的文件列表; 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等; 其他信息 抽象出来可以用如下结构体来表示 (假设task_struct...---- 2、具体Linux操作系统层面 上面我们谈到的都是理论上的操作系统中进程状态,下面我们来学习具体Linux操作系统中进程状态。...为了防止这种情况的发生,Linux设计出了深度睡眠 (D) 状态,处于深度睡眠状态进程既不能被用户杀掉,也不能被操作系统杀掉,只能通过断电,或者等待进程自己醒来。...总结:可以看到,具体的Linux操作系统下的进程状态和普适的操作系统学科上进程状态是不同的,比如Linux操作系统没有阻塞和挂起状态,阻塞状态通过睡眠、深度睡眠、暂停、追踪暂停等状态表现出来,而进程处于这些状态时是否会被调整为挂起状态

5.4K00

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+状态

1.2K20

Linux 查看进程状态进程关闭命令

前言在 Linux 系统中,查看进程状态和杀死进程是常见的管理任务,特别是我们部署完项目之后,需要确定程序是否正常启动,或者是需要关闭某个进程。...本文将详细介绍如何查看进程状态以及如何介绍使用 kill 命令杀死进程。希望能通过本文,让大家熟悉Linux相关命令,加深对相关命令的操作。1....查看进程状态Linux 中,可以使用以下命令查看进程状态,使用的命令其实有很多,但是主要的是ps命令,下面介绍一下相关命令用法。1.1. ps 命令ps 命令用于查看当前系统中的进程。...常用选项包括:-b:以批处理模式运行-n:指定刷新次数示例:top -b -n 11.3. htop 命令htop 命令是一个交互式的进程查看器,提供了更友好的界面和更多功能。...总结本文算是Linux比较基础的命令介绍,通过本文应该可以了解了如何在 Linux 中查看进程状态以及如何使用 kill 命令杀死进程,在实际应用中也是用ps查询对应的进程pid,然后在利用kill命令关闭进程

19510

Linux】用三种广义进程状态 来理解Linux进程状态(12)

本章主要内容面向接触过Linux的老铁 主要内容含: 一.进程状态变化の本质原理 PS:我们大致知道就可以,理解在下文 引入: 下面以Linux操作系统中的状态举例,不同系统或多或少会有差别...PCB的SWAP分区设置过大,防止操作系统过于依赖挂起; 三.Linux进程状态 1.Linux进程状态在kernel源代码里的定义 R运行状态(running) : 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里...:不带+ 不能ctrl c关闭;只能kill关闭;可以输入其他命令 3.D :磁盘休眠状态 / 深度睡眠状态 D磁盘休眠状态(Disk sleep): 有时候也叫不可中断睡眠状态(uninterruptible...Linux在特殊情况下,会通过 杀掉睡眠中的进程,节省资源! 即我们熟知的“杀后台” 深度睡眠状态不可被杀掉!...Z :僵尸状态Linux特有状态) 处于僵尸状态进程:僵尸进程 进程结束不会立刻释放,会等一小会 当一个进程在退出的时候,退出信息会由OS写入到当前退出进程的PCB中,可以允许进程的代码和数据空间被释放

6310

Linux中查看进程状态信息

Linux中查看进程状态信息 一、常用命令总结 ps -l 列出与本次登录有关的进程信息; ps -aux 查询内存中进程信息; ps -aux | grep ***...( 更多内容,可参阅程序员在旅途) 二、进程简述及查看方式 进程是运行的程序在系统中的存在形式,通过查看进程状态信息,我们可以了解进程占用的系统资源情况,对系统的运行状态进行分析、调整...,从而让系统保持在一个平稳的状态下运行。...Linux中查看进程信息的基本命令有ps、top,其中ps(Process Status)查看的是进程信息的一个快照,显示的我们执行ps这个命令时进程的信息,top显示的是进程的动态信息,使用这个命令会看到进程信息的动态变化...)系统调用后释放, D 不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生, T 终止 Terminate 进程收到

10.6K20

Linux系统编程】进程状态

因为这两个状态是操作系统中进程比较核心的两个状态,当然还有一个运行状态它相对比较好理解,我们后面针对具体的Linux操作系统去讲解。...而我们下面呢,要针对一款具体的操作系统——Linux来学习一下进程状态。 3....看看Linux内核源代码怎么说 一个进程可以有多个状态(在Linux内核里,进程有时候也叫做任务),那首先我们可以来看一下在kernel源代码里关于进程状态的定义: /* * The task state...D不可中断休眠状态 D 磁盘休眠状态(Disk sleep)也叫不可中断休眠状态(uninterruptible sleep),在这个状态进程通常要等待IO的结束。 也算是一种阻塞状态。...那现在进程被杀死了,就只剩磁盘拿着这100mb的数据,不知该怎么处理了。 可以直接把这些数据丢掉嘛,如果这些数据很重要呢! 那此时这种情况该如何处理呢?

14310

linux 实时监控进程状态 - pidstat

pidstat 命令用来监控所有进程状态,如进程占用的 CPU、内存、IO 可以指定监控具体的进程ID、监控时间间隔等 执行 pidstat 命令,默认显示出所有进程CPU相关的统计信息 各列含义 PID...进程ID %usr 在用户态运行时占用cpu时间的比率 %system 在内核态运行时占用cpu时间的比率 %CPU 进程总的cpu使用率 CPU 正在运行这个进程的CPU编号 Command 这个任务的命令名称...(kB) RSS 该进程使用的物理内存(kB) %MEM 该进程使用内存的百分比 (3)统计IO使用情况 # pidstat -d 信息含义 kB_rd/s 进程从磁盘每秒读取的数据量(kB) kB_wr.../s 进程向磁盘每秒写的数据量(kB) (4)综合统计 #pidstat -urd -h 统计每个进程的CPU 内存 IO数据 -h 意思为在一行显示所有信息 (5)统计指定进程的情况 # pidstat...mysql命令所有子进程的信息

4.7K30

Linux 内核】进程管理 ( Linux进程的 CPU 资源调度 | 进程生命周期 | 创建状态 | 就绪状态 | 执行状态 | 阻塞状态 | 终止状态 | 进程生命周期之间的转换 )

文章目录 一、Linux进程的 CPU 资源调度 二、进程生命周期 三、进程生命周期之间的转换 一、Linux进程的 CPU 资源调度 ---- Linux 操作系统 是 多任务系统 , 可以..." ; 二、进程生命周期 ---- 进程 在 创建 , 以及 " CPU 时间片 " 调度 , 终止 时 , 会处于不同的状态 , 这些状态就是 进程的生命周期 : 创建状态 : 进程 刚被创建时 ,...处于创建状态 ; 就绪状态 : 进程 已经 获取了 相关资源 , 以及 运行条件准备就绪 ; 执行状态 : CPU 时间片被分配给了该进程 , 正在 CPU 中执行该进程 ; 阻塞状态 : 等待被分配...CPU 时间片的过程 中 , 处于该状态 ; 终止状态 : 进程 终止后的状态 ; 三、进程生命周期之间的转换 ---- 创建状态 : Linux 中 , 调用 fork() 函数 , 创建进程 , 此时进入..." 创建状态 " ; 创建状态 -> 就绪状态 : 创建状态 中 , 等待 进程运行的 资源准备完毕后 , 会进入 " 就绪状态 " ; 就绪状态 -> 执行状态 : 就绪状态时 , " 进程调度策略

1.9K30

Linux进程状态与优先级

Linux中的进程状态 为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。...一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)这里我们具体谈一下Linux操作系统中的进程状态,下面的状态在 kernel 源代码里定义: /* * The task state array...Linux 状态总览图: 而在 Linux 中查看进程状态用的指令是 ps ajx 或者 ps aux ♐️ 并且我们可以发现,Linux 中并没有所谓的就绪状态、挂起状态等等说法,这是因为 OS...为了防止这种情况的发生,Linux进程设置了深度睡眠 (D) 状态,处于深度睡眠状态进程既不能被用户杀掉,也不能被操作系统杀掉,只能通过断电,或者等待进程自己醒来 深度睡眠状态一般很难见到,一般在企业中做高并发或高...,为了避免留在CPU的数据被误处理,每次进程离开CPU的时候都要将数据保存和带走(至于数据存放到哪去我们不关心,可以看作数据暂时放回了PCB中,但实际上是操作系统在管的这些数据),这样子才能避免数据被误处理

2.6K40
领券