如果这个问题有点过分,我深表歉意,但这对我来说似乎很有趣,我无法从我的研究中找到任何好的答案。我知道操作系统有一个主系统线程来执行诸如管理其他线程之类的任务,但是这在非超线程的单核处理器上究竟是如何工作的?在我看来,不可能将控制权交给应用程序正在使用的另一个线程,因为这会导致系统线程阻塞。但显然这是可能的,那么它究竟是如何工作的呢?我曾想过系统线程将其他线程的工作合并到它自己的工作中,但这对我来说似乎是一个可怕的想法。
问问题
109 次
2 回答
4
'我知道操作系统有一个主系统线程来执行诸如管理其他线程之类的任务' - 不,不是抢占式多线程操作系统,即。所有有效的。
在启动时间之后,操作系统仅在“中断”时由线程进入。有软件中断——系统调用和通过驱动程序的硬件中断,可以改变线程的状态。在这些中断之间,操作系统什么都不做。没有中断:操作系统什么都不做。
我明白这很难掌握,尤其是在大多数糟糕的“线程简介”页面/章节中,但事实就是如此。
请注意,一大堆东西重新。网络上的线程等是不充分的、误导性的、过度简化的或实际上是错误的。常见的错误关键词:'time-slice'、'quantum'、'round-robin'、'timer-scheduled'。
于 2013-07-03T23:55:07.753 回答
2
我知道操作系统有一个主系统线程来执行诸如管理其他线程之类的任务......
在我熟悉的每个操作系统中,当任务切换发生时,调度程序由所有 CPU 运行。没有“主系统线程”。
于 2013-07-03T19:36:32.707 回答