2016-09-23 70 views
1

所以我以为我在某个地方读过,在任何时候只有一个进程只能获得一个处理器资源。但我也认为我已经阅读过某个地方,每个线程在任何时候都可以获得一个处理器资源。后一种说法将与第一种说法相矛盾,因为过程可能存在于更多的线索之中。一个进程的不同线程可以使用更多的处理器吗?

那么一个进程的线程可以与该进程的其他线程并行运行吗? (并行我的意思是同时运行多个处理器或内核)

回答

1

您的问题的答案取决于系统如何实现线程。操作系统查看线程和进程之间的关系有两种主要方式。

  1. 一个进程有一个地址空间,它是计划执行的基本单元。

  2. 进程有一个地址空间,线程是计划执行的基本单元。一个进程是一个地址空间和一个或多个可调度线程。

#1(在许多操作系统上使用)线程在库中实现。该进程负责安排自己的线程。在该线程模型中,来自同一进程的所有线程都在同一个处理器上交错运行(尽管它们可能在一些系统中将处理器连接在一起)。该进程只能安排自己的线程在运行进程的处理器上运行。

#2(更现代的方法)进程的线程可以在多个处理器上同时执行。

1

是的,他们可以!

这是多线程程序如何在多核系统上实现并行性。
想象一下,如果情况并非如此,那么在多核处理器上就没有多线程程序。

现在您可能会问如何在多核上实现调度? https://pdos.csail.mit.edu/papers/o2:hotos12.pdf

相关问题