单核和多核,单进程和多进程,单线程与多线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单核和多核,单进程和多进程,单线程与多线程相关的知识,希望对你有一定的参考价值。
参考技术A之前我对单进程、多进程、单线程、多线程,单核、多核、并发、并行;总是没有详细的认知;因此准备归纳总结下,加强自己的记忆。 (这里的并发不是网络并发,请区别对待)
我们先理解下进程在 CPU 中的并行方式:
进程执行需要系统资源,但是不同的进程间是无法共享 CPU ,怎么样才能共享资源和 CPU 呢? 线程 (有些程序中叫 协程 )的概念就出现了,线程是被包含在进程中,同一进程中的不同线程可以共享 CPU 和 程序上下文 (进程被分配到的资源)
在单核单 CPU 中,在同一个进程中的不同线程想要使用 CPU 核心,则会进行线程切换,但是由于共享了程序执行环境,这个线程切换会比进程切换开销小很多。注意:由于 CPU 是单核的,所以同时刻只能执行一个线程,所以说这里依然是并发。
如果我们的 CPU 是多核的呢?那么进程中的不同线程就可以同时运行了,真正的 并行 就出现了
文章的开头我们提到过 线程是CPU调度和分配的基本单位 。要和 进程是操作系统进行资源分配的最小单位 区分;假设我是 CPU ,操作系统调度器将一个进程分配给我之后,我拿到进程后,能看到什么,是不是只能看到进程中的多个线程,那么我现在能调度和分配的是不是只能是线程。如果我是4核的,把线程 ABCD 分配到核心1234,其他的线程依然要等待分配。所以线程是 CPU 调度和分配的基本单位。
单 CPU 中进程只能是并发,多 CPU 中进程可以并行。
单 CPU 单核中线程只能并发,单 CPU 多核中线程可以并行。
理解了上面这些关系,再去看看 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 ,思路会更加清晰
多线程理解
单核cpu:单线程与多线程;运行时都是并发操作
a.运行条件:无io等操作,时间大小:多线程>单线程,原因:多线程运行时线程切换耗时间;
b.运行条件:有io等操作,时间大小: 单线程>多线程,原因:单线程要等待io的操作时间,从而加长时间;
单核多线程的作用:在b中展现出优点。
多核cpu:单线程与多线程;单线程还是并发操作,多线程可以并行操作
运行条件:针对同一个程序,时间大小:单线程>多线程,原因:多线程将程序分为多个子线程并行执行,执行效率比单线程要快得多。
单核多线程和多核单线程:单核多线程只能是并发操作,而多核多线程可以是并行操作
以上是关于单核和多核,单进程和多进程,单线程与多线程的主要内容,如果未能解决你的问题,请参考以下文章