V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ungrown
V2EX  ›  编程

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

  •  
  •   ungrown · 2020-07-21 11:32:28 +08:00 · 2019 次点击
    这是一个创建于 1588 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    然后 select 仍然是轮询上面设置的状态。epoll 是在中断里加了回调。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3490 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 11:25 · PVG 19:25 · LAX 03:25 · JFK 06:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.