代码之家  ›  专栏  ›  技术社区  ›  ashishv

并行计算中处理器和进程的区别?

  •  6
  • ashishv  · 技术社区  · 9 年前

    每次我遇到类似“ x个 任务 “,我倾向于认为他们的意思是 加工机 .

    在阅读了更多关于它的内容后,我发现有两种内存分类, 共享内存和分布式内存 : 共享内存执行类似线程的操作(意味着所有处理器都可以使用相同的数据——因此 称之为过程是有道理的 )然而,即使对于分布式内存,它也被称为 过程 而不是处理器。例如:“进程0正在计算部分点积”

    为什么会这样?为什么它被称为进程而不是处理器?

    附言。我希望这个问题不是微不足道的:)

    4 回复  |  直到 9 年前
        1
  •  5
  •   benrules2    9 年前

    不过,您对分布式术语的混淆是公平的。在分布式计算中,通常执行X个进程的数量等于硬件处理器的数量。在这种情况下,每个进程都会在软件中获得一个ID,通常称为rank。列组独立于处理器,不同的列组将有不同的任务。因此,当您报告状态时,信息与进程级别有关,而不是与物理处理器有关。

    换言之,在分布式计算中,每个处理器上通常运行一个进程。进程将有一个唯一的id,它在软件中比运行它的物理处理器更重要,因此会提供有关进程的状态信息。由于进程和处理器的数量相等,这种区别可能会变得有点模糊。

        2
  •  2
  •   suszterpatt    9 年前

    区别在于硬件与软件。

    进程是程序的逻辑实例。处理器是运行该进程的硬件实体。大多数时候,您不关心实际的处理器,只关心正在执行的进程。

    例如,操作系统可能会决定暂时将进程置于睡眠状态,以便让其他应用程序运行,然后可能会在不同的处理器上唤醒它们。只要您的过程产生了预期的结果,您就不应该对此感兴趣:您所关心的只是计算,而不是它发生在哪里。

        3
  •  0
  •   Kuba Sanecki    9 年前

    对我来说,处理器是指负责计算操作的机器。进程是某个程序的单个实例。(我希望我能理解你的意思)。

        4
  •  0
  •   Harald    9 年前

    我想说,他们使用这些术语是模糊的,因为大多数时候上下文都允许这样做,而且在某种程度上差异可能很微妙。也就是说,由于每个进程(当它是单线程时)都在处理器上执行,人们通常不想区分物理实体(处理器)和逻辑实体(进程)。

    SMT Hyper-Threading 和/或执行多线程应用程序,因为进程在任何可用的处理器(或线程)上运行。在这种情况下,人们在做出这种肯定时应该更加严格。不过,由于可以使用以下命令将一个进程(甚至一个线程)绑定到处理器(或处理器线程) affinity 命令,在这种情况下,它们可以模糊地使用这两个术语。