首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >线程vs进程:可视化是正确的吗?

线程vs进程:可视化是正确的吗?
EN

Stack Overflow用户
提问于 2020-04-07 18:47:01
回答 1查看 196关注 0票数 0

我没有计算机科学的背景,但我读过一些关于多处理和多线程的文章,我想知道这是否正确。

场景1:禁用超线程

假设我有2个核心,3个线程在“运行”(竞争?)每核,如图所示(禁用超线程)。然后,我在某个时刻拍摄快照,例如,我观察到:核心1正在运行线程3。核心2正在运行线程5。

这些声明(和图片)是否正确?

A)有6个线程在并发运行。

B)有2个线程(3和5) (和进程)并行运行。

场景2:启用超线程

假设我这次启用了多线程。

这些声明(和图片)是否正确?

C)有12个线程在并发运行。

D)在vcpu中,有4个线程(3,5,7,12) (和进程)“几乎”并行运行。

E)有2个线程(5,7)并行运行'strictlÿ́‘?

EN

回答 1

Stack Overflow用户

发布于 2020-04-07 22:42:09

进程是在计算机上运行的程序的实例。操作系统使用进程来最大化利用率、支持多任务、保护等。进程由操作系统调度-时间共享CPU ()。所有进程都有资源,比如内存页、打开的文件和定义进程程序计数器、寄存器、堆栈的状态的信息。在CS中,concurrency是指程序、算法或问题的不同部分或单元在不影响最终结果的情况下无序或部分地执行的能力。“传统进程”是指进程是操作系统的抽象,用来表示运行单个程序所需的内容。在只有一个执行线程的“传统进程”中,没有并发性。然而,“现代进程”是具有多个执行线程的进程。线程只是一个进程中的顺序执行流。线程之间没有保护,因为它们共享进程资源。多线程是指单个程序由许多不同的并发活动(执行线程)组成。有几个概念需要区分:多处理是指我们有多个CPU。当CPU执行多个作业或进程时多线程是指CPU对每个进程执行多个mhread,那么同时运行两个线程意味着什么?调度器可以自由地以任何顺序运行线程,并交错FIFO或随机。它可以选择运行每个线程直到完成,或者将时间分成大块或小块。

并发系统通过允许所有任务取得进展来支持多个任务。并行系统可以同时执行多个任务。不过,不使用并行性也是有可能的。单处理器系统通过在进程之间快速切换来提供并行的假象(实际上,CPU调度器提供了这种假象)。这些进程是并发运行的,但不是并行运行的。

超线程是Intel对同步多线程的命名。这基本上意味着一个CPU核心可以同时处理两个问题。这并不意味着CPU可以做两倍的工作。只是它可以通过一次处理多个更简单的问题来确保所有的容量都得到了利用。对于你的操作系统来说,每个真正的硅CPU核心看起来就像两个,所以它给每个工作提供了支持,就好像它们是分开的一样。因为CPU所做的许多事情都不足以最大限度地发挥它的作用,所以超线程可以确保您从该芯片中获得物有所值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61078267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档