当前位置: 首页 > news >正文

现代多核 CPU 的变化

随着 CPU 技术的发展,现代计算机普遍采用多核架构,这对操作系统内核的进程管理、同步机制以及调度策略都带来了新的挑战和优化方案。本文主要探讨 对称多处理(SMP)架构内核同步机制RCU(读-复制更新)技术 以及相关的多核优化策略

1. 多核 CPU 和 SMP(对称多处理)架构

1.1 传统的单核 CPU

单核 CPU 时代,系统的所有进程都是串行执行的。内核通过时间片轮转(Time Slicing) 机制,在不同进程之间切换,从而实现多任务并发

单核 CPU 存在瓶颈

  • CPU 利用率低:如果一个进程等待 I/O,CPU 可能空闲
  • 无法真正并行执行:所有任务都必须排队等待 CPU 运行

1.2 多核 CPU 时代

现代CPU都具备多个独立核心(Core),每个核心可以独立运行线程或进程,实现真正的并行计算

多核CPU主要有两种架构:

  1. SMP(Symmetric Multi-Processing,对称多处理)

    • 所有 CPU 核心对称地访问相同的内存、I/O 设备和内核资源
    • 每个核心都可以运行内核或用户进程,调度器负责公平分配任务
    • 现代服务器、桌面计算机、移动处理器大多采用 SMP 结构
  2. AMP(Asymmetric Multi-Processing,非对称多处理)

    • 不同核心可能有不同的用途(如一个核心专门执行内核任务,其他核心执行用户任务)
    • 主要用于嵌入式系统特殊用途 CPU(如 DSP、GPU)

        SMP 是现代多核 CPU 的主流架构,它让多个核心可以同时执行内核代码,但也带来了并发访问的挑战

2. 多核 CPU 面临的并发问题

由于多个 CPU 核心可以同时执行内核代码,这会带来 竞态条件(Race Condition)同步问题

  1. 多个核心同时访问同一块内存

    • 如果多个进程或线程同时访问一个共享变量,可能会导致数据竞争(Data Race)
    • 例如,两个 CPU 核心同时修改某个全局变量,可能导致错误的结果
  2. 内核中的数据一致性

    • 操作系统内核维护着大量的全局数据结构,如进程调度队列、文件系统缓存、网络协议栈
    • 这些数据如果没有正确同步,可能会出现崩溃或数据损坏
  3. 如何高效同步数据

    • 传统的锁机制(如互斥锁 Mutex、读写锁 RWLock) 虽然能防止竞态,但会导致性能下降
    • RCU(Read-Copy-Update) 等优化技术能够减少锁的使用,提高读操作的效率

3. 解决方案:多核同步机制(这里以后详细讲)

为了解决多核 CPU 访问共享资源的问题,内核采用了多种同步机制:

3.1 自旋锁(Spinlock)

  • 适用于短时间内的临界区访问,不会导致线程睡眠
  • 特点
    • 忙等(Busy-Waiting),如果锁被占用,CPU 会一直循环等待,直到锁释放
    • 适合时间短的临界区(如 CPU 处理器状态的更新)

3.2 互斥锁(Mutex)

  • 适用于长时间的临界区访问,会导致线程睡眠
  • 线程等待锁时,会被挂起,避免CPU资源浪费

3.3 读写锁(RWLock)

  • 适用于读多写少的场景,允许多个线程同时读取,但只允许一个线程写入

4. RCU(Read-Copy-Update)优化

RCU(Read-Copy-Update,读-复制-更新) 是一种无锁同步机制,专门用于读多写少的场景,例如 Linux 内核的进程管理、文件系统、网络协议栈

4.1 RCU 的基本思想

  • 读取时不加锁,而是直接读取旧数据的副本(Copy)
  • 更新时创建新数据结构,修改完成后再切换指针,让新数据生效
  • 旧数据在确保没有进程使用后被释放

4.2 RCU 工作流程

  1. 读操作(Reader)

    • 直接读取共享数据,不需要加锁,提高并发性能
  2. 写操作(Updater)

    • 复制数据结构的一个副本,在副本上修改数据
    • 通过原子指针切换(Pointer Swap),将新的数据结构替换旧的
    • 等待读取完成后,释放旧数据

4.3 RCU 的优势

 高效的读性能:读操作几乎无锁,避免了锁争用
 写操作不会阻塞读操作:即使有写操作,读线程仍然可以继续读取旧数据
 适用于高并发场景:如 CPU 调度、网络协议栈、文件系统索引

5. 多核优化策略

除了 RCU 之外,多核 CPU 还采用了一些优化策略:

  • NUMA(非均匀内存访问):不同 CPU 核心访问不同的内存区域,提高内存访问效率
  • 中断亲和性(Interrupt Affinity):将特定的硬件中断绑定到特定的 CPU 核心,减少跨核通信的开销
  • CPU 亲和性(CPU Affinity):让进程优先在某个 CPU 核心上运行,减少缓存失效(Cache Miss)

6. 结论

 SMP 让多个 CPU 核心可以同时运行内核代码,但需要新的同步机制来避免竞态条件
 传统的锁机制(如自旋锁、互斥锁)存在性能问题,需要更高效的优化方案
 RCU 提供了一种高效的无锁读写同步机制,适用于高并发场景
 多核优化技术(NUMA、中断亲和性等)进一步提高了 CPU 资源利用率

相关文章:

  • TreeSet(单列集合)
  • Spring Boot(七):Swagger 接口文档
  • 【信息学奥赛一本通 C++题解】1286:怪盗基德的滑翔翼
  • 无人机遥感技术:从植被监测到生理参数反演的进阶之路
  • springboot+mybatis按条件分页查询多张表
  • PHP语法完全入门指南:从零开始掌握动态网页
  • 代码随想录 第一章 数组 209.长度最小的子数组
  • Postgresql的三种备份方式_postgresql备份
  • 如何在在 CentOS 中安装 OLama
  • 企业实战 - 深入解析Python爬虫中的JS逆向技术
  • 【机器学习】线性回归 多项式线性回归
  • web信息泄露 ctfshow-web入门web1-web10
  • mysql 学习15 SQL优化,插入数据优化,主键优化,order by优化,group by 优化,limit 优化,count 优化,update 优化
  • CentOS上远程连接SSH常用操作命令整理
  • 字符串哈希动态规划_6
  • 二.数据治理流程架构
  • 《程序人生》工作2年感悟
  • Leetcode 424-替换后的最长重复字符
  • 复用输出模式的使用场景
  • [STM32 - 野火] - - - 固件库学习笔记 - - - 十五.设置FLASH的读写保护及解除
  • 河北省纪委原副书记、省监委原副主任陈玉祥一审获刑十二年
  • 证监会副主席李明:支持符合条件的外资机构申请新业务、设立新产品
  • 国际观察丨美中东政策生变,以色列面临艰难选择
  • 香港今年新股集资额已超600亿港元,暂居全球首位
  • 女子应聘文员被说“太丑”?官方回应:有关部门启动核查处置
  • 玉林一河段出现十年最大洪水,一村民被冲走遇难