单核cpu是怎么处理多线程的

news2025/5/11 4:57:13

首先,要先了解几个概念:

  1、线程是CPU调度和分配的基本单位。

  2、进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位 。

  3、一个进程可以包括多个线程。

  4、CPU的时间片是由计算机的操作系统OS里的调度器分配的.   当多个线程需要执行时,OS里的调度器会将CPU的执行时间划分为多个小的时间片,并依次分配给每个线程。

  5、操作系统内存管理模块:管理物理内存、虚拟内存相关的事务。

并行和并发

并发:在同一个核心的CPU中,同一个时刻,只能有一条指令执行,但多个线程上下文的指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果

 并行:是指在同一个时刻,多个核心上不同的线程指令同时执行。

单核cpu多线程有必要吗?

通常一个任务不光 cpu 上要花时间, io 上也要花时间(例如去数据库查数据,去抓网页,读写文件等)。 一个进程在等 io 的时候, cpu 是闲置的,另一个进程正好可以利用 cpu 进行计算。 多几个进程一起跑,可以把 io 和 cpu 都跑满了。 

 也就是说,充分发挥单核CPU的性能,就要创建足够多线程来填满单核CPU上的时间片。但并非线程越多越好,由于线程之间存在竞争、上下文切换时的开销。

时间片

时间片代表了CPU分配给每个线程的最小时间单位。在多任务的OS中,当多个线程或进程需要执行时,计算机的操作系统OS里的调度器会将CPU的执行时间划分为多个小的时间片,并依次分配给每个线程或进程。

时间片的长度由系统内核、调度算法来决定的,可以是几毫秒或几十毫秒的量级。

上下文切换

切换过程:

1.A线程的时间片用完后,操作系统会剥夺该线程的CPU执行权,CPU会将A线程此刻用的数据存到寄存器中,将执行到哪一步的信息存到程序计数器中.

2.这时,轮到B线程开始执行了, CPU去处理B线程,  当B线程的时间片用完后,又会和线程A一样被暂时封存起来.  

3.线程A解封,CPU又开始执行线程A.

时间片+上下文切换的优缺点

优点:

1.充分利用cpu的效率

2.不同线程进行时间片轮转调度,实现了多个任务的并发执行效果。

缺点:

增加线程上下文切换给cpu带来的额外的性能开销。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/924896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UGUI可视化组件TextMeshPro

一.官方的介绍 TextMeshPro 是 Unity 的最终文本解决方案。它是 Unity UI Text 和旧版 Text Mesh 的完美替代方案。 功能强大且易于使用的 TextMeshPro(也称为 TMP)使用高级文本渲染技巧以及一组自定义着色器;它大幅改进了视觉质量&#xff…

C++快速回顾(四)

前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列blog。C/C是音视频必…

微服务引擎 MSE 全新升级,15 分钟快速体验微服务全栈能力

作者:草谷 前言 微服务引擎 MSE 全新发布!新版本带来了一系列令人振奋的特性和改进,让您更轻松、高效地构建和管理微服务应用程序。从快速入门到迁移优化,MSE 为开发人员提供了全方位的支持和解决方案。无论您是刚刚接触微服务还…

二叉树中的最大路径和-递归

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root…

缓存最佳实践

目录 前言 一、Cache Aside(旁路缓存)策略 二、不一致解决场景及解决方案 一、数据库主从不一致 二、缓存与数据库不一致 三、问题分析 三、缓存误用 一、多服务共用缓存实例 二、调用方缓存数据 三、缓存作为服务与服务之间传递数据的媒介 四…

如何通过tomcat下载映射下载文件

1.1找到tomcat服务器中server.xml文件 !--doBase是静态资源路径位置&#xff0c; path作用相当于设置的key, doBase作用相当于value --> <Context path"/download" docBase"E:\testBackData"></Context>1.2 找到tomcat服务器中web.xml文…

Android JNI系列详解之CMake编译工具的使用

一、CMake工具的介绍 如图所示&#xff0c;CMake工具的主要作用是&#xff0c;将C/C编写的native源文件编译打包生成库文件&#xff08;包含动态库或者静态库文件&#xff09;&#xff0c;集成到Android中使用。 二、CMake编译工具的使用 使用主要是配置两个文件&#xff1a;CM…

漏洞扫描和漏洞评估

进行漏洞扫描和漏洞评估是确保系统和应用程序安全性的重要步骤。 下面是一个详细的步骤指南&#xff0c;说明如何进行漏洞扫描和漏洞评估。 步骤&#xff1a; 信息收集&#xff1a; 在开始漏洞扫描之前&#xff0c;收集有关目标系统和应用程序的信息&#xff0c;包括IP地址、…

Hugo托管到Github Pages

Github通过其Github Pages服务可以user、project或organization提供免费快速的静态托管&#xff0c;同时使用Github Actions自动化开发工作流和构建。 1.创建Github仓库 可见性为public。 命名为username.github.io&#xff0c;username为你的Github用户名。 2.添加远程仓库…

Unity 之 Time.deltaTime 的详细介绍以及用法

文章目录 Time.deltaTime 是什么&#xff1f;Time.deltaTime 有什么用&#xff1f;移动游戏对象&#xff1a;控制动画播放速度&#xff1a;实现平滑的计时器和延时&#xff1a; Time.deltaTime 是什么&#xff1f; “DeltaTime”&#xff08;也被称为 “Delta Time”&#xff…

【计算机视觉|生成对抗】用于高保真自然图像合成的大规模GAN训练用于高保真自然图像合成的大规模GAN训练(BigGAN)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Large Scale GAN Training for High Fidelity Natural Image Synthesis 链接&#xff1a;[1809.11096] Large Scale GAN Training for High Fidelity Natural Image Synthesis (arxiv.org…

【React源码实现】元素渲染的实现原理

前言 本文将结合React的设计思想来实现元素的渲染&#xff0c;即通过JSX语法的方式是如何创建为真实dom渲染到页面上&#xff0c;本文基本不涉及React的源码&#xff0c;但与React的实现思路是一致的&#xff0c;所以非常适合小白学习&#xff0c;建议跟着步骤敲代码&#xff…

【TI毫米波雷达笔记】CCS雷达工程调试(以IWR6843AOP为例)

【TI毫米波雷达笔记】CCS雷达工程调试&#xff08;以IWR6843AOP为例&#xff09; 先前我们讨论了如何建立工程并编译 包括DSS和MSS部分 也就是DSP部分和cortex-r4f部分 通过编译 可以生成一个.out文件 如图 同样的 也有xer4f格、xe674格式等等 这取决于编译的工程配置 但这…

阿里云配置MySQL-server 8.0远程登录

Ubuntu 22.04 LTS 安装MySQL-Server 8.0 # apt search mysql-server # apt install mysql-server重建服务 # service mysql stop # vi /etc/mysql/mysql.conf.d/mysqld.cnf ... bind-address 0.0.0.0 ... # service mysql start # lsof -i:3306 COMMAND PID USER FD …

国内家庭影院普及率不断提升,洛科威多功能岩棉板发挥重要作用

数据显示&#xff0c;目前欧美发达国家的家庭影院普及率达到75%这一较高的水平上&#xff0c;受我国消费者观念改变以及收入水平提升等因素的综合影响&#xff0c;家庭影院也开始出现了一股小热潮&#xff0c;普及率正在稳步提升中。根据相关机构的预测&#xff0c;未来的几年时…

人工智能的未来---拥有常识及抽象世界

如果像 ChatGPT 这样的大模型人工智能领域最热门的东西&#xff0c;那么世界模型就是旗帜。 历史上三位最有影响力的人工智能研究人员中的两位 Yann LeCun 和 Yoshua Bengio 被誉为通往人工智能超级智能的最有可能的途径&#xff0c;他们代表了人工智能的愿景&#xff0c;即人工…

Unity 之transform.LookAt() 调整一个物体的旋转,使其朝向指定的位置

文章目录 总的介绍补充&#xff08;用于摄像机跟随的场景&#xff09; 总的介绍 transform.LookAt 是 Unity 引擎中 Transform 组件的一个方法&#xff0c;用于调整一个物体的旋转&#xff0c;使其朝向指定的位置。通常情况下&#xff0c;它被用来使一个物体&#xff08;如摄像…

数据降维 | MATLAB实现T-SNE降维特征可视化

数据降维 | MATLAB实现T-SNE降维特征可视化 目录 数据降维 | MATLAB实现T-SNE降维特征可视化降维效果基本描述程序设计参考资料 降维效果 基本描述 T-SNE降维特征可视化&#xff0c;MATLAB程序。 T-分布随机邻域嵌入&#xff0c;主要用途是对高维数据进行降维并进行可视化&…

Qt 自定义菜单 托盘菜单

托盘菜单实现&#xff1a;通过QSystemTrayIconQMenuQAction即可完美实现&#xff01; 实现方式&#xff1a;createActions用于创建菜单、菜单项,translateActions用于设置文本、实现多语化&#xff0c;translateAccount用于设置用户空间配额。 void TrayMenu::createActions(…

LLMs指令微调 Instruction fine-tuning

上周&#xff0c;您被介绍了生成型AI项目的生命周期。您探索了大型语言模型的示例用例&#xff0c;并讨论了它们能够执行的任务类型。 在本课中&#xff0c;您将了解如何提高现有模型在特定用例下的性能的方法。 您还将了解可用于评估您微调后的LLM性能并量化其相对于您开始…