首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux】进程状态&&僵尸进程和孤儿进程&&阻塞挂起和运行

2.4 D状态 D状态是Linux系统比较特有的状态。...为了保证孤儿进程正常被回收,孤儿进程会被操作系统领养。 可以直接kill掉孤儿进程: 在之前在Linux上写的代码,怎么出来没有关系过僵尸呢?或者内存泄漏?...进程的阻塞挂起和运行 在网上找的一张进程状态图: 终止状态就等价于Z状态和X状态。 4.1 运行 进程运行一般在CPU上运行。...4.3 挂起 操作系统在运行进程的时候内存时比较吃紧的,一旦进程出于阻塞状态,那么就意味着当前进程不会被调度,这个进程的代码和数据就不会被访问,此时就会把这个进程的代码和数据唤出到磁盘上。...这个进程的PCB还在内存中,只是它的代码和数据在磁盘的swap分区,此时把这种状态叫做阻塞挂起。 这样操作系统就会更合理使用内存资源。 在用户层是感知不到的。 频繁的换入换出,会导致效率问题。

19310

【Kotlin 协程】协程的挂起和恢复 ② ( 协程挂起 和 线程阻塞 对比 )

文章目录 一、协程挂起 和 线程阻塞 对比 1、协程挂起 2、线程阻塞 3、挂起阻塞对 UI 的影响 4、挂起分析 一、协程挂起 和 线程阻塞 对比 ---- 挂起是协程中的概念 , 只能在协程中使用...; 阻塞是线程中的概念 , 可以在主线程和子线程中使用 ; 1、协程挂起 协程 挂起 操作 : 在协程中使用 delay 函数 , 挂起 20 秒时间 , 然后 20 秒后更新 UI ; delay...主线程更新 UI") 3、挂起阻塞对 UI 的影响 协程 挂起 操作 不会出现 阻塞 UI 刷新的情况 , 挂起的 20 秒不影响 UI 刷新显示 ; 但是如果将主线程阻塞 , UI 不再刷新 , 会出现...ANR 崩溃异常 ; 图形化 GUI 系统中 , 一般都在主线程中更新 UI , 主线程中都有一个无限循环 , 不断刷新界面 , 如果在主线程中执行了耗时操作 , 就会影响到界面的刷新 , 出现漏帧..., ANR 崩溃异常 ; 4、挂起分析 协程中有挂起操作 , 会将挂起点的状态保存 , 同时协程停止执行 , 等待挂起函数执行完毕后 , 协程继续执行 ; 相当于阻塞的是协程 , 不会阻塞主线程 ;

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

进程的基本状态及转换和阻塞挂起的理解【转】

静止就绪:指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪。...阻塞挂起的理解 挂起是一种主动行为,是把一个进程从内存转到外存,而阻塞则是一种被动行为(并不绝对,看个人理解),是在等待事件或资源时任务的表现。...对于挂起,其进程所有资源都转入外存;而阻塞,其进程所有资源依然保存在内存中。...对应挂起的行为是激活,即当没有活动就绪进程时或静止就绪队列里面有进程优先级高于活动就绪里面所有进程,还有就是当一个进程释放足够内存时,系统会把一个高优先级阻塞激活。...而阻塞却没有对应的主动行为来解除,需要其他进程或系统唤醒。

1.5K40

Linux编程(阻塞和非阻塞IO)

Linux设备驱动中的阻塞和非阻塞I/0,简单来说就是对I/O操作的两种不同的方式,驱动程序可以灵活的支持用户空间对设备的这两种访问方式。...一、基本概念: 阻塞操作:是指在执行设备操作时,若不能获得资源,则挂起进程直到满足操作条件后再进行操作。被挂起的进程进入休眠, 被从调度器移走,直到条件满足。...非阻塞操作:在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可以进行操作。...非阻塞应用程序通常使用select系统调用查询是否可以对设备进行无阻塞的访问最终会引发设备驱动中 poll 函数执行。...非阻塞I/O的操作在应用层通常会用到select()和poll()系统调用查询是否可对设备进行无阻塞访问。select()和poll()系统调用最终会引发设备驱动中的poll()函数被调用。

5.4K20

如何在Linux挂起和恢复进程?

