单核处理器、多核处理器、多处理器与多线程编程

多线程与多核处理器:程序的并行世界 本文深入探讨了多线程技术以及现代多核处理器的运作原理,展示了它们如何使得计算机系统能够同时执行多个任务。通过对书籍章节内容的分析,我们了解到多线程不仅提高了程序的效率,还要求程序员仔细设计程序以避免资源冲突和错误。此外,我们还讨论了多线程与多任务处理和多进程之间的差异,以及多核处理器如何通过并行处理提升计算速度。 阅读详情

一.进程、线程、单核处理器

进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,即进程是操作系统进行资源分配的最小单元。进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。

线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。

每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。

多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的操作系统教材中的单处理器都是指的单核处理器。对于单核单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能。

最开始,线程只是用于分配单个处理器的处理时间的一种工具。但假如操作系统本身支持多个处理器,那么每个线程都可分配给一个不同的处理器,真正进入“并行运算”状态。从程序设计语言的角度看,多线程操作最有价值的特性之一就是程序员不必关心到底使用了多少个处理器,程序员只需将程序编写成多线程模式即可。程序在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需作出任何特殊的调校。根据前面的论述,大家可能感觉线程处理非常简单。但必须注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到一个问题。举个例子来说,两个线程不能将信息同时发送给一台打印机。为解决这个问题,对那些可共享的资源来说(比如打印机),它们在使用期间必须进入锁定状态。所以一个线程可将资源锁定,在完成了它的任务后,再解开(释放)这个锁,使其他线程可以接着使用同样的资源。

多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。

最简单的比喻多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也不可能只有一节车厢。多线程的出现就是为了提高效率。同时它的出现也带来了一些问题。

注:单核处理器并不是一个长久以来存在的概念,在近年来多核心处理器逐步普及之后,单核心的处理器为了与双核和四核对应而提出。顾名思义处理器只有一个逻辑核心。

二. 多核处理器和多处理器的区别

多核是指一个CPU有多个核心处理器,处理器之间通过CPU内部总线进行通讯。而多CPU是指简单的多个CPU工作在同一个系统上,多个CPU之间的通讯是通过主板上的总线进行的。从以上原理可知,N个核的CPU,要比N个CPU在一起的工作效率要高(单核性能一致的情况下)。

三. 处理器结构对并发程序的影响

对称多处理器是最主要的多核处理器架构。在这种架构中所有的CPU共享一条系统总线(BUS)来连接主存。而每一个核又有自己的一级缓存,相对于BUS对称分布[2],如下图:

这里写图片描述

这种架构在并发程序设计中,大致会引来两个问题,一个是内存可见性,一个是Cache一致性流量。内存可见性属于并发安全的问题,Cache一致性流量引起的是性能上的问题。

内存可见性:内存可见性在单处理器或单线程情况下是不会发生的。在一个单线程环境中,一个变量选写入值,然后在没有干涉的情况下读取这个变量,得到的值应该是修改过的值。但是在读和写不在同一个线程中的时候,情况却是不可以预料的。Core1和Core2可能会同时把主存中某个位置的值Load到自己的一级缓存中,而Core1修改了自己一级缓存中的值后,却不更新主存中的值,这样对于Core2来讲,永远看不到Core1对值的修改。在Java程序设计中,用锁,关键字volatile,CAS原子操作可以保证内存可见。

Cache一致性问题:指的是在SMP结构中,Core1和Core2同时下载了主存中的值到自己的一级缓存中,Core1修改了值后,会通过总线让Core2中的值失效,Core2发现自己存的值失效后,会再通过总线从主存中得到新值。总线的通信能力是固定的,通过总线使各CPU的一级缓存值数据同步的流量过大,那么总线就会成瓶颈。这种影响属于性能上的影响,减小同步竞争就能减少一致性流量。

并行编程架构与模型的深入介绍 并行编程是指通过构建能够同时执行多个计算任务的程序,来充分利用多处理器或多核处理器的计算能力。与传统的串行编程不同,在并行编程中,任务不是按顺序执行,而是可以同时执行或被分配到不同的处理单元上。 阅读详情

相关推荐

HyperLedger Fabric实战(一):基础环境构建

简介 本文将介绍从一台裸机上面如何构建出一个可用的Fabric网络(单机版,非测试网络)。 基础环境构建 Fabric组件安装

yindarui 1万+

单核多线程、多核多线程

单核多线程、多核多线程

m0_45176278的博客 1241

STM32开发者必看:如何在正点原子探索者开发板上快速移植CANopenNode协议栈

本文为STM32开发者提供了在正点原子探索者开发板上快速移植CANopenNode协议栈的实战指南。文章详细介绍了从环境准备、硬件抽象层适配到协议栈初始化与测试的全过程,并分享了PDO配置与性能优化等关键技巧,帮助开发者高效实现CANopen标准化通信。

weixin_29173777的博客 462

多CPU和多核单CPU有什么区别?

总的来说,多个单核CPU的性能比较差,但成本较低,多核单CPU则性能较好,但成本较高。因为多个单核CPU之间在通信的时候借助主板上的总线,而如果一个CPU里面多个核心互相通信则是通过芯片内部总线,那么数据传输延迟就会小。对于部分操作系统来说,是感觉不到这两者的区别的,因为对操作系统来说,每个核心都是作为单独的CPU对待的。

m0_60511809的博客 855

中文实体关系抽取数据集大盘点:从百度Duie2.0到医疗CBLUE,哪个更适合你的NLP项目?

本文全面分析了中文实体关系抽取领域的主流数据集,包括百度DuIE 2.0、医疗CBLUE等,帮助开发者根据项目需求选择最适合的数据集。文章详细对比了各数据集的特点、适用场景及优化策略,为自然语言处理项目提供实用指南。

weixin_29284657的博客 121

别再只画GO图了!用R语言+Perl脚本搞定单细胞KEGG富集分析与圈图(附完整代码)

本文详细介绍了如何利用R语言和Perl脚本实现单细胞KEGG富集分析全流程,从基因ID转换到专业圈图可视化。通过对比KEGG与GO分析的互补价值,提供完整的代码实现和优化技巧,帮助研究者高效完成单细胞测序数据的通路分析,并生成高质量的圈图展示结果。

weixin_28694169的博客 403

单核处理器、多核处理器、多处理器与多线程编程,cpu调度

进程的概念: 进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。 程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。 线程的概念: 线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位。 一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。 线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并.

ALakers的博客 3153

Q学习(Q-learning)入门小例子及python实现

一、从马尔科夫过程到Q学习 # 有一定基础的读者可以直接看第二部分 Q学习(Q-learning)算法是一种与模型无关的强化学习算法,以马尔科夫决策过程(Markov Decision Processes, MDPs)为理论基础。 标准的马尔科夫决策过程可以用一个五元组<S,A,P,R,γ>表示,其中: S是一个离散有界的状态空间; A是一个离散的动作空间; P为状态转...

wlm_py的博客 4万+

单核情况下会有线程安全问题吗?

其实多线程并不是简单的多个核心同时运行多个线程,事实上,单个线程也是可以运行多个线程的,通过分时来实现,同一时间内还是运行一个线程,毕竟只有一个核心,但通过分时就能实现两个线程同时进行。

m0_62056231的博客 3889

国产化办公新选择:在银河麒麟V10上部署ToDesk远程桌面

本文详细介绍了在国产操作系统银河麒麟V10上部署ToDesk远程桌面的完整指南。作为国产远程控制工具,ToDesk在连接速度、系统适配性和用户体验方面表现优异,特别适合国产化办公场景。文章包含X86和ARM架构的安装步骤、常见问题排查及性能优化技巧,帮助用户高效实现远程办公。

weixin_33742618的博客 231

YOLO26涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLO26做红外小目标检测有效涨点

本文提出一种基于APCM模块改进的YOLO26网络模型,通过像素级局部-全局协同建模动态增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,在特征提取阶段有效提升目标区域特征表达质量,尤其适用于低对比度和复杂场景下的目标检测。实验表明,该方法能显著提高小目标检测精度和模型鲁棒性,同时保持较低计算开销。模块通过局部特征分支和全局特征分支的协同融合,实现了对红外小目标的有效增强,在NUAA-SIRST和IRSTD-1K数据集上性能优于现有方法。文章还提供了完整的代码实现和配置指南。

Ai缝合怪、助力小伙伴高效发论文 188

[并发概念] 串行、并行与并发

串行和并行 串行是排队一个一个处理任务,并行是同时处理多个任务。 并发和并行 概念非常相似,难以区分。分别体现在两个方面。 并发(Concurrency),体现在(1)单个处理器;(2)逻辑上同步运行。 并行(Parallelism),体现在(1)多处理器,多核心;(2)物理上同步运行。 并行的理解 并行,是真正的同时运行–在同一个时刻多个任务同时执行。例如多核处理器上,有多个线程同时执行同...

大唐雨夜的博客 2567

Transformer 时间序列预测实战

Transformer 时间序列预测实战

机器学习深度学习业余选手 743

串行、并行与并发的理解

并行,是真正的同时运行--在同一个时刻多个任务同时执行。例如多核处理器上,有多个线程同时执行同一段代码。单核处理器无法在同一时刻执行多个任务,因此无法并行。对于多核CPU,可以做到真实的同时运行,即并行;对于单核CPU,可以通过多个线程切换时间片交替运行,实现并发。程序的部分可以无序或者同时执行,且不影响最终的执行结果,表示程序具有并发性。并发有两种描述,一种是形容多个任务的执行状态;另一种是对“并发性”的简称。串行是大家排队一个一个来,并行是大家一起上。3个线程同时由多个CPU执行(并行且并发)。

2301_79540484的博客 994

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

多处理器技术:并行计算的基石与架构演进

多处理器技术是现代计算系统的核心,它通过在单个计算机系统中集成两个或更多中央处理单元(CPU),实现任务的并行执行,从而显著提升系统的计算性能、吞吐量和可靠性。在单核处理器性能因功耗和散热瓶颈而难以持续提升的背景下,多处理器架构已成为延续“摩尔定律”效益、满足日益增长的计算需求(如大数据分析、人工智能、科学计算、高性能服务器)的必然选择。其重要性不仅在于性能的线性或超线性增长,更在于它为并行编程模型、分布式系统和现代操作系统的发展提供了硬件基础。掌握多处理器技术的分类、工作原理和挑战,是系统架构师设计高性能

谦与谦寻的神隐 1715

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

[C++并发编程] 1. 并发编程入门

本系列记录学习C++并发编程过程中的一些归纳总结的笔记。 并发编程 对并发编程最简单地说明就是CPU同时处理两个或更多独立的任务。 在这里,有两个概念需要搞清楚,即“多处理器”和“多核”。多处理器是指在一台电脑上存在有多个物理CPU,这样的配置即使是现在也基本上只会在服务器上使用;而多核,也可以说多核处理器,是指只有一个物理CPU,但是在这个CPU中做了多个核心,每个核心就相当于一个个的小CPU,...

轻舞飞扬 498

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【转】多核处理器的工作原理及优缺点

【转】多核处理器的工作原理及优缺点 《处理器关于多核概念与区别 多核处理器工作原理及优缺点》原文传送门   摘要:目前关于处理器的单核、双核和多核已经得到了普遍的运用,今天我们主要说说关于多核处理器的一些相关概念,它的工作与那里以及优缺点而展开的分析。 1、多核处理器   多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核),此时处理器能支持系统总线上的多个处理器,由总...

Kevin的博客 9371

java 多进程 并发_并发编程专题(一)-并发与多线程

1.并发1.1 并发与并行首先介绍一下并发与并行,两者虽然只有一字之差,但实际上却有着本质的区别,其概念如下:并行性(parallel):指在同一时刻,有多条指令在多个处理器上同时执行;并发性(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,...

weixin_35969684的博客 443

DP读书:鲲鹏处理器 架构与编程(二)服务器与处理器——高性能处理器的并行组织结构、ARM处理器

关于ARM的所有概览,新手这一篇就够啦,笔记共度计划

DarrenPig的博客 760

并发和并行,异步与多线程区别

1、并发和并行的区别 可由上图形象指出两者的区别: 1)定义: 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。 来个比喻:并发和并行的区别就是一个人同时吃三个馒头和

woliuyunyicai的专栏 1万+

多核CPU 和多个CPU 区别? 并行和并发 操作系统内存管理模块 进程和线程

1、单核CPU是如何实现多进程和多线程? 链接: link1 2、多CPU和多核CPU对应多进程和多线程调度: 链接: link2 3、单核处理器、多核处理器、多处理器与多线程编程 链接: link3 4、多CPU/多核/多进程/多线程/并发/并行之间的关系 链接: link4 5、进程切换和线程切换 链接: link5 重点:2,其他为辅 补充:目前有些大型机经常会有多个CPU,每个CPU都是多核的。如2个物理CPU,每个物理CPU都有4个核,那么最终的CPU就是8核的,个人笔记本都是单CPU,可以查看处

qq_34486648的博客 465

实验二 多线程web服务器的设计与实现_多线程开发中线程数量设计问题

前言前面我们用了几篇文章系统的说了一下有关Java并发编程模型中的一些基础的知识。比如同步,锁,原子性操作,信号量等以及它们的一些延展实现闩锁,栅锁等等。今天我们回过头来简单说一下并发编程模型的设计和选择。主要涉及到我们如何利用多线程设计来在多处理器或者多内核时代如何提高我们应该程序的性能。说说线程和应用程序之间的关系,以及我们在编程过程中如何去设计多线程模型。是不是我们编程时设计的线程越多对应用...

weixin_39578674的博客 391

大数据计算需要多线程cpu吗_多线程开发中线程数量设计问题

前言前面我们用了几篇文章系统的说了一下有关Java并发编程模型中的一些基础的知识。比如同步,锁,原子性操作,信号量等以及它们的一些延展实现闩锁,栅锁等等。今天我们回过头来简单说一下并发编程模型的设计和选择。主要涉及到我们如何利用多线程设计来在多处理器或者多内核时代如何提高我们应该程序的性能。说说线程和应用程序之间的关系,以及我们在编程过程中如何去设计多线程模型。是不是我们编程时设计的线程越多对应用...

weixin_32571965的博客 856
上一篇: 《操作系统之哲学原理(第2版)》——— 操作系统的发展历史
下一篇: 作业、进程、线程、多线程、多核
活在生活里
博客等级 码龄11年 94粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值