所以我认为我在某个地方读到只有一个进程在任何给定时间只能获得 atmost 一个处理器资源。但我也认为我已经读过某个地方,每个线程在任何给定时间都可以获得一个处理器资源。后面的语句将与第一个语句相矛盾,因为进程可以存在于更多线程中。
进程的线程是否可以与该进程的其他线程并行运行? (并行我的意思是通过多个处理器或核心同时运行)
答案 0 :(得分:1)
是,他们可以!
这是通过多线程程序在多核系统上实现并行化的方式
试想一下,如果情况并非如此,那么多核处理器上就没有多线程程序了。
现在您可能会问如何在多核上实现调度? https://pdos.csail.mit.edu/papers/o2:hotos12.pdf
答案 1 :(得分:1)
您的问题的答案取决于如何在系统上实现线程。操作系统有两种主要方式来查看线程和进程之间的关系。
进程具有地址空间,是计划执行的基本单元。
进程具有地址空间,线程是计划执行的基本单元。然后,进程是地址空间和一个或多个可调度线程。
在#1(在许多操作系统上使用)线程在库中实现。该进程负责调度自己的线程。在该线程模型中,来自同一进程的所有线程在同一处理器上交错运行(尽管它们可能在某些系统中将处理器一起切换)。该进程只能安排自己的线程在运行进程的处理器上运行。
在#2(更现代的方法)中,进程的线程可以在多个处理器上并发执行。