Linux操作系统中,挂起和恢复进程是一种管理和控制运行中进程的重要操作。挂起进程将其置于休眠状态,而恢复进程则重新激活它们以继续执行。...这种操作对于优化系统资源的使用、调试进程以及实现进程间通信等方面都非常有用。本文将详细介绍如何在Linux挂起和恢复进程,包括使用常见的命令和工具进行操作。...以下是在Linux挂起进程的步骤:首先,需要获取要挂起进程的进程ID(PID)。可以使用ps命令或pgrep命令来查找进程ID。...总结挂起和恢复进程是Linux中常用的管理和控制进程的操作之一。通过挂起进程,可以将其置于休眠状态,暂停其执行;而恢复进程则重新激活进程,使其继续执行。...本文介绍了在Linux中使用kill命令以及killall和pkill工具来挂起和恢复进程的方法。通过掌握这些操作,您可以更好地管理和调试运行中的进程,并优化系统资源的使用。

1.8K40

linux阻塞与非阻塞(connect连接超时)

解析文档,非阻塞connect如何使用: ①当我们将sock设置为非阻塞之后,使用connect去连接服务端,即使服务端开启了,connect系统调用也不会连接成功,connect而是以失败告终,并返回错误...②但是非阻塞connect返回的错误是有讲究的: 如果非阻塞connect返回的错误是EINPROGRESS,代表不是connect系统调用出错了,而是connect可能会在后面才会建立完整地连接(...,代表就是connect系统调用本身出错了,那么就可以做一些相应的错误处理了 ③当非阻塞connect以EINPROGRESS错误返回之后,我们可以给select、pol或epoll设置等待时间,并将客户端封装在等待可写的结构中...,进一步来等待非阻塞connect客户端与服务端建立完整地连接,在等待的过程中,如果非阻塞connect建立成功了,客户端的sock_fd就会变成可写的(这个在本人的IO复用文章中介绍过,见下图) ④当非阻塞...在有些系统(比如Linux)上返回-1,而在有些系统上(比如源自伯克利的UNIX)返回0 这些问题没有一个统一的解决办法 三、编码演示案例 #include #include <stdlib.h

6K10

Linux编程(阻塞的概念)

阻塞。 好吧,再来一点营养。阻塞是啥意思呢? 就是水管堵住了!扭开水龙头没有水出来。...这个道理跟Linux下读取慢速设备(主要指管道和套接字)数据的情形非常相似,例如当我们在读取一个管道时,如果管道里面没有数据,那么我们什么都读不出来,于是就进入了所谓的“阻塞”状态了,说白了阻塞就是使得当前进程或者线程睡眠了的意思...那么再进一步,什么时候会阻塞呢?下面的表格简单描述了这些清空: ? 其中,读者指的是对管道文件拥有读权限的进程或线程(注意不是正在读),写者指的是对管道文件拥有写权限的进程或线程(注意不是正在写)。...除此之外,其实open()函数也会发生阻塞,比如用只读或者只写open一个管道文件的时候。因为一根只有出口或者只有入口的水管,是无法使用的呀!其实就是生活常识。嘿嘿!

2.1K30

linux系统编程之信号(三):信号的阻塞与未决

进程可以选择阻塞(Block)某个信号,SIGKILL 和 SIGSTOP 不能被阻塞。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。...二、信号集处理函数 sigset_t类型(64bit)对于每种信号用一个bit表示“有效”或“无效”状态,至于这个类型内部如何存储这些bit则依赖于系统实现,从使用者的角度是不必关心的,使用者只能调用以下函数来操作...函数sigfillset初始化set所指向的信号集,使其中所有信号的对应bit置位,表示该信号集的有效信号包括系统支持的所有信号。...;         flag = 1;     } } 如果将程序中的37,57,58,75关于flag变量的语句注释掉,则输出如下: simba@ubuntu:~/Documents/code/linux_programming...参考:《APUE》、《linux c 编程一站式学习》

2K00

linux源码看socket的阻塞和非阻塞

linux源码看socket的阻塞和非阻塞 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 大部分高性能网络框架采用的是非阻塞模式。...笔者这次就从linux源码的角度来阐述socket阻塞(block)和非阻塞(non_block)的区别。 本文源码均来自采用Linux-2.6.24内核版本。...\非阻塞状态 我们用fcntl修改socket的阻塞\非阻塞状态。...阻塞后什么时候恢复运行呢 情况1:有对应的网络数据到来 首先我们看下网络分组到来的内核路径,网卡发起中断后调用netif_rx将事件挂入CPU的等待队列,并唤起软中断(soft_irq),再通过linux...希望笔者这篇文章能帮助到阅读linux网络协议栈代码的人。

3.5K20

linux系统编程之基础必备(七):readwrite函数与(非)阻塞IO的概念

