【问题标题】:System Main thread on Single Core Processor单核处理器上的系统主线程
【发布时间】:2013-07-01 15:22:50
【问题描述】:

如果这个问题有点过分,我深表歉意,但这对我来说似乎很有趣,我无法从我的研究中找到任何好的答案。我知道操作系统有一个主系统线程来执行诸如管理其他线程之类的任务,但是这在非超线程的单核处理器上究竟是如何工作的?在我看来,不可能将控制权交给应用程序正在使用的另一个线程,因为这会导致系统线程阻塞。但显然这是可能的,那么它究竟是如何工作的呢?我曾想过系统线程将其他线程的工作整合到自己的工作中,但这对我来说似乎是一个可怕的想法。

【问题讨论】:

  • 拥有数千个运行线程是很正常的。因此,这当然不是单核处理器独有的。暂停一个线程以允许另一个线程运行的能力是标准操作系统功能。这在任何操作系统设计的介绍性书籍中都有介绍,任何程序员都需要阅读。
  • @SLaks 这是一个有趣的页面,我从中学到了很多东西,谢谢!
  • @HansPassant 我必须检查一下,然后通读一遍。您对在线资源有什么建议吗?我发现这个Code Project Article 看起来很有希望,但其他建议也总是很好。
  • 显然我建议你去当地的图书馆或书店看看。或者一门课,在北卡罗来纳州立大学附近应该不难找到

标签: multithreading operating-system processor


【解决方案1】:

我知道操作系统有一个主系统线程来执行诸如管理其他线程之类的任务......

在我熟悉的每个操作系统中,当任务切换发生时,调度程序由所有 CPU 运行。没有“主系统线程”。

【讨论】:

    【解决方案2】:

    '我知道操作系统有一个主系统线程来执行诸如管理其他线程之类的任务' - 不,不是在抢占式多线程操作系统中,即。所有有效的。

    在启动时间之后,操作系统仅在“中断”时由线程进入。有软件中断——系统调用和通过驱动程序的硬件中断,可以改变线程的状态。在这些中断之间,操作系统什么都不做。没有中断:操作系统什么都不做。

    我明白这很难掌握,尤其是在大多数糟糕的“线程简介”页面/章节中,但事实就是这样。

    请注意,一大堆东西重新。网络上的线程等是不充分的、误导性的、过度简化的或实际上是错误的。常见错误关键词:'time-slice'、'quantum'、'round-robin'、'timer-scheduled'。

    【讨论】:

    • +1 用于描述大多数关于线程的在线文档。也许您可以为询问者提供一个很好的起点。
    • @MartinJames 感谢您的回答并让我知道一些在线文章中的错误;我读过的几乎所有的人都使用了这些术语。我得出的结论是,我必须阅读此内容才能更好地理解。如果您对阅读内容有任何建议,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 2015-12-29
    • 2012-10-11
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    相关资源
    最近更新 更多