2014-10-04 34 views
1

问题: 一次在多个处理器上一起调度进程的所有线程与一次调度一个线程(来自不同进程)的优势和/或可能的缺点因为单个处理器可用?了解有关多线程的基本概念

更新注意:考虑一个多处理器,并与两个线程的过程。假设一次只运行一个线程。该线程curretly运行发送消息到第二个线程,然后阻止等待答复(并因此从CPU中取出)。一段时间后,第二个线程被调度,从第一个线程接收消息,发送回复,然后阻止等待来自第一个线程的新消息。经过一段时间后,第一个线程被调度,处理回复,发送新消息,然后被阻止,等待新的回复等等。如果两个线程同时运行,则可以避免所有这些切换。

回答

1

如果我理解正确的问题,调度线程随着处理器变得可用,让他们完成运行调度该处理器在另一个线程通常会在总吞吐量方面更有效,因为之前你不会有上下文的开销交换。然而,这种假设进程/线程的行为本身 - 相反,如果一个线程进入一个无限循环或变得胶着,那么你已经永久丢失访问其处理器。调度一切都在运行一次引入上下文切换开销,但如果一个线程/处理器没有很好的表现,那么你仍然可以依靠操作系统上偶尔中断,并让另一个线程/进程做处理器的一些工作。

1

通常,调度进程的所有线程一起上一次废物处理器的多个处理器。如果一个8核心处理器有两个内核在X进程中运行2个线程,而另一个进程Y有7个线程准备就绪,你该怎么办?拒绝运行Y?

的一套现成的线程改变硬件中断发生和正在运行的线程进行系统调用。强制调度算法采用“所有准备好的进程或没有进程的策略”策略是不合理的限制。