我确实知道并发(CPU进程交换)和并行性(在多个内核上实时并行运行的进程)之间的区别。我想知道的是线程和进程在所有这些过程中扮演什么角色。我知道每个操作系统都不同,并且CPU调度因操作系统而异,从VM到VM也有所不同。通常,与进程相比,线程的开销要少得多,并且线程的CPU交换通常更快。但是,当我读到多进程计算时,似乎每个人都同意这是并行在多个CPU上进行计算的唯一选择。
这是否意味着线程不能在多个CPU内核上真正并行运行?或者是否意味着如果需要在多个物理CPU芯片(例如群集网络超级计算机)上运行计算,则多进程计算是唯一可行的选择。 ?
我希望得到澄清!
首先,要澄清您使用的术语:
在这种情况下,进程具有一定数量的状态,该状态由操作系统维护,以记录寄存器,内存,权限等的详细信息。此状态的大小通常大于线程的大小,因此,管理进程的开销(例如你说)更大。有关更多详细信息,请参见Wikipedia。
因此,为回答您的问题,如果执行线程和进程的操作系统或基础体系结构支持线程和进程(如上定义),则可以在多个处理器上并行执行这些线程和进程。
常规的并行处理器是共享内存,常规的操作系统是Linux。Linux支持在共享内存(对称)多核上并行执行进程和线程,但不支持在多个处理器上执行进程(或线程)(也就是说,除非它们处于共享内存配置中)。已经有许多分布式操作系统设计用来支持在没有共享内存的情况下在多个处理器上执行进程或线程,但是它们从未流行起来。参见维基百科。
传统的基于集群的系统(例如超级计算机)在使用MPI的处理器之间采用并行执行。MPI是在不同处理器上的操作系统实例中执行的进程之间的通信接口;它不支持其他流程操作,例如计划。(由于使MPI进程由操作系统执行,因此存在使事情进一步复杂化的风险,单个处理器可以运行多个MPI进程和/或单个MPI进程也可以执行多个线程!)
最后,XMOS处理器体系结构是一个简单的(尽管是非常规的)示例,其中线程和进程的含义略有不同。这允许将多个处理器芯片连接在一起,并允许顺序执行的多个线程在它们之间执行并在它们之间进行通信,而无需操作系统。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句