与睡眠状态相对的是运行(Running)状态,在Linux内核中,处于运行状态的进程分为两种情况: 1、正在被调度执行。...非阻塞I/O有一个缺点,如果所有设备都一直没有数据到达,调用者需要反复查询做无用功,如果阻塞在那里,操作系统可以调度别的进程执行,就不会做无用功了。...但是写出来的东西是ext3文件,该磁盘卸下来,mount到其他任何linux系统上,都可以查看。而基于RAW设备的设计系统,一般是不满现有ext3的诸多缺陷,设计自己的文件系统。...这样的磁盘卸下来,mount到其他linux系统上,是无法识别其数据的。两者都要通过驱动层读写;在系统引导启动,还处于实模式的时候,可以通过bios接口读写raw设备。...参考:《linux c 编程一站式学习》 http://dirlt.com/apue.html

3.9K00

一种理解同步异步,阻塞阻塞Linux IO 模型,select poll epoll 的方法

区分:线程流向下执行需不需要等待系统调用的结果。 阻塞与非阻塞 线程执行过程中,产生一个外部调用后,会不会把该线程流“堵”住,会“堵”对应的是阻塞,反之为非阻塞。...Linux的五种IO模型 上一节中对同步/异步,阻塞/非阻塞的描述只能说能够恰好区分它们,如果不是在计算机领域而是生活中,道理也类似。...然而计算机中的某些专业术语又需要放在专门的情景中去看,例如下面将要提到的Linux IO模型,建议理解模型本身,而不是抠同步/异步与阻塞阻塞的字眼,因为会发现就算是非阻塞模型也有阻塞的部分,同步IO与异步...blocking IO 阻塞IO是socket的默认设置,其模型如下图所示,程序调用recvfrom产生一个系统调用,kernel收到该调用请求后有两个步骤,第一是等待数据准备好,第二是将数据从内核空间拷贝到用户空间然后返回...如果一轮遍历无果则挂起,直到超时或者有设备驱动发生自身资源可读写后将其从等待队列唤醒,则执行新一轮的遍历。 把fd_set从内核空间拷贝到用户空间并将进程从各个等待队列中删除。

6.8K10

分布式系统关注点(20)——阻塞与非阻塞有什么区别?

错过这篇文章的可以先去看一下再来(分布式系统关注点——深入浅出「异步」)。 其实我知道有不少小伙伴容易将「异步」和「非阻塞」搞混。脑海里印象可能是这样的:异步=非阻塞,同步=阻塞?...同步与阻塞/非阻塞 你平时编写的代码中,大部分的「同步」调用,本质上都是「阻塞」的。但是「同步」调用也可以做到「非阻塞」的效果。...上图中,几次阻塞之间空白区域就可以用于做其它事,所以是「非阻塞」的。 异步与阻塞/非阻塞 上一篇文章中的「异步」例子就是一个「非阻塞」的例子,我们来看看为什么。...比如大名鼎鼎的linux中的io复用模型poll/select/epoll,本质上都是「同步」+「非阻塞」的。还有知名网络通信框架Netty。...相关文章: 分布式系统关注点——深入浅出「异步」 分布式系统关注点——360°全方位解读「缓存」 ---- 作者:Zachary 出处:https://www.cnblogs.com/Zachary-Fan

63520

Zuul 2: Netflix的异步、无阻塞系统之旅

阻塞和非阻塞系统的区别 要理解为什么我们要构建Zuul 2,您必须首先理解异步和非阻塞(“异步”)系统与多线程、阻塞(“阻塞”)系统在理论上和实践中的架构差异。...为了抵消这些风险,我们构建了限流机制和库(例如,Hystrix)来保持这些事件期间阻塞系统的稳定。 ? 多线程系统架构 异步系统的操作方式不同,通常每个CPU内核有一个线程处理所有请求和响应。...异步非阻塞系统架构 异步系统的优点听起来很好,但是上面的优点是以操作复杂性为代价的。阻塞系统很容易理解和调试。...异步Zuul过滤器允许我们在阻塞系统和非阻塞系统中执行完全相同的过滤逻辑。这使我们能够使用一个过滤集, 既可以为我们的合作伙伴开发网关功能,也可以在独立的代码库中开发基于netty的体系架构。...我们的系统调试、编码和测试更加复杂了,而且我们在Netflix的技术生态系统中工作,这个系统的运行假设是阻塞系统

1.7K30

Linux系统|Linux系统应急响应

