多处理与多线程和超线程

问题描述 投票:0回答:1

线程和进程有什么区别?线程可以使用多核,进程也可以使用多核。线程共享相同的内存,但进程不能共享。如果我们使用共享内存进行多处理怎么办?它们是否相同?当我们使用多线程或多处理时?

我想知道什么是超线程?两个进程或线程如何同时使用相同的核心? 1个核心只有1个ALU。这可能是不可能的。

我研究进程和线程。检查进程浏览器。如果 Chrome 创建新选项卡,则 Chrome 会创建 1-5 个进程。每个进程有3-10个线程。我不知道为什么。 chrome 上只有 6 个选项卡,但有很多进程。

如果我从随机选项卡检查进程。它的样子。 Chrome 进程线程

multithreading multiprocessing operating-system processor hyperthreading
1个回答
0
投票

线程和进程有什么区别?

简而言之,进程是一个或多个线程使用的所有资源的容器。线程执行程序的代码。该进程包含所有虚拟内存、打开的文件句柄、套接字、窗口以及这些线程使用的其他系统资源。

每个“活动”进程必须至少有一个“活动”线程。每个线程必须完全属于一个进程。


线程共享相同的内存,但进程不能共享

线程(属于同一进程)自动共享其整个虚拟地址空间。在许多操作系统中,进程可以共享其虚拟地址空间的部分(当然,所有“大”操作系统);但这不会自动发生。协作进程必须采取特定操作(调用特定系统调用)来设置共享内存区域。

什么是超线程?

如果你想了解超线程,那么你必须首先了解什么是线程上下文。简而言之,线程的上下文是必须加载到 CPU 硬件寄存器中的所有值的集合,以便 CPU 可以开始代表该线程执行指令。您可能听说过“上下文切换”。这时候操作系统调度器

  • 中断正在运行线程 A 的 CPU,
  • 将 CPU 上下文寄存器中的值复制到线程 A 的“已保存上下文记录”中,
  • 将线程 B 保存的上下文中的值复制到 CPU 的上下文寄存器中,最后
  • 从中断返回,让CPU代表线程B工作。

一个超线程CPU有两个或更多完整的上下文寄存器集。这使得它能够在两个或多个线程的指令流之间切换注意力,而无需调度程序必须执行的所有中断和寄存器值复制操作。

该功能本身就为我们带来了一些加速,因为例如,与寄存器到寄存器的操作相比,内存读取和写入可能需要很长时间。为线程 A 启动内存获取的超线程 CPU 在等待线程 A 想要读取的值时可能能够代表线程 B 执行一些工作。

两个进程或线程如何同时使用相同的核心? 1个核心只有1个ALU。这可能是不可能的。

许多用于服务器、桌面甚至移动系统的高端处理器都具有所谓的“超标量架构”。单个CPU“核心”可以有多个ALU,以及多个其他所谓的“功能单元”。它可以通过多种方式同时使用这些功能单元,包括(如果它也是超线程处理器)同时对不同线程使用不同的 ALU。

© www.soinside.com 2019 - 2024. All rights reserved.