之前对单进程、多进程、单线程、多线程、单核、多核、并发和并行没有详细的了解,所以愿意总结一下增强我的记忆力;(这里的并发不是网络并发,请区别对待)
让我们首先了解进程在处理器中是如何并行化的:
进程执行需要系统资源,但不同进程之间不能共享CPU。如何共享资源和CPU?线程的概念(在某些程序中称为协程)出现了。线程包含在进程中。同一进程的不同线程可以共享CPU和程序上下文(分配给进程的资源)
合二为一。-单CPU核心,如果同一进程中的不同线程想要使用CPU核心,它们将进行线程切换。不过,由于共享程序执行环境,这种线程切换会比进程切换便宜很多。注意:由于CPU是单核的,同一时刻只能有一个线程运行,所以这里还是并发。
如果我们的处理器是多核怎么办?这样进程的不同线程就可以同时运行,真正的并行就出现了。
文章开头我们提到了线程是调度和CPU分配的基本单位。这应该与进程是操作系统分配资源的最小单位这一事实区分开来;假设我是一个CPU,一旦操作系统调度程序为我分配了一个进程,获得该进程后我能看到什么?我只看到发生了什么?多个线程,所以我现在可以调度和分配的只是线程。如果我有4个核心,我将线程ABCD分配给核心1234,其他线程仍然需要等待分配。因此,线程是CPU调度和分配的基本单位。
单处理器中的进程只能并发,多处理器中的进程可以并行。
单CPU、单核线程不能并发,而单CPU、多核线程可以并行。
了解了上面的关系之后,我们来看看最全面的JS运行机制回顾,从浏览器多进程到单线程JS,思路会更清晰
上一篇:内存条4条全部插满可以吗
下一篇:内存小的吃鸡游戏可以联机