目录 排查用户相关的信息 排查进程端口相关的信息 查找恶意程序并杀掉 斩草除根 判断入侵方式,修复漏洞 当我们被告知一台Linux服务器被黑客入侵,黑客利用该服务器进行挖矿...w #显示已经登陆系统的用户列表,并显示用户正在执行的指令 users #显示当前登录系统的所有用户的用户列表 last #查看最近登录成功的用户及信息...,查看的是 /var/log/wtmp 文件 lastb #查看最近登录失败的用户及信息,查看的是 /var/log/btmp 文件 lastlog #显示系统中所有用户最近一次登录信息...#查看爆破用户名字典 总的来说,黑客入侵主机有下列几种情况: 通过 redis 未授权漏洞入侵(好多挖矿程序是通过这个) ssh 弱口令暴力破解 Web 程序漏洞入侵 参考文章: 记一次Linux...木马清除过程 相关文章:Redis未授权访问漏洞 Linux挖矿病毒的清除与分析 Linux下性能监控、守护进程与计划任务管理 来源:

9.4K20

Linux】盘点广义层面上【三种最基本的进程状态】

前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎!...本章主要内容面向接触过Linux的老铁 主要内容含: 一.进程状态变化の本质原理 PS:我们大致知道就可以,理解在下文 引入: 下面以Linux操作系统中的状态举例,不同系统或多或少会有差别...(键盘)的 wait_queue等待队列中 这个状态就是 阻塞状态 阻塞状态 的本质: PCB不在运行队列中,而在设备的等待队列中 PCB同时也可以在其他PCB的等待队列中 3.挂起状态 如果一个进程当前被...挂起状态的本质 :操作系统把在内存中的进程(代码和数据)置换到磁盘中(SWAP分区) 操作系统会优先挂起阻塞的进程,因此也叫: 阻塞挂起 这种挂起状态,会造成系统效率变低 在设计操作系统时,会避免将用于置换...PCB的SWAP分区设置过大,防止操作系统过于依赖挂起

10810

Linux下Socket编程(三)——非阻塞select的使用简介

简介 什么叫阻塞和非阻塞 select fd_set类型的变量相关宏定义 fcntl 实例 select总是返回1的问题。...什么叫阻塞和非阻塞 阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。...tm.tv_usec = 0; //这三个参数都是描述符的集合, //第一个rfds是用来保存这样的描述符的:当描述符的状态变成可读的时系统就会告诉...select函数返回, //第二个wfds是指有描述符状态变成可写的时系统就会告诉select函数返回, //第三个参数efds是特殊情况...,即描述符上有特殊情况发生时系统会告诉select函数返回 int res=select(sock+1,NULL,&set,NULL,&tm);

3.9K10

Linux】生产者消费者模型——阻塞队列BlockQueue

---- 二、基于blockqueue的生产和消费模型 阻塞队列:阻塞队列(Blocking Queue)是一种常用于实现生产者和消费者模型的数据结构 阻塞队列为空时,从阻塞队列中获取元素的线程将被阻塞...,直到阻塞队列被放入元素。...阻塞队列已满时,往阻塞队列放入元素的线程将被阻塞,直到有元素被取出。...函数的第二个参数必须是我们正在使用的互斥锁,满了就会进行等待,如果像之前一样把锁拿走,那么其他线程就无法访问共享资源 a.pthread_cond_wait:该函数调用的时候,会以原子性的方式,将锁释放,并将自己挂起...消费者与消费者也要竞争锁 **换句话来说:在阻塞队列中,无论外部线程再多,真正进入到阻塞队列里生产或消费的线程永远只有一个。

15040

Linux(程序设计):55—非阻塞connect(EINPROGRESS)「建议收藏」

解析文档,非阻塞connect如何使用: ①当我们将sock设置为非阻塞之后,使用connect去连接服务端,即使服务端开启了,connect系统调用也不会连接成功,connect而是以失败告终,并返回错误...②但是非阻塞connect返回的错误是有讲究的: 如果非阻塞connect返回的错误是EINPROGRESS,代表不是connect系统调用出错了,而是connect可能会在后面才会建立完整地连接(...,代表就是connect系统调用本身出错了,那么就可以做一些相应的错误处理了 ③当非阻塞connect以EINPROGRESS错误返回之后,我们可以给select、pol或epoll设置等待时间,并将客户端封装在等待可写的结构中...,进一步来等待非阻塞connect客户端与服务端建立完整地连接,在等待的过程中,如果非阻塞connect建立成功了,客户端的sock_fd就会变成可写的(这个在本人的IO复用文章中介绍过,见下图) ④当非阻塞...在有些系统(比如Linux)上返回-1,而在有些系统上(比如源自伯克利的UNIX)返回0 这些问题没有一个统一的解决办法 三、编码演示案例 #include #include <stdlib.h

89330
领券