多核和多线程

时间:2011-04-09 06:56:59

标签: operating-system

如何在每个流程中使用多线程实现基于流程的多任务处理?

例如,考虑操作系统何时运行两个后台进程。每个流程都支持内部多线程功能。现在,如何在这些进程之间和内部进行时间切片,以及如何在线程之间进行时间切片?

3 个答案:

答案 0 :(得分:2)

调度程序通常在线程级别工作。简单来说,调度程序依次为每个可运行的线程提供其时间片。

因此,具有两个线程的进程将获得两倍于具有一个线程的进程的CPU时间。

答案 1 :(得分:1)

自:

http://msdn.microsoft.com/en-us/library/ms684259(VS.85).aspx

“多任务操作系统在需要它的进程或线程之间划分可用的处理器时间。系统设计用于抢占式多任务处理;它为每个执行的线程分配一个处理器时间片。当前正在执行的线程暂停时间片过去,允许另一个线程运行。当系统从一个线程切换到另一个线程时,它保存抢占线程的上下文并恢复队列中下一个线程的保存上下文。

时间片的长度取决于操作系统和处理器。因为每个时间片很小(大约20毫秒),所以多个线程似乎同时执行。这实际上是多处理器系统的情况,其中可执行线程分布在可用处理器中。但是,在应用程序中使用多个线程时必须小心,因为如果线程太多,系统性能会降低。“

另请查看This link for when to use multi-tasking

操作系统决定每个线程的执行时间和持续时间。对于Microsoft操作系统,无法确定或预测接下来将执行哪个进程的线程。每个线程也具有运行的优先级。优先级较高的线程往往比较低的线程获得更多的时间。优先级可以由用户或程序更改。见this link for more info.

答案 2 :(得分:0)

“现在,如何在这些进程之间和内部进行时间切片,以及如何在线程之间进行时间切片?”

这完全取决于操作系统的确定。一个真正基本的操作系统可能根本不会进行时间切片,只需让每个进程按照先到先得的原则运行完成。

然而,大多数现代操作系统将使用某种调度算法来决定哪个线程在哪个核心上执行以及执行多长时间,并且在交换一个线程时执行保存和恢复每线程状态所需的上下文切换另一个人。