关注
在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 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 哪些公司开提前批了? #
28621次浏览 271人参与
# 工作中哪个瞬间让你想离职 #
28253次浏览 192人参与
# 风评不好的公司,你会去吗? #
64740次浏览 458人参与
# 在职场上,你最讨厌什么样的同事 #
16136次浏览 158人参与
# 机械人,秋招第一次笔试的企业是哪家? #
40979次浏览 325人参与
# 华子oc时间线 #
1244820次浏览 6487人参与
# 哪些公司校招卡第一学历 #
71728次浏览 284人参与
# Offer比较,你最看重什么? #
191989次浏览 1308人参与
# 实习如何「偷」产出? #
53959次浏览 1372人参与
# 入职以后才知道的校招谎言 #
88858次浏览 584人参与
# 不卡学历的大厂有哪些? #
31331次浏览 238人参与
# 小米硬件提前批进度交流 #
171030次浏览 1526人参与
# 两会劳动法放大招 #
76634次浏览 692人参与
# 校招阶段,学历VS技术哪个更重要? #
18512次浏览 188人参与
# 机械人春招想让哪家公司来捞你? #
349496次浏览 3088人参与
# 除了主业以外,你还有哪些其他收入? #
12897次浏览 202人参与
# 腾讯音乐求职进展汇总 #
98348次浏览 571人参与
# 你觉得技术面多长时间合理? #
100412次浏览 722人参与
# 机械人,你的第一份感谢信是谁给的 #
30669次浏览 310人参与
# 职场新人体验 #
27882次浏览 258人参与