关注
在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道真题和解析
点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
814541次浏览 12972人参与
# 机械制造薪资爆料 #
319286次浏览 3727人参与
# 晒一晒我的offer #
3459247次浏览 55182人参与
# 0offer是寒冬太冷还是我太菜 #
426733次浏览 4921人参与
# 荣耀求职进展汇总 #
70091次浏览 709人参与
# 如果可以选,你最想从事什么工作 #
185569次浏览 3069人参与
# 实习生应该准时下班吗 #
80524次浏览 591人参与
# 海康威视求职进展汇总 #
101136次浏览 1213人参与
# 实习必须要去大厂吗? #
13669次浏览 218人参与
# 软件开发投递记录 #
478633次浏览 7239人参与
# 宁德时代求职进展汇总 #
36956次浏览 412人参与
# 你觉得找工作该拿大厂还是小厂练手 #
61260次浏览 868人参与
# 国企vs私企,你更想去? #
20219次浏览 204人参与
# 求职遇到的搞笑事件 #
19577次浏览 286人参与
# 滴!实习打卡 #
215872次浏览 3642人参与
# 实习工作,你找得还顺利吗? #
42070次浏览 466人参与
# 想实习转正,又想准备秋招,我该怎么办 #
117249次浏览 1318人参与
# 金三银四,你有感觉到吗 #
328274次浏览 4210人参与
# 你的秋招进行到哪一步了 #
367721次浏览 6393人参与
# 你觉得今年秋招难吗 #
310865次浏览 5789人参与