win下处理器组概念

2023-11-09

 

微软官方文档:https://docs.microsoft.com/en-us/windows/win32/procthread/processor-groups

 

译文如下:

        64位版本的Windows 7和Windows Server 2008 R2及更高版本的Windows在一台计算机上支持64个以上的逻辑处理器。此功能在32位版本的Windows上不可用。

        具有多个物理处理器的系统或具有多个内核的物理处理器的系统为操作系统提供了多个逻辑处理器。A逻辑处理器从操作系统、应用程序或驱动程序的角度来看,是一个逻辑计算引擎。A核心是一个处理器单元,可以由一个或多个逻辑处理器组成。A物理处理器可以由一个或多个内核组成。物理处理器与处理器包、插槽或中央处理器相同。

        对超过64个逻辑处理器的系统的支持基于处理器组,它是一个最多64个逻辑处理器的静态集合,被视为单个调度实体。处理器组从0开始编号。逻辑处理器少于64个的系统始终只有一个组,即组0。

Windows Server 2008、Windows Vista、Windows Server 2003和Windows XP:不支持处理器组。

        当系统启动时,操作系统创建处理器组并将逻辑处理器分配给这些组。如果系统能够热添加处理器,操作系统会在系统运行时为可能到达的处理器留出分组空间。操作系统将系统中的组数减至最少。例如,一个有128个逻辑处理器的系统将有两个处理器组,每组有64个处理器,而不是四个组,每组有32个逻辑处理器。

        为了获得更好的性能,操作系统在将逻辑处理器分配给组时会考虑物理位置。如果可能,内核中的所有逻辑处理器和物理处理器中的所有内核都被分配到同一组。物理上彼此接近的物理处理器被分配到同一组。除非NUMA节点的容量超过最大组大小,否则该节点将被分配给单个组。有关更多信息,请参见NUMA支持

        在64个或更少处理器的系统上,现有应用程序无需修改即可正常运行。不调用任何使用处理器关联掩码或处理器号的函数的应用程序将在所有系统上正常运行,而不管处理器的数量。要在超过64个逻辑处理器的系统上正确运行,可能需要修改以下类型的应用程序:

  • 管理、维护或显示整个系统的每个处理器信息的应用程序必须进行修改,以支持64个以上的逻辑处理器。这种应用程序的一个例子是窗口任务管理器,它显示系统中每个处理器的工作负载。
  • 对于性能至关重要并且可以有效扩展到64个逻辑处理器以上的应用程序,必须进行修改才能在此类系统上运行。例如,数据库应用程序可能受益于修改。
  • 如果应用程序使用的动态链接库具有每个处理器的数据结构,并且动态链接库没有被修改为支持64个以上的逻辑处理器,则应用程序中调用动态链接库导出的函数的所有线程必须被分配给同一个组。

        默认情况下,应用程序被限制在一个组中,这应该为典型应用程序提供足够的处理能力。操作系统最初在系统中的组之间以循环方式将每个进程分配给单个组。一个进程开始被分配给一个组执行。进程的第一个线程最初在该进程被分配到的组中运行。每个新创建的线程与创建它的线程被分配到同一个组。

        一个应用程序需要使用多个组,这样它就可以在超过64个处理器上运行,它必须明确地决定在哪里运行它的线程,并负责将线程的处理器亲缘关系设置到所需的组。INHERIT_PARENT_AFFINITY标志可用于指定父进程(可能不同于当前进程),从中生成新进程的关联。如果进程在单个组中运行,它可以使用GetProcessAffinityMaskSetProcessAffinityMask同时保持在同一组中;如果修改了进程关联,新的关联将应用到它的线程。

        可以在创建时使用进程_线程_属性_组_相似性属性的扩展属性CreateRemoteThreadEx功能。创建线程后,可以通过调用SetThreadAffinityMask或者SetThreadGroupAffinity如果线程被分配到与进程不同的组,则进程的相似性被更新以包括线程的相似性,并且进程成为多组进程。必须对单个线程进行进一步的相似性更改;不能使用修改多组进程的相似性SetProcessAffinityMask。这GetProcessGroupAffinity函数检索进程及其线程被分配到的组的集合。

        若要为与作业对象关联的所有进程指定关联性,请使用SetInformationJobObject函数与JobObjectGroupInformation或者JobObjectGroupInformationEx信息类。

逻辑处理器由其组号和组相关处理器号来标识。这由一个处理器号结构。遗留函数使用的数字处理器号是相对于组的。

有关支持64个以上处理器的操作系统体系结构变化的讨论,请参见白皮书支持超过64个处理器的系统

有关支持处理器组的新功能和结构的列表,请参见流程和线程中的新内容

多处理器

NUMA支持

 


若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

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

win下处理器组概念 的相关文章

  • C++知识积累:内存对齐理解

    为什么要进行内存对齐 这是因为CPU的读取总是对齐的 举个例子 假设CPU是32位的 那么CPU每次读取的4字节数据的首地址都是4的倍数 也就是说 内存中数据首地址为4的倍数时 CPU一次操作就可以完成数据读取 假设有一个int型四字节大小
  • android通过JNI用C/C++创建本地文件

    通过jni在本地创建文件 1 在android studio创建基本的jni工程 并且在APP界面成功显示 Hello from C 不会的可以看android studio使用jni 2 在native lib cpp文件中创建文件 为了
  • c/c++入门教程 - 1.基础c/c++ - 1.0 Visual Studio 2019安装环境搭建

    推荐视频课程 https www bilibili com video BV1et411b73Z p 2 已投币三连 b站果然是个学习的网站 本来是想在linux环境下运行QT 于是先学了几个月linux嵌入式驱动开发 后来发现太底层了 与
  • JNA模拟复杂的C类型——Java映射char*、int*、float*、double*

    文章目录 引言 Java Native Type Conversions Java和C基本类型指针对应关系 Pointer的具体用法 引言 最近项目在用Java调用C写的一些三方库 没办法直接调 用Java封装一下C的接口 这就少不了要用到
  • 写时拷贝技术(copy-on-write)

    传统的fork 系统调用直接把所有的资源复制给新创建的进程 这种实现过于简单并且效率低下 因为它拷贝的数据也许并不共享 更糟的情况是 如果新进程打算立即执行一个新的映像 那么所有的拷贝都将前功尽弃 Linux的fork 使用写时拷贝 cop
  • 简析多级指针解引用

    转自 简析多级指针解引用 指针是C语言中公认的最为强大的语法要素 但同时也是最难理解的语法要素 它曾给程序员带来了无数麻烦和痛苦 以致于在C语言之后诞生的很多新兴 语言中我们再也难觅指针的身影了 下面是一个最简单的C语言指针的例子 int
  • C/C++中浮点数格式学习——以IEEE75432位单精度为例

    这是浮点数的通常表示形式 在IEEE754中 单精度浮点数有如下形式 32位单精度 单精度二进制小数 使用32个比特存储 1 8 23位长 S Exp Fraction 31 30至23偏正值 实际的指数大小 127 22至0位编号 从右边
  • BP学习算法-构建三层神经网络

    引 人工神经网络 Artificial Neural Networks 简写为ANNs 也简称为神经网络 NNs 或称作连接模型 Connection Model 是一种模仿动物神经网络行为特征 进行分布式并行信息处理的算法数学模型 这种网
  • vector,list,deque区别

    http blog csdn net renkaihao article details 6803866 vector和built in数组类似 它拥有一段连续的内存空间 并且起始地址不变 因此它能非常好的支持随即存取 即 操作符 但由于它
  • 值得学习与推荐的c/c++框架和函数库

    这几天不上班 翻翻Evernote中记录的一些笔记 刚好有时间把记录的一些好玩链接转载一下 这篇文章里提到的很多库都用过 尤其是图像处理相关库 尤其是opencv及cximage 当时做图像算法时 很多算法就是从上面找来 然后自己修改的 比
  • 为何在新建STM工程中全局声明两个宏

    在uVision中新建STM32工程后 需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中 此时需要在工程设置 gt C C 选项卡下的Define文本框中键入这两个全局宏定义 STM32F40 41xxx USE STDPERIP
  • lua和测试(一)

    lua做为一门高级语言 在游戏产业运用到机会越来越多了 测试掌握几门脚本语言也有一定的重要性 以下对于lua组合输入做出一些引导 测试需要掌握的关于返回数值 主要用到布尔类 前言的指引 lua的语法比较简单和清晰 学过c语言的可以很好的掌握
  • Dev-C++之开启装逼效果

    Dev C 是个不错的C IDE 在10年前 它是很不错 在现在 它是个以界面丑陋和调试像吃粑粑这两点著称 如下图 实在是丑到离谱 丑到无法忍受 可是没办法呀 人家CCF规定比赛用这个 你个小蒟蒻吵什么 我现在就来讲讲怎么把你的Dev C
  • C++:指向类的成员的指针

    引 想必接触过C的朋友们对C语言中指针的概念已经有了深入的了解 如果初步进行了解的朋友可以看一下 C语言基础学习笔记 指针展开来讲的基本知识点包括 指针的概念 指针的定义和初始化及简单使用 指针函数和函数指针 有关指针函数和函数指针的内容上
  • stat 函数解析

    stat 函数的简单使用 stat 函数是用来获取文件的各种属性的一个linux下的常用API函数 函数原型为int stat const char path struct stat buf stat定义如下 struct stat dev
  • C/C++编程:令人印象深刻的高级技巧案例

    C C 编程语言在软件开发领域有着悠久的历史 由于其高效 灵活和底层访问能力 至今仍然被广泛应用 本文将介绍一些在C C 编程中令人印象深刻的高级技巧 帮助读者提升编程水平 更加高效地使用这两种强大的编程语言 一 指针运算与内存管理 C C
  • C/C++编程中的算法实现技巧与案例分析

    C C 编程语言因其高效 灵活和底层的特性 被广大开发者用于实现各种复杂算法 本文将通过10个具体的算法案例 详细探讨C C 在算法实现中的技巧和应用 一 冒泡排序 Bubble Sort 冒泡排序 Bubble Sort 是一种简单的排序
  • C++ 中 const 和 constexpr 关键字解析:常量、函数和指针

    很多 C 的初学者看到 const 这个关键字的第一反应都是一头雾水 主要是因为 const 可 以出现在很多的位置 以及后面加入的 constexpr 更是常常感到困惑 今天就为大家一一解释出现它们的含义和以及作用 const 关键字 c
  • C++中的引用

    一 引用的概念 引用不是新定义一个变量 而是给已有变量取一个别名 编译器不会为引用变量开辟内存空间 而和它引用的变量共用一块内存空间 注意 由于C 兼容C 所以 既可以是引用符号 也可以是取地址 int a 0 int b a cout l
  • Woocommerce:添加第二个电子邮件地址不起作用,除非收件人是管理员

    我尝试了多种方法来向 Woocommerce 电子邮件添加其他收件人 但它似乎仅适用于主要收件人是管理员的测试订单 这些是我尝试过的片段 如果订单的客户是管理员 则电子邮件将发送到这两个地址 如果订单包含客户电子邮件地址 则仅发送至该电子邮

随机推荐

  • 编写一个函数,用来删除字符串中的空格

    程序代码 include
  • 苏小红版 c语言程序设计(第三版)系列实验题:学生成绩管理系统V2.0

    github https github com Jackie0Feng SAMS 系统需求描述 某班有最多不超过30人 具体人数由键盘输入 参加某门课的考试 用一维数组和函数指针作为函数参数编程实现如下学生成绩管理 1 录入每个学生的学号和
  • 数据库之桥

    前言 通俗地讲 就是如何使用 工具 eclipse 连接到 你的数据库 JDBC 简介 全称为 Java Database Connectivity 可以使用Java语言去操作数据库 通过数据库提供的Connector作为支持 对于不同的语
  • MyBatis中自动生成主键

    MyBatis中自动生成主键 详细 Mybatis 配置文件配置useGeneratedKeys 参数只针对 insert 语句生效 默认为 false 在INSERT语句中 我们为可以自动生成 auto generated 主键的列 ST
  • Maven镜像(mirror)

    使用镜像代替中央仓库 国内开发人员由于网络原因 直接从中央仓库下载构件时 速度较慢或不稳定 我们通常会使用中央仓库的国内镜像站来解决该问题 配置 Maven 镜像的方法也非常的简单 我们只需要在 Maven 安装目录中 setting xm
  • 如何更改git提交代码的用户名称

    桌面单击鼠标右键 点击Git Bash Here 出现弹窗 修改git提交者的名称 git config global user name 要修改的名称 查看git提交者的名称 git config user name
  • Python: 生成带用户昵称的头像

    Python 生成带用户昵称的头像 需求 新建用户后 根据用户输入的昵称生成图片 例 注册 钉钉 用户后 头像根据输入的名字生成 开发环境 Windows 10 Python 3 8 Pillow 8 1 2 实现 蛇皮皮蛋 Python创
  • 【千律】C++基础:函数的重载

    include
  • 易游网吧无盘服务器安装,易游无盘安装教程

    易游无盘安装教程 2021 02 19 00 59 49 简介 php去除nbsp的方法 首先创建一个PHP代码示例文件 然后通过 preg replace s nbsp xc2 xa0 strip tags val 方法去除所有nbsp即
  • Sublime Text3 SublimeREPL python

    首先什么是REPL A Read Eval Print Loop REPL is available both as a standalone program and easily includable in other programs
  • qt之利用lineEdit设置密码样式

    参考博客 https blog csdn net u012288722 article details 77850974 主要参考以上大神博客实现如下 可能需要加上头文件 include
  • v8学习---添加js全局函数

    v8学习 添加js全局函数 标签 v8 2013 11 10 10 11 951人阅读 评论 0 收藏 举报 分类 v8 12 版权声明 本文为博主原创文章 未经博主允许不得转载 cpp view plain copy include
  • URL 链接中 井号#、问号?、连接符& 分别有什么作用?

    井号 表示网页中的一个位置 被称之为锚点 常用于某个网页间不同位置的跳转 简单的说就是在一个网页中 URL 不变的情况下 通过添加 buy 的字符在 URL 最后可以跳转到当前网页中已经定义好的锚点 id buy 位置 同样 的改变也会增加
  • APPIcon生成

    有两种生成方法 比较常用 一种是设计师常用的 在线生成图标 https icon wuruihong com 支持 jpg png psd 文件 可以生成圆角 可以自定义大小 生成后可以预览 模拟手机屏幕的效果预览 第二种就是终端生成 利用
  • PyTorch&CUDA安装过程及测试

    PyTorch CUDA安装过程及测试 1 准备工作 1 1 Anaconda NVDIA驱动 之前安装过了Anaconda和NVIDIA驱动 所以直接跳过这几步 打开NVIDIA控制面板 帮助 gt 系统信息 gt 组件 查看自己的CUD
  • 亲!了解一下开源许可协议呗?

    哈喽 大家好 我是指北君 今天我来给大家简单讲讲开源许可协议 只有了解开源许可协议 才能合法合理地使用各种开源软件 并保护自己的合法权益 一 开源许可协议的目标 开源许可协议 也称 许可证 它是一些开源支持组织为了激励和保护开源软件开发者的
  • cortex M3/M4内核 特权级与用户级详解

    一 程序运行为什么要有用户级与特权级区分 用户级和特权级的实现是为了给存储器提供一种保护机制 让用户代码不能访问特定的存储区域 只有特权级级代码才能有权限访问特定的存储区域 防止用户代码或者应用代码意外或恶意访问操作系统的数据存储区域 一般
  • MySQL(17)MySQL数据类型:日期和时间类型

    日期和时间类型 MySQL 中有多处表示日期的数据类型 YEAR TIME DATE DTAETIME TIMESTAMP 当只记录年信息的时候 可以只使用 YEAR 类型 每一个类型都有合法的取值范围 当指定确定不合法的值时 系统将 零
  • discuz密码找回:忘记UCENTER创始人密码

    1 通过ftp工具连接您的虚拟主机在网站根目录uc目录下的子目录 data中找到文件config inc php 注意 不是跟目录data 是uc server data 2 通过代码编辑器打开它 找到类似以下代码 define UC FO
  • win下处理器组概念

    微软官方文档 https docs microsoft com en us windows win32 procthread processor groups 译文如下 64位版本的Windows 7和Windows Server 2008