每当我遇到类似“进程0 x 任务”之类的内容时,我倾向于认为它们意味着 处理器 即可。
在阅读了更多关于它之后,我发现有两种内存分类,共享内存和分布式内存: 共享内存执行类似线程的事情(暗示所有处理器都可以使用相同的数据 - 因此将其称为进程是有意义的)但是,即使对于分布式内存,它也称为进程< / strong>而不是处理器。例如:“进程0正在计算部分点积”
为什么会这样?为什么称它为进程而不是处理器?
PS。我希望这个问题不是一件容易的事情:)
答案 0 :(得分:3)
这些其他答案都非常有用。处理器是物理的,流程是软件。所以四核CPU将拥有4个处理器,但可以运行更多的进程。
你对分布式术语的困惑是公平的。在分布式计算中,通常将执行X个进程数等于硬件处理器的数量。在这种情况下,每个进程都会在通常称为排名的软件中获取一个ID。等级独立于处理器,不同的等级将具有不同的任务。因此,当您报告状态时,信息与进程排名有关,而与物理处理器无关。
换句话说,在分布式计算中,每个处理器上通常会运行一个进程。该过程将具有唯一的ID,该ID在软件中比在其运行的物理处理器中更重要,因此给出关于该过程的状态信息。由于进程和处理器的数量相等,这种区别可能会有点模糊。
答案 1 :(得分:2)
区别在于硬件与软件。
该过程是您的程序的逻辑实例。处理器是运行该过程的硬件实体。大多数情况下,您不关心实际的处理器,只关心正在执行的进程。
例如,操作系统可能会决定暂时让您的进程进入休眠状态,以便为其他应用程序提供运行时间,之后它可能会在不同的处理器上唤醒它们。只要你的过程产生了预期的结果,你就不应该对此感兴趣:你所关心的只是计算,而不是它发生的地方。
答案 2 :(得分:0)
对我来说,处理器指的是负责计算操作的机器。进程是某个程序的单个实例。 (我希望我理解你的意思)。
答案 3 :(得分:0)
我会说他们会模糊地使用这些术语,因为大多数时候上下文允许它,并且差异在某种程度上可能是微妙的。也就是说,由于每个进程(当它是单线程时)在处理器上执行,人们通常不希望区分物理实体(处理器)和逻辑实体(进程)。
在考虑具有多线程功能的处理器(英特尔处理器为SMT和Hyper-Threading)和/或执行多线程应用程序时,这种假设可能是错误的,因为进程在任何可用的处理器(或线程)上运行。在这种情况下,人们在做出这种肯定时应该更加严格。尽管如此,由于可以使用affinity命令将一个进程(甚至一个线程)绑定到处理器(或处理器线程),因此在这些情况下,它们可以模糊地使用这两个术语。