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

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

  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.mzph.cn/news/57176.shtml

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

相关文章

NFTScan | 08.21~08.27 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。周期:2023.08.21~ 2023.08.27 NFT Hot News 01/ NFT 品牌体验平台 Recur 将于 11 月 16 日彻底关闭,此前曾获 5000 万美元融资 8 月 21 日,NFT 品牌体验平台 Recur 在 X…

Oracle创建控制列表ACL(Access Control List)

Oracle创建控制列表ACL(Access Control List) Oracle ACL简介一、先登陆163邮箱设置开启SMTP。二、Oracle ACL控制列表处理(一)创建ACL(create_acl)(二)添加ACL权限(add_…

【算法专题突破】双指针 - 盛最多水的容器(4)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:11. 盛最多水的容器 - 力扣(Leetcode) 这道题目也不难理解, 两边的柱子的盛水量是根据短的那边的柱子决定的, 而盛水量…

开源项目的测试和质量保证

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

世纪互联收入增长放缓,低于华尔街预期,全年业绩指引令投资者失望

来源:猛兽财经 作者:猛兽财经 全年业绩指引令投资者失望 世纪互联(VNET)在发布了第二季度喜忧参半的财务业绩后,依然坚持了此前发布的2023财年业绩指引。 财报显示,虽然世纪互联第二季度的收入同比增长了6…

C语言学习之main函数两个参数的应用

main函数的两个参数: int main(int argc, char const *argv[]) {/* code */return 0; }参数argc:表示在执行程序时,在终端所输入参数的个数,包括可执行文件的名称;参数argv:1.本质上是一个字符型指针数组;2.用于获取指…

Redis注入中出现的问题

Redis注入中出现的问题 出现的问题 Error starting ApplicationContext. To display the conditions report re-run your application with debug enabled. 2023-08-23 16:38:42.294 ERROR 32136 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *********…

13、Vue3 大事件管理系统

一、大事件项目介绍 和 创建 1.1 Vue3 大事件管理系统 在线演示: https://fe-bigevent-web.itheima.net/login 接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835 基地址: http://big-event-vue-api-t.i…

ardupilot开发 --- EKF篇

状态估计的算法发展 参数调试 AHRS_EKF_USE: set to “1” to use the EKF, “0” to use DCM for attitude control and inertial nav (Copter-3.2.1) or ahrs dead reckoning (Plane) for position control. In Copter-3.3 (and higher) this parameter is forced to “1” …

搭建 Gitlab

当设置和配置 GitLab 实例并执行诸如创建群组、项目、用户和上传代码等操作时,涉及到多个步骤,每个步骤都有特定的目的。让我们逐步解释每个步骤并说明其背后的原因: 安装必需的软件: yum install -y curl policycoreutils-python…

“超级AI助手:全新提升!中文NLP训练框架,快速上手,海量训练数据,ChatGLM-v2、中文Bloom、Dolly_v2_3b助您实现更智能的应用!”

“超级AI助手:全新提升!中文NLP训练框架,快速上手,海量训练数据,ChatGLM-v2、中文Bloom、Dolly_v2_3b助您实现更智能的应用!” 1.简介 目标:基于pytorch、transformers做中文领域的nlp开箱即用…

前端面试:【实际项目经验】团队协作、代码管理和Git命令梳理

在现代软件开发中,团队协作、代码管理和版本控制是至关重要的方面。本文将分享一些实际项目经验,重点关注团队协作、代码管理,以及Git版本控制的关键命令和最佳实践。 团队协作: 明确角色和责任: 在项目开始阶段&#…

网络地址转换NAT-动态NAT的使用范围和配置-思科EI,华为数通

网络地址转换NAT-动态NAT的使用范围和配置 什么是动态NAT? 使用公有地址池,并以先到先得的原则分配这些地址。当具有私有 IP 地址的主机请求访问 Internet 时,动态 NAT 从地址池中选择一个未被其它主机占用的 IP 地址一对一的转化。当数据会话…

torch.cuda常见相关

文章目录 cuda常见用法场景问题什么是cuda?cuda下载链接 cuda常见用法 torch.cuda.is_available() # 查看是否有可用GPU torch.cuda.device_count() # 查看GPU数量 torch.cuda.get_device_capability(device) # 查看指定GPU容量 torch.cuda.get_device_name(device…

Java源码分析(二)Double

本篇是源码分析的第二篇,上篇我们一起分析了Integer类的源码,本篇一起学习下Double类的源码,看下其实现。 一、Double类图 首先,相比Integer,Double类的源码只有1000行代码。如下是Integer及其关联类/接口的类图&#…

内存泄漏定位工具

1、原理 在编写复杂代码的时候,有时一大意就会忘了释放申请的内存;或是调试前人代码时,发现有内存泄漏,这些情况排查起来相当麻烦。这里基于RT-Thread写了一个内存泄漏定位工具(实际和RTT无关,什么系统都可…

四种常见的数据模型

为什么要进行数仓建模? 性能:良好的数据模型能帮助我们快速查询需要的数据,减少数据I/O吞吐 成本:减少数据冗余、计算结果复用、从而减低存储和计算成本 效率:改善用户使用数据的体验,提高使用数据的效率 改…

移动APP、WEB端和PC端测试的区别

移动APP、WEB端和PC端的测试区别主要体现在以下几个方面: 1. 平台和环境 移动APP是在移动设备上运行的应用程序,测试需要考虑不同的操作系统(如iOS、Android等)、不同的设备型号和屏幕分辨率。WEB端是在浏览器上运行的应用程序&am…

ssm+vue中国咖啡文化宣传网站源码和论文

ssmvue中国咖啡文化宣传网站源码和论文078 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 课题背景 随着时代的发展和人们生活理念的进一步改变,咖啡业已经成为了全球经济中发展最迅猛的产业之一。…

专访 Hyper Oracle:可编程的 zkOracle 打造未来世界的超算

许多 Web3 应用在实现的过程中,常常会遇到基础设施方面的限制,包括去中心化自动化、预言机、链上信息搜索等问题。绝大部分区块链的中间件网络都是依赖于节点质押来保证节点执行的诚实性,这样的模式会产生诸多衍生问题,例如安全性…