您的位置:首页 > 汽车 > 时评 > 什么是软件开发平台_页面设计英文翻译_手机优化器_市场调研报告包括哪些内容

什么是软件开发平台_页面设计英文翻译_手机优化器_市场调研报告包括哪些内容

2024/11/16 0:15:22 来源:https://blog.csdn.net/zhuxixi1031/article/details/143158441  浏览:    关键词:什么是软件开发平台_页面设计英文翻译_手机优化器_市场调研报告包括哪些内容
什么是软件开发平台_页面设计英文翻译_手机优化器_市场调研报告包括哪些内容

简要

绑核正如其名,将线程/进程绑定在一个或多个CPU核心。该技术可以使进程或线程在特定的处理器上运行,而不会被操作系统调度到其他处理器上。这里有两层含义。

  1. 如果线程被绑定在指定核心上,则只会在该核心上运行,即使其他核心空闲,该进程或线程也不会被调度到那些核心上运行。
  2. 如果绑核的线程消亡了,则绑定关系消失,该核又可以被OS调度去做别的线程的活。但如果绑核的请求又来了,则OS会视情况迁移当前核上的线程,再次建立绑核关系。

知识补充

核与CPU

下图为CPU架构图(大致)。
一个CPU基本包括ALU(算数逻辑单元)、控制器(时序逻辑、PC等)、寄存器等,其中外存不属于CPU。架构分为冯诺依曼体系和哈佛体系,区别在于指令和数据是否存储在同一地方。
在这里插入图片描述
的含义是运算单元,包含一套寄存器、L1L2缓存。在传统的CPU中,核与CPU是一对一关系,但如今一个CPU中可以包含多个核心,因此如今的核更接近于传统CPU的含义。每个核心可以独立执行指令和任务,每个核心在逻辑上表现为一个独立的CPU,但他们共享同一个物理芯片。核拥有独立资源,如ALU和L1L2缓存,和同一个CPU的其他核心共享L3缓存、总线接口等在这里插入图片描述 因此一个核心只能同一时刻运行一个线程,每隔一段时间就会切换任务。如果是切换为其他进程的线程,会切换CR3。CR3指的是存储着页目录物理地址,CPU需要使用这个地址来查找页表条目,将虚拟地址翻译为物理地址。在上下文切换的时候,OS需要改变CR3寄存器的值来切换不同进程的页表。
超线程指的是在一个核上运行多个线程,比如说8核16线程,指的就是一个核能够跑2个线程。超线程需要保证的是,两个线程同时不冲突地使用核中的资源。比如一条整数运算指令只会用到整数运算单元,此时浮点数运算单元闲置,可以拿给另一个线程使用。但这需要CPU额外增加一些资源来满足。这都解释了为什么操作系统分配资源(CPU核、内存、磁盘IO等)最小单位是进程,线程是CPU调度和分配的基本单位。

绑核的意义

绑核最明显的作用就是减少上下文切换,提高了缓存利用率。
如何绑核参考https://zhuanlan.zhihu.com/p/432940336
在linux系统上使用pthread_setaffinity_np即可设置线程亲和性

#define _GNU_SOURCE
#include <pthread.h>
#include <sched.h>void set_thread_affinity(int core_id) {cpu_set_t cpuset;pthread_t current_thread = pthread_self();CPU_ZERO(&cpuset); // 清空CPU集合CPU_SET(core_id, &cpuset); // 添加一个CPU到集合中int result = pthread_setaffinity_np(current_thread, sizeof(cpu_set_t), &cpuset);if (result != 0) {// Handle error}
}

参考

https://zhuanlan.zhihu.com/p/490318618
https://zhuanlan.zhihu.com/p/439381000

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com