V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
iXingo
V2EX  ›  程序员

关于定时器 Timer 与超时 timeout, 操作系统是如何实现的

  •  
  •   iXingo ·
    iXingo · Sep 10, 2021 · 2172 views
    This topic created in 1692 days ago, the information mentioned may be changed or developed.

    想了解一些底层的细节

    8 replies    2021-09-13 21:46:56 +08:00
    byaiu
        1
    byaiu  
       Sep 10, 2021
    关键词 timer wheel
    高精度另说
    iXingo
        2
    iXingo  
    OP
       Sep 10, 2021
    @byaiu log when
    iXingo
        3
    iXingo  
    OP
       Sep 10, 2021
    @byaiu 老哥稳
    ToPoGE
        4
    ToPoGE  
       Sep 11, 2021 via Android
    以前搞过单片机,定时器是靠晶振震荡周期来实现,不同晶振震荡周期不同,一切的上层应用都是基于这个
    jedihy
        5
    jedihy  
       Sep 11, 2021
    时钟中断会定时触发,然后操作系统就可以利用这个中断实现定时器的逻辑。用户态的 timer 实现多种多样,没有仔细研究过。
    jedihy
        6
    jedihy  
       Sep 11, 2021
    windows 里面的 WaitForSingleObject,大致是把当前线程状态切换为 waiting,然后交给 scheduler 并告知一个 deadline,然后 scheduler 就可以调度其他线程直到 deadline 到期,把这个等待的线程切换为 running 。
    yolee599
        7
    yolee599  
       Sep 11, 2021 via Android
    硬件定时器数量非常有限(一般不超过 5 个),通常是使用一个硬件定时器,设定一个固定的中断周期,比如 1 毫秒。操作系统再实现软件定时器,把所有软件定时器放在一个升序链表中,每次硬件定时器中断来了的时候就检查软件定时器链表中有没有过期的定时器,有就调用这个软件的回调通知应用。软件定时器精度就是硬件定时器的周期
    iXingo
        8
    iXingo  
    OP
       Sep 13, 2021
    谢谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1029 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 113ms · UTC 22:30 · PVG 06:30 · LAX 15:30 · JFK 18:30
    ♥ Do have faith in what you're doing.