操作系统 select/epoll 在硬件层面究竟是如何实现的?软中断?

2020-07-21 11:32:28 +08:00
 ungrown

软件层面这一切都被底层函数接管了,所以搜到的资料绝大多数都是讲相关的概念和调用的方法。

我相信肯定有少数资料涉及到我的困惑,但已经把能想到的关键词组合都尝试搜索过了。

既要保证及时性,又要避免无脑轮询,又要异步,虽然各种数据结构、流程信号讲得天花乱坠,但是我思来想去,到 CPU 这一块,要实现这样的特性,似乎只有中断能胜任。

我知道 x86 架构里有个作用类似于“中断管理”的模块,能统合处理各种软硬件中断。select/epoll 之类的,是不是最后都需要依赖这样的硬件结构?

2031 次点击
所在节点    编程
4 条回复
louettagfh
2020-07-21 11:42:09 +08:00
就是你说的 CPU 中断处理
des
2020-07-21 11:52:23 +08:00
ungrown
2020-07-21 11:59:46 +08:00
@louettagfh #1
@des #2
谢谢,明白了
lqs
2020-07-21 12:10:37 +08:00
无论是用 select/epool 还是普通的 read,底层都会用到中断,并设置一些状态。

然后 select 仍然是轮询上面设置的状态。epoll 是在中断里加了回调。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691848

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX