关注
在IO多路复用中使用epoll_wait等待IO事件的时候,进程会释放CPU。在Linux中,进程状态将会变成"S"(可中断睡眠状态)或"D"(不可中断睡眠状态,通常等待IO)。两个状态下,进程都不会占用CPU资源,因为它们都是不同形式的睡眠状态,CPU会切换到其他进程或线程继续工作。
"S"状态是可中断的睡眠状态,表示进程正在等待某个条件的满足或某个事件的发生。这种状态下的等待是可以被信号打断的,例如,系统调用如read()在没有数据可读时会使进程进入"S"状态,但接收到信号后,进程可以从系统调用中返回,处理信号。
"D"状态则是不可中断的睡眠状态,进程在这种状态下一般是正在等待某个硬件级别的IO操作完成,例如,等待磁盘IO或网络IO。这种状态的进程不能被信号打断,因为它们通常涉及到一些必须完成的硬件操作。
当你调用epoll_wait时,如果当前没有IO事件,进程会进入"S"状态。如果系统调用涉及到硬件级别的不可中断IO操作,进程可以进入"D"状态。这样设计是为了在IO操作期间不消耗CPU资源,同时允许其他进程或线程使用CPU。
所以,使用epoll_wait时,进程会进入睡眠状态直到事件发生,从而释放CPU。
来自 gpt4 的回答
查看原帖
10 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
01-19 16:02
山东外事职业大学 运营 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
12452次浏览 163人参与
# 实习教会我的事 #
59586次浏览 455人参与
# 牛客AI体验站 #
17567次浏览 298人参与
# 最难的技术面是哪家公司? #
66321次浏览 983人参与
# 当你面对裁员会如何? #
367047次浏览 2924人参与
# 职场上哪些行为很加分? #
328010次浏览 3634人参与
# 一张图晒一下你的AI员工 #
14244次浏览 178人参与
# 面试之前应该如何准备? #
219607次浏览 2331人参与
# 找不到实习会影响秋招吗 #
1447354次浏览 13730人参与
# 哪些公司对双非友好 #
208047次浏览 1169人参与
# 九月了,是考研还是就业? #
88727次浏览 549人参与
# 找实习是选平台还是选业务? #
45321次浏览 317人参与
# 实习怎么做才有更好的产出 #
33074次浏览 418人参与
# 第一次面试 #
1073424次浏览 13740人参与
# 这份实习,有没有动摇过你的职业方向? #
1582次浏览 21人参与
# 为了实习逃课值吗? #
66140次浏览 528人参与
# 工作中,努力重要还是选择重要? #
261934次浏览 2475人参与
# 毕业季,给职场新人一些建议 #
189396次浏览 2484人参与
# 拿到offer之后,可以做些什么 #
90832次浏览 460人参与
# 本周投递记录 #
848740次浏览 12229人参与