多核CPU算法

article/2025/8/23 14:13:01

多核CPU环境下的进程调度算法有哪些,与单核CPU环境下的进程调度有何不同?

多核CPU调度算法

  • 全局队列调度
    • 操作系统维护一个全局的任务等待队列。
    • 当系统中有一个CPU核心空闲时,操作系统就从全局任务等待队列中选取就绪任务开始在此核心上执行。
    • 这种方法的优点是CPU核心利用率较高。
  • 局部队列调度。
    • 操作系统为每个CPU内核维护一个局部的任务等待队列。
    • 当系统中有一个CPU内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行。
    • 这种方法的优点是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部Cache命中率。
    • 目前多数多核CPU操作系统采用的是基于全局队列的任务调度算法。

单核CPU调度算法

  • FCFS调度

    • 先来的任务先被执行
    • 容易造成convoy effect(护航效果)
    • 其余进程在等待一个大进程释放CPU,可能导致CPU和设备的使用率变低
  • 优先级调度

    • CPU调度程序根据任务的优先级来选择谁先被分配到资源
    • 可能造成inddefinite blocking/starvation(无限等待/饥饿)
    • 某个低优先级进程会被 无穷等待
    • 解决方法
      • ”老化” 技术: 随着进程等待时间的增加, 优先级随之增加
  • SJF调度(shortest-job-first,SJF)

    • 选取CPU区间最短的任务执行
    • SJF算法常用于长期调度,控制多道程序设计的程度,平衡IO和CPU的组合进程
    • 不能在短期CPU调度上实现
    • 抢占SJF(shortest-remaining-time-first scheduling)
    • 如果有新到的进程的CPU时间 比正在执行的进程的剩余时间短,则发生抢占
  • RR调度(轮转法)

    • 专门为分时系统设计的

    • 时间片技术

    • 定义一个较小的时间单元

    • 为每个进程分配不超过一个时间片的CPU

      • 若进程在一个时间片里结束,则释放CPU
      • 若进程不能在一个时间片里结束,还是要释放CPU,并进行上下文切换,将进程加入到就绪队列的尾部
    • 时间片的安排

    • 时间片长度和CPU利用率不是线性相关的

这里写图片描述

  • 多级队列调度

    • 将ready队列分成多个独立的队列
    • 举例(前后台)

这里写图片描述

  • 多级反馈队列调度

    • 多级队列调度算法的各各独立的队列之间的进程是不能在队列之间移动的
    • 反馈队列调度可以移动

这里写图片描述

多核CPU调度算法与单核CPU调度算法对比

  1. 多核CPU的调度算法更为复杂

  2. 锁竞争导致串行化

    • 有两个线程A和B使用同一个lock,但运行在不同的CPU核上,如果A得到了锁,则B就发生堵塞。B所在的CPU就浪费了一个CPU运行时间

    这里写图片描述

  3. 负载均衡的区别

    在单核CPU中,并不需要考虑CPU间负载均衡的问题,因为无论线程如何切换,CPU始终处于工作状态,它并不会影响程序运行的总时间。

    但对于多核CPU,则一定要考虑负载均衡的问题,避免出现负载小的CPU出现空闲等待的现象。

  4. 任务调度策略的区别

    单核CPU:保证优先级高的线程可以抢占CPU时间,先运行。在这种情况下程序员更多的是需要考虑任务的优先级。

    多核CPU:不单是要考虑任务的优先级,也要考虑各个任务的耗时,使负载均衡,提高加速比和CPU效率。

  5. CPUcache存取区别

    • 在单核系统中,同一时刻只有一个硬件线程在执行,因此单核CPU是不存在Cache存储问题的。
    • 但在多核CPU中,情况则发生了变化。问题主要是因为CPU读取Cache时是以行为单位。
      • 如果两个硬件线程同时执行时,会造成两个硬件线程写同一Cache的问题,造成竞争降低效率

参考链接

https://blog.csdn.net/liu857279611/article/details/71967601


http://chatgpt.dhexx.cn/article/LMBOiSfL.shtml

相关文章

多CPU和多核CPU对应多进程和多线程调度

目录 cpu架构和工作原理多核cpu和多cpu 架构cpu的缓存进程和线程进程和线程在多核cpu,多cpu中的运行关系 cpu架构和工作原理 计算机有5大基本组成部分,运算器,控制器,存储器,输入和输出。运算器和控制器封装到一起&a…

单核CPU vs. 多核CPU

单核CPU vs. 多核CPU 单核CPU 起源: CPU的起源是1971年英特尔公司推出,由此正式宣告计算机的诞生,可以说是世界级的改变,并且严格准守冯诺依曼体系结构,在英特尔推出CPU之前的计算机所使用的处理器工作是非常麻烦的…

多核计算机是指有多个cpu,多核和多个CPU有什么区别?

多核和多个CPU有什么区别? 多核和多个CPU有什么区别?首先让我们了解以下两项: 什么是多核CPU?简单的理解是,我们将多个内核加载到一个程序包中,让用户了解这是一个处理器. 这样做的好处是,最初在单台计算机…

多核CPU、多CPU与多进程、多线程关系

文章目录 1 cpu架构和工作原理2 多核cpu和多cpu架构3 进程和线程4 多核、多CPU与多线程、多进程的对应关系5 总结 1 cpu架构和工作原理 计算机有5大基本组成部分,运算器,控制器,存储器,输入和输出。运算器和控制器封装到一起&…

多核与多处理器的区别

一、定义 多核:单块CPU上面能处理数据的芯片组的数量,比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。 多处理器:主板上实际插入的cpu数量,一般有两个或者多个处理…

多核CPU和单核的区别~

昨天有同学问我多核cpu和单核的区别大不大,今天简单写一篇回复下吧。大家有其他问题也可以文末给我留言,我会尽量抽时间写文回复。 首先回顾下基本概念,cpu,就是中央处理器,包括运算器和控制器。cpu的主要功能就是“一…

多核处理器结构

文章目录 一、多核处理器的发展演化二、多核处理器的访存结构2.1 通用多核处理器的片上Cache结构2.2 存储一致性模型2.3 Cache一致性协议 三、多核处理器的互连结构3.1 片上总线3.2 交叉开关3.3 片上网络 四、多核处理器的同步机制4.1 原子操作4.2 锁的软件实现方法4.3 屏障软件…

关于 CPU 的多核和超线程技术

1. 关于 CPU 的多核和超线程技术 CPU 的物理个数由主板上的插槽数量决定,每个 CPU 可以有多核心,每核心可能会有多线程。 多核 CPU 的每核(每核都是一个小芯片),在 OS 看来都是一个独立的 CPU。 对于超线程 CPU 来说,每核 CPU …

手机的开机流程分析(pmic角度)

【前言】 电源是手机soc必不可缺的部分之一,那么开机的过程是怎么样的呢,接下来我会从硬件角度分析。 【开机源】

RK3588 PMIC/Power电路 PCB 设计指南

以下为RK3588 电源各供电电路 PCB 设计指南。 1、VDD_LOGIC,VDD_GPU,VDD_NPU,VDD_CPU电源的 DC-DC 远端反馈设计。 100ohm反馈电阻需要靠近输出电容放置,电阻一端连接到 DC-DC 输出电容,另一端连接到PMIC 的VOUT 反馈脚…

linux电源管理配置,Exynos 4412 电源管理芯片PMIC 的配置及使用方法

开发板:迅为4412精英版。 uboot:uboot-2014-10。 PMIC:SAMSUNG S5M8767A 在移植新版u-boot的时候,上网搜电源管理芯片的使用方法资料,发现几乎没有,就算是datasheet也很难下载得到,不知是何原因…

RK3399平台开发系列讲解(电源管理篇)11.10、PMIC(生产者)驱动数据结构体

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、结构描述二、约束结构三、初始化数据结构四、配置结构五、设备操作结构沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Linux调节器框架设计用于连接和控制电压和电流调节器。它分为以下…

camera 添加外挂pmic进行供电的涉及

凡是多问几个为什么? 当今camera设计为什么越来越喜欢用外接的pmic? 很多大厂的camera都用到了wl2864,wl2868这样的外接pmic芯片,为什么套片上自带的pmic在已经比较充足的情况下依然加大成本还要这样做呢? 在一个典…

SOC电源管理系统PMIC

SOC电源管理系统 版权声明: 本文作者: 烓围玮未 首发于知乎专栏:芯片设计进阶之路 转发无需授权,请保留这段声明。 随着SOC越来越复杂,包含的IP越来越多,单个SOC上实现了CPU, 射频模块,相机…

mtk-pmic

简单介绍了mtk6353这颗pmic各部分的功能 一.功能框图 6353主要由如下几部分组成 1.电平转换:LDO和buck 2.LED驱动current sink 3.RTC 4.电压检测AUXADC 5.控制信号:上下电时序,系统复位,异常处理 6.充电控制 7.audio codec 8.电量计fuel gauge 二.各部分介绍 1.电平转换 这…

高通Pmic闪光灯代码架构

msm-kernel 注册一个名为"leds-qti-flash"的驱动,驱动代码在"leds-qti-flash.c"文件中。 对下:实现对pmic芯片更新寄存器,也就是实际控制闪光灯的操作。 对上:提供led_classdev结构体,即flash/sw…

Qcom 平台 pmic adc读取代码实现

Qcom 平台读取pmic上 adc电压值的方法 如下图,可以通过平台提供的节点(参考高通文档将mpp配置为adc功能) cat对应的节点获取结果; 也可以通过自行实现的驱动中调用相关接口并转化结果; Kernel demo 参考代码&#x…

浅谈Linux PMIC驱动(一)

转眼间,从事PMIC驱动开发已将近4年,前后参与两款PMIC芯片研发,一款自研,一款Q公司PMIC,对PMIC有了一定的理解,将其总结归纳,算是这几年工作的收获吧? 读者对象:对PMIC感…

PMIC/SBC/PMU 电源管理芯片工作原理

目录 PMIC/SBC作用 DC转换的方式 PMIC 与ASIL PMIC 工作逻辑 PMIC与DDR的关系 PMIC与CPU PMIC/SBC/PMU作用 PMIC:power management IC的缩写,中文是电源管理集成电路。 SBC:…

PMIC 工作原理

1. PMIC芯片每个电压的输出可以通过外部EEPROM定制,若无EEPROM,使用默认的配置; 2. PMIC需要外部给一个使能信号开始工作 3. PMIC支持多种工作模式:BACKUP、ACTIVE、STANDBY 参考PMCI数据手册: BD9574MWF-M Power …