什么是“逻辑CPU核心”

2023-12-26

我正在阅读一些操作系统材料。我读到这句话让我有点困惑: “多核是指具有多个逻辑 CPU 核心,并且可以同时执行多条指令的计算机或处理器。”

什么是“逻辑CPU核心”,是处理器吗?它是否对应于物理的东西,或者是操作系统看到逻辑CPU核心,但实际上物理处理器比逻辑CPU核心少?


逻辑 CPU 核心包含单处理器的完整架构上下文。这是操作系统可以进行调度和控制体系结构状态的单元,例如异常地址(对于没有硬连线的体系结构)。

有两种常见情况,它不会与物理核心一一对应。首先,单个物理核心可以实现多个虚拟处理器,例如英特尔的超线程。在这种情况下,操作系统调度程序应该意识到虚拟处理器可能共享各种资源,例如指令获取、指令调度硬件和执行单元,这通常意味着任务应该调度到不同的物理内核以最大化性能。 (此问题在较小程度上也适用于共享 L2 缓存的不同核心。此类问题在某种程度上与多 CPU 计算机的 NUMA 优化有关。)

在第二种情况下,虚拟机管理程序的硬件虚拟化可以向操作系统提供任意数量的内核。虽然虚拟机管理程序通常不会让来宾操作系统看到比硬件提供的逻辑处理器更多的逻辑处理器(即,包括与硬件多线程相关的虚拟处理器),但理论上虚拟机管理程序可以向操作系统提供任意数量的处理器(就像操作系统可以提供任意数量的处理器一样)。通过使用时间切片向应用层呈现任意数量的处理器的印象)。在这样的软件虚拟化环境中,管理程序可能不会向操作系统公开处理器的性质,因此操作系统只能将它们视为调度的抽象单元。

让这种划分有些复杂的是,硬件也可以实现多线程,而无需为每个线程提供完整的虚拟处理器。例如,MIPS 多线程应用程序特定扩展对虚拟处理元件(其在架构状态方面表现为不同的处理器)和线程上下文(其在同一 VPE 中的线程之间共享系统协处理器)进行了区分。更复杂的是,线程上下文可能在 VPE 之间迁移。例如,物理处理器核心可能有两个 VPE 和五个线程上下文,并且操作系统可能被允许将给定的 TC 分配给任一 VPE,以便任一 VPE 可以具有 1 到 4 个 TC。此外,如果备用硬件线程可用(在 FORK 的情况下)或至少一个线程仍处于活动状态(在 YIELD 的情况下),非特权软件可以在不涉及操作系统的情况下 FORK 和 YIELD 线程。

对于 MIPS MT-ASE,操作系统通常只关心线程上下文,但通过更完整地了解实际硬件配置,可以进行一些优化,并且如果将线程上下文视为虚拟处理元素,则可能会出现一些正确性问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是“逻辑CPU核心” 的相关文章

  • gcc -lpthread 不工作

    我的系统中安装了 ubuntu 11 我有一个使用 pthread 库的 C 程序 我收到错误Undefined reference to sem wait 即使我已经用标志编译了 lpthread 例如 gcc lpthread prog
  • 设置了 LARGEADDRESSAWARE 标志的应用程序获得的虚拟内存较少

    我有一个 32 位应用程序 由一个 EXE 和多个 DLL 组成 EXE 是用 LARGEADDRESSAWARE标志设置 所以我预计在 64 位操作系统上我应该获得 4 GB 的用户地址空间 但在某些 64 位 Win 7 系统上 我只能
  • Minix 与 Linux 相比如何学习操作系统设计?

    我想学习操作系统设计 我想知道在此过程中我是否应该解决 Minix 或 GNU Linux 问题 我喜欢书籍 所以我主要关注一本书 尽管视频资源 大概是录像讲座 也很受欢迎 我已经正式学习了 C 和 C 可以用它们编写中小型程序 我对数据结
  • 什么是微编码指令?

    我看过很多参考微编码指令的文献 这些是什么以及为什么使用它们 CPU 读取机器代码并将其解码为内部控制信号 将正确的数据发送到正确的执行单元 大多数指令映射到一个内部操作 并且可以直接解码 例如 在 x86 上 add eax edx只是将
  • 全局变量和静态变量存储在内存段的哪里?

    在我的链接器脚本中 起始地址和大小如下 code start 90400000 code end 90a00000 data start 90b00000 size 3MB bss start 91200000 size 1MB 但是当我声
  • 大师系统要求

    我们将使用 Virtuoso 来存储 RDF 三重计数一开始将为 1 亿 我需要知道典型的 RAM CPU 磁盘等应该是什么 查询将使用 SPARQL 并且查询会有点复杂 请提供您的意见 Virtuoso 版本 6 x 三元组 四元组 的平
  • shell进程的并行执行

    有没有一个工具可以在 Windows 批处理文件中并行执行多个进程 我发现了一些有趣的 Linux 工具 parallel http mi eng cam ac uk er258 code parallel html and PPSS ht
  • 为什么x86分页没有特权环的概念?

    早在 1982 年 当 Intel 发布 80286 时 他们在分段方案中添加了 4 个特权级别 环 0 3 由全局描述符表 GDT 和局部描述符表 LDT 中的 2 位指定 在 80386 处理器中 Intel 添加了分页功能 但令人惊讶
  • 如何查找或计算Linux进程的页表大小和其他内核占用?

    我怎样才能知道 Linux 进程页表有多大 以及任何其他可变大小的进程统计 如果您真的对页表感兴趣 请执行以下操作 cat proc meminfo grep PageTables PageTables 24496 kB
  • python:获取上两层目录

    好吧 我不知道模块在哪里x是 但我知道我需要向上两层目录的路径 那么 有没有更优雅的方法 import os two up os path dirname os path dirname file 欢迎提供适用于 Python 2 和 3
  • CPU寄存器和多任务处理

    我目前正在学习汇编 我很困惑 CPU 寄存器如何与多任务一起工作 所以在多任务系统中 CPU可以随时暂停某个程序的执行并运行另一个程序 那么在这一步中寄存器值是如何保存的呢 寄存器是压入堆栈还是以其他方式 CPU 寄存器如何与多任务一起工作
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • 获取总体 CPU 百分比使用率的可能性有哪些

    我有以下问题 在UWP中 我们如何获取总体CPU使用率 RAM使用率 可用RAM 正在运行的进程等 UWP 中的任务管理器需要它 您好 经过一番查看后 您似乎无法获得设备 CPU RAM 和可用 RAM 或正在运行的进程 您可以获得 CPU
  • 每个 CPU 核心处于 C0 电源状态的时间

    任何帮助弄清楚如何做到这一点都会很棒 在过去一秒内 每个 CPU 核心处于 C0 电源状态的时间有多少 这是针对 Mac 应用程序的 因此需要 Objective C cocoa 和 c OS X 没有任何公开 CPU c 状态的 API
  • 我们如何计算这段代码片段中缓存的读取/未命中次数?

    鉴于我目前正在学习的这本教科书中的代码片段 Randal E Bryant David R O Hallaron 计算机系统 程序员的视角 第 3 版 2016 年 Pearson 全球版 因此本书的练习可能是错误的 for i 31 i
  • 小牛队 macports 安装过时

    当我升级到 OS X Mavericks 后 所有安装的端口都变得过时了 我无法再使用我的 gcc 请帮忙 The following installed ports are outdated bzip2 1 0 6 0 lt 1 0 6
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 我们可以拥有一台只用寄存器作为内存的计算机吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 寄存器是计算机中最快的存储器 那么如果我们想构建一台只有寄存器甚至没有缓存的计算机 可能吗 我什至考虑用寄存器代替磁盘 尽管它们本质上是易
  • 为什么在展开的 ADD 循环内重新初始化寄存器会使其运行速度更快,即使循环内有更多指令?

    我有以下代码 include
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别

随机推荐

  • 如何以编程方式覆盖按钮?

    我想要完成的是 在运行时 在屏幕中间放置一个按钮 作为最顶层 覆盖其下面的任何内容 它不大 所以它不会完全覆盖屏幕 只是覆盖它下面的任何东西 我考虑创建一个自定义对话框 但是它会阻止所有其他用户输入 我希望这个新按钮下方的所有视图都能正常运
  • 在 Typescript 中使用 FileSystemWatcher(Visual Studio Code 扩展)

    我是 TypeScript 和 Visual Studio Code 的新手 想要为 Visual Studio Code 开发一个插件 但我对一个由FileSystemWatcher 激活后 在我的扩展中我创建了一个FileSystemW
  • 如何判断EditText中的输入是否为整数?

    大家好 我是 Android 编程新手 我正在尝试建立一个活动 其中包括edittext场和一个button 当用户输入整数时 该按钮将引导他们进入下一个活动 但是 如果有办法检查用户输入的类型 我不会这样做 有人可以帮助我吗 非常感谢 从
  • ng-model 依赖性的隔离范围陷阱

    好吧 由于 AngularJS 文档网站上的 改进此文档 按钮不起作用 并且讨论现已结束 我想问一个关于 隔离范围陷阱 段落的问题ng模型控制器 http docs angularjs org api ng directive 3angMo
  • 如何查找可能引发哪些异常

    我正在尝试找到最好的方法来找出我的 python 代码可能引发的异常 你们使用的最佳方法是什么 到目前为止我可以 祈祷是在某处的在线文档中这么说的 很少这样做 抓取 py 文件以获取 raise 语句 必须有更好的方法来获取这些信息 这个问
  • 全日历多个营业时间,每天两班制

    我已将完整日历集成到我的网站中 我的要求之一是从数据库中获取营业时间并将其呈现在日历上 所以基本上每天都有两班 早上和晚上 我需要能够创建一个营业时间数组 其中的值从数据库中填充 开箱即用 我可以使用下面的代码来呈现常见的营业时间 busi
  • 如何改进 euler 14 的代码?

    我解决了欧拉问题 14 http projecteuler net problem 14但我使用的程序非常慢 我看看其他人做了什么 他们都想出了优雅的解决方案 我试图理解他们的代码 但没有取得多大成功 这是我的代码 确定 Collat z
  • 在 Stream.read 中使用 Longint 计数和 Int64 大小不是很危险吗?

    我正在检查TMemoryStream http docwiki embarcadero com Libraries Tokyo en System Classes TMemoryStream LoadFromStream类并发现以下例程 p
  • OCaml 中短路运算符和 let 的求值顺序

    在 OCaml 中 当使用let为短路运算符分配别名 or 它不再短路操作数的求值 这并不直观 这种行为的原因是什么 考虑以下代码 let f Printf printf f false let g Printf printf g true
  • Ruby Activerecord IN 子句

    我想知道是否有人知道如何在 activerecord 中执行 IN 子句 不幸的是 IN 子句几乎无法通过谷歌搜索 所以我必须在这里发布 基本上我想回答这样的问题 给我这些宿舍中的所有大学生 其中宿舍id在此数组 id数组 中 我知道如何在
  • 使用opencv检测图像中的文本

    我需要检测图像中的文本 这里有一些在大多数情况下都有效的代码 但并非全部 请参阅附加的输入 输出图像 code include string include fstream include var bin opencv include op
  • 在运行时将 X 个带有 SelectedItem 的 ComboBox 添加到 DataGrid (WPF)

    我想创建一整行ComboBoxes in a DataGrid 我在以下方面取得了一些进展 Declare it private DataGridComboBoxColumn CreateCustomComboBoxDataSouce st
  • 如何在我的 swing 应用程序中使用 Java 类调用并向 Servlet 传递参数? [复制]

    这个问题在这里已经有答案了 在我的 Swing 应用程序中 我需要使用登录页面将参数传递给 servlet 来对用户进行身份验证 在 Web 应用程序中 我们可以使用 Ajax 和 JavaScript 来完成此操作 但是 如何在我的 Sw
  • Keras LSTM 层实现背后的架构是什么?

    Keras 中 LSTM 层的输入维度如何转换为输出维度 从阅读可拉的博客文章 http colah github io posts 2015 08 Understanding LSTMs 看起来好像有 timesteps 又名input
  • Heroku Web 服务器无法在本地启动

    我在本地启动 heroku Web 服务器时遇到问题 这是我不断收到的错误消息 PS C Users Dragan heroku workspace python getting started gt heroku local OKAY L
  • 如何设置从 UIDatePicker 检索的日期格式

    我正在从 UIDatePicker 检索日期 现在我想转换为周三 12 月 29 日下午 12 30 格式 我还想将该日期设置为 UIPickerView 的当前显示日期 您可以使用此代码 它正是您想要的 NSDateFormatter d
  • GCC 要求此引用声明使用 constexpr 说明符是否正确?

    下面的代码不能编译海湾合作委员会5 3 0 https goo gl 2oyoCt因为声明r缺少一个constexpr说明符 const int i 1 const int r i constexpr int j r 我相信拒绝是正确的 如
  • Xamarin (XAML) 如何并排放置 2 个标签

    我有 2 个标签需要使用不同的字体来制作单个标签 我的公司 c 文案符号 我的公司 将采用大字体 而 c 将采用小字体 我无法让它们显示为 1 个单一标签 似乎存在间距问题 我已经尝试过以下方法
  • 如何解决Vue 3自定义渲染器错误

    我正在尝试使用 Vue 3 和 Vite 构建自定义渲染器 渲染器正在其工作原始仓库 https github com SaFrMo vite minimum renderer 克隆该存储库 npm install and npm run
  • 什么是“逻辑CPU核心”

    我正在阅读一些操作系统材料 我读到这句话让我有点困惑 多核是指具有多个逻辑 CPU 核心 并且可以同时执行多条指令的计算机或处理器 什么是 逻辑CPU核心 是处理器吗 它是否对应于物理的东西 或者是操作系统看到逻辑CPU核心 但实际上物理处