关注
在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 评论
相关推荐
投递百度等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
236491次浏览 1933人参与
# 学历or实习经历,哪个更重要 #
40092次浏览 292人参与
# 北方华创开奖 #
22097次浏览 251人参与
# 地方国企笔面经互助 #
2394次浏览 6人参与
# 应届生被毁约被毁意向了怎么办 #
25867次浏览 235人参与
# 选完offer后,你后悔学本专业吗 #
8548次浏览 55人参与
# 机械应届生薪资要多少才合适? #
12199次浏览 59人参与
# 你最想要的公司福利是? #
38201次浏览 78人参与
# 查收我的offer竞争力报告 #
15332次浏览 209人参与
# 一觉醒来,我觉醒了超级打工人系统 #
2602次浏览 32人参与
# 没有实习经历,还有机会进大厂吗 #
804083次浏览 13794人参与
# 你觉得第一学历对求职有影响吗? #
14742次浏览 121人参与
# 我的工作日记 #
20877次浏览 269人参与
# 寒假躺平还是提前实习 #
57730次浏览 424人参与
# 秋招被确诊为…… #
52099次浏览 291人参与
# 总结:哪家公司面试体验感最差 #
24945次浏览 121人参与
# 公司情报交流地 #
31406次浏览 222人参与
# 不给转正的实习,你还去吗 #
1515010次浏览 16955人参与
# 00后45度躺现状 #
38215次浏览 311人参与
# 机械人,签完三方你在忙什么? #
23614次浏览 123人参与
# 实习,投递多份简历没人回复怎么办 #
2386441次浏览 34244人参与