单核和多核,单进程和多进程,单线程与多线程

 我来答
华源网络
2022-06-28 · TA获得超过5578个赞
知道小有建树答主
回答量:2486
采纳率:100%
帮助的人:145万
展开全部

之前我对单进程、多进程、单线程、多线程,单核、多核、并发、并行;总是没有详细的认知;因此准备归纳总结下,加强自己的记忆。 (这里的并发不是网络并发,请区别对待)

我们先理解下进程在 CPU 中的并行方式:

进程执行需要系统资源,但是不同的进程间是无法共享 CPU ,怎么样才能共享资源和 CPU 呢? 线程 (有些程序中叫 协程 )的概念就出现了,线程是被包含在进程中,同一进程中的不同线程可以共享 CPU 和 程序上下文 (进程被分配到的资源)

在单核单 CPU 中,在同一个进程中的不同线程想要使用 CPU 核心,则会进行线程切换,但是由于共享了程序执行环境,这个线程切换会比进程切换开销小很多。注意:由于 CPU 是单核的,所以同时刻只能执行一个线程,所以说这里依然是并发。

如果我们的 CPU 是多核的呢?那么进程中的不同线程就可以同时运行了,真正的 并行 就出现了

文章的开头我们提到过 线程是CPU调度和分配的基本单位 。要和 进程是操作系统进行资源分配的最小单位 区分;假设我是 CPU ,操作系统调度器将一个进程分配给我之后,我拿到进程后,能看到什么,是不是只能看到进程中的多个线程,那么我现在能调度和分配的是不是只能是线程。如果我是4核的,把线程 ABCD 分配到核心1234,其他的线程依然要等待分配。所以线程是 CPU 调度和分配的基本单位。

单 CPU 中进程只能是并发,多 CPU 中进程可以并行。
单 CPU 单核中线程只能并发,单 CPU 多核中线程可以并行。

理解了上面这些关系,再去看看 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 ,思路会更加清晰

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式