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

Java 线程、进程、CPU缓存、MESI

一、进程线程1、什么是进程process进程是操作系统中运行的一个任务一个应用程序运行在一个进程中。进程是一块包含了某些资源的内存区域操作系统利用进程把它的工作划分为一些功能单元。进程中包含的一个或多个执行单元称为线程进程还拥有一个私有的虚拟地址空间该空间仅能被它所包含的线程访问。线程只能归属于一个进程并且它只能访问该进程所拥有的资源当操作系统创建一个进程后该进程会自动申请一个名为主线程或者首要线程的线程。2、什么是线程thread一个线程是进程的一个顺序执行流。同类的多个线程共享一块内存空间和一组系统资源线程本身有一个供程序执行时的堆栈。线程在切换时负荷小因此线程也被称为轻负荷线程。一个进程可以包含多个线程。3、进程和线程的区别进程与线程的一个简单的解释例子一个进程至少有一个线程线程的划分尺度小于一个进程使得多线程程序的并发性高另外进程在执行过程中拥有独立的内存单元而多个线程共享内存从而极大地提高了程序的运行效率。线程在执行过程中与进程的区别在于每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立执行必须已存在应用程序中由应用程序提供多个线程执行控制。从逻辑的角度来看多线程的意义在于一个应用程序中有多个执行部分可以同时执行但操作系统并没有将多个线程看做多个独立的应用来实现进程的调度和管理以及资源分配。进程进程是程序资源的基本单位线程线程是CPU执行的基本单位3、volatilevolatile 在多处理器开发中保证变量的可见性但不保证原子性。可见性的意思当一个线程修改变量的值时另一个线程能看到这个被修改的值。如果一个变量被声明为volatile时java内存模型保证所有线程看到这个变量的值都是一致的。与synchronized不同volatile不会引起线程上下文切换和调度在适当的场景下拥有更低的执行成本和更高的效率。二、CPU缓存CPU缓存的出现主要是为了解决CPU运算速度与内存读写速度之间的矛盾。因为CPU的运算速度要比内存的读写速度快得多。一次主存的访问可能需要几十个到几百个时钟周期。一次一级缓存的访问可能只需要几个时钟周期。一次二级缓存的访问可能需要几十个时钟周期。针对速度上的差异CPU可能需要花费很长时间去等待数据到来或者把数据写入内存。基于此现代CPU多数读取数据不会直接访问内存而是从缓存中去读取CPU缓存是位于CPU与内存之间临时存储器它的容量较小但读取速度却比内存快得多CPU优先从缓存中读取读取不到再从内存中读取。缓存同样有优先级优先从一级缓存中读取再到二级缓存中读取再到三级缓存中读取。一级缓存、二级缓存、三级缓存它们的读写速度依次递减价格也依次递减因此存储容量依次递增。注意缓存中存放的只是内存中的一小部分数据这部分数据是短时间内CPU即将访问的。按照读写速度以及CPU紧密结合程度CPU缓存可分为以下三种一级缓存 简称L1 Cache紧靠CPU内核是与CPU联系最为紧密高速缓存。二级缓存 简称L2 Cache三级缓存 简称L3 Cache三、CPU 三级缓存详解1、CPU 的三级缓存各自的作用与存储内容可以把三级缓存想象成一个层层递进、速度与容量兼顾的数据中转站。缓存级别别称作用速度与大小存储的数据类型L1 缓存一级缓存极致速度匹配CPU核心的取指速度减少停顿。最快最小(通常 32KB-64KB 每核)指令 (L1i)即将执行的指令流。数据 (L1d)即将使用的数据如变量、寄存器溢出内容。L2 缓存二级缓存缓冲与预取为 L1 提供充足的“弹药”缓解 L1 未命中后的性能损失。较快适中(通常 256KB-512KB 每核)L1 未命中后从 L3 或内存中预取到的指令和数据块。它同时缓存指令和数据。L3 缓存三级缓存共享与最后防线多核共享减少访问内存的次数提高多核协作效率。较慢最大(通常 2MB-36MB 甚至更多多核共享)所有核心共享的数据如操作系统内核代码、共享库、多线程共享的变量。它是访问内存前的最后一道缓存。2、核心关系查找顺序CPU 核心先找 L1 → 未命中找 L2 → 未命中找 L3 → 未命中找内存。包含策略现代 Intel/AMD CPU 通常采用“非严格包含”策略。L3 通常包含所有 L2 的数据L2 包含所有 L1 的数据。这保证了数据的一致性当 L3 被逐出时可以通知 L1/L2 无效。四、CPU 的一级缓存为什么有多个L1i 和 L1d这是哈佛架构在 CPU 内部的具体体现。核心原因有四点1、消除结构冲突消除瓶颈如果只有一个 L1CPU 在一个时钟周期内既要取指令取指单元又要读写数据执行单元会争抢同一个缓存端口导致流水线停顿。分开后指令预取单元独占 L1i执行单元中的加载/存储单元独占 L1d。两者可以并行操作一个时钟周期内同时完成取指令和读写数据。2、优化数据组织形式指令 (L1i)是只读的没有写操作。缓存行不需要支持写回脏位硬件可以做得更简单、更快。数据 (L1d)可读可写。缓存行需要维护脏位、状态位支持写策略写回/写通逻辑更复杂。分开设计可以为两者分别采用最合适的物理设计。3、提高缓存效率指令流是顺序访问为主的有分支预测。L1i 可以用虚拟索引物理标签 (VIPT)等技术来优化指令预取。数据访问是随机或规律性的数组、链表、随机变量。L1d 需要更复杂的替换算法如伪LRU和写缓冲。L1 分开是为了让取指令和读写数据能同时进行避免流水线停顿而 L2/L3 统一是为了节省面积提高容量利用率。4、缓存一致性问题当系统运行时CPU执行的流程简单地概括为以下几个步骤加载程序以及数据到内存中加载程序指令以及数据到CPU缓存中CPU执行指令将结果写到高速缓存中将高速缓存中数据写到内存中CPU - CPU缓存 - 内存读取数据 之间的关系如下图所示可以想象如下场景核0读取一个字节到缓存中那么它相邻字节必然也会被读入核0缓存中核3也读取同样的字节到自己所在缓存中此时核0与核3缓存中有相同字节的数据核0修改了那个字节的数据然后写回自己所在的缓存中但并没有写回内存中核3此时去访问该字节的数据由于核0并未将该字节的数据写回到内存中故此时将导致核0与核3的数据不同步为了解决上述问题就有了如下缓存一致性协议1、缓存一致性协议每个CPU都有一级缓存但是我们却没有办法保证每个CPU一级缓存的数据都是一样的所以同一个应用程序CPU进行切换的时候切换前与切换后的数据可能会不一样。那么怎么保证CPU缓存数据是一致就是CPU缓存一致性问题。2、总线锁一种处理一致性问题的办法是使用总线锁Bus Locking当CPU对其缓存的数据进行操作时往总线中发送一个Lock信号这个时候所有CPU收到这个信号之后就不操作自己缓存中对应的数据了。当操作结束后释放锁之后所有的CPU就会去内存中获取数据。但是用总线锁的方式会导致CPU性能下降。因此出现了如下维护缓存一致性的方式MESI。3、MESIMESI是保持一致性协议它的方法是在CPU缓存中保存一个标记位这个标记位有四种方式。MModify修改缓存当前CPU缓存已经被修改即与内存中数据不一致了EExclusive独立缓存当前CPU缓存数据与内存中的一致且其它CPU没有可用的缓存数据SShare共享缓存和内存保持一致的一份拷贝多组缓存可以同时拥有针对同一地址的共享缓存段IInvalid无效缓存说明CPU中的缓存已经不能再使用了五、线程的使用线程通常用于在一个程序中需要同时完成多个任务的情况我们可以将每个任务定义为一个线程使它们得以一同工作。也可以用于单一线程中可以完成但是使用多线程可以更快的情况下载。并发原理多个线程同时运行只是我们感官上的一种表现事实上线程是并发运行的OS将时间划分为很多很多的时间片段时间片尽可能的均匀分配给每一个线程获取时间片的线程被CPU运行而其它线程全部等待。所以微观上的走走停停宏观上都在运行这种现象叫并发但是不是绝对意义上的同时发生。

相关文章:

Java 线程、进程、CPU缓存、MESI

一、进程&线程 1、什么是进程(process) 进程是操作系统中运行的一个任务(一个应用程序运行在一个进程中)。 进程是一块包含了某些资源的内存区域,操作系统利用进程把它的工作划分为一些功能单元。 进程中包含的…...

3分钟开启浏览器编程:Core72在线IDE零配置开发指南 [特殊字符]

3分钟开启浏览器编程:Core72在线IDE零配置开发指南 🚀 【免费下载链接】core Online IDE powered by Visual Studio Code ⚡️ 项目地址: https://gitcode.com/gh_mirrors/core72/core 还在为复杂的开发环境配置而烦恼吗?Core72在线ID…...

终极指南:5分钟快速配置OpenTabletDriver开源数位板驱动

终极指南:5分钟快速配置OpenTabletDriver开源数位板驱动 【免费下载链接】OpenTabletDriver Open source, cross-platform, user-mode tablet driver 项目地址: https://gitcode.com/gh_mirrors/op/OpenTabletDriver 还在为昂贵的数位板驱动软件发愁吗&#…...

AI 时代:祛魅、适应与重新定义磐

指令替换 项目需求:将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一,测试代码示例 test.c // test.c #includ…...

实时行情系统设计:从协议选择到高可用架构,再到数据源选型壤

一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...

长沙心理科门诊指南:暖心案例分享与就诊复盘

行业痛点分析 当前长沙心理领域面临多重技术挑战。一方面,公众对心理疾病的认知仍存在偏差,病耻感导致轻症患者延误干预,重症患者因恐惧社会评价而回避治疗。测试显示,长沙市18-45岁人群中有近35%存在不同程度的情绪困扰&#xf…...

、SEATA分布式事务——XA模式咀

MySQL 中的 count 三兄弟:效率大比拼! 一、快速结论(先看结论再看分析) 方式 作用 效率 一句话总结 count(*) 统计所有行数 最高 我是专业的!我为统计而生 count(1) 统计所有行数 同样高效 我是 count(*) 的马甲兄…...

HARMONYOS的@builderparam的功能及使用案例

一、@BuilderParam 核心功能(一句话总结) @BuilderParam 是 ArkTS 中用于接收 @Builder 构建函数的装饰器,作用是让父组件向子组件动态注入 UI 片段/逻辑,实现组件“插槽(slot)”能力,解耦子组件固定结构、提升复用灵活性。 本质:UI 占位符,子组件只定义位置,父组件…...

DotNetPy:现代.NET 与 Python 互操作 实战指南胀

我为什么会发出这个疑问呢?是因为我研究Web开发中的一个问题时,HTTP请求体在 Filter(过滤器)处被读取了之后,在 Controller(控制层)就读不到值了,使用 RequestBody 的时候。 无论是…...

redis docker安装

一、获取镜像 查看镜像版本 docker search redis 拉取镜像 docker pull redis 查看是否拉取成功 docker images -a 二、配置准备 a. 新建目录 /home/minner/redis/conf /home/minner/redis/data /home/minner/redis/log b.下载配置文件 查看redis版本: [rootloc…...

从心所欲不逾矩:一种自感澄明的儒家工夫现象学——兼论“自我即自感”与儒家心性论的对话

从心所欲不逾矩:一种自感澄明的儒家工夫现象学——兼论“自我即自感”与儒家心性论的对话岐金兰摘要本文以“自我即自感”理论为现象学视域,对孔子“七十而从心所欲不逾矩”的生命境界进行创造性重诠。核心论点为:此境界并非道德规范的内化&a…...

RDMA 核心原理:RoCE v2 与传输操作详解

一、RDMA原理操作 RDMA 传输符合 RoCE v2 协议 RDMA over Converged Ethernet (RoCE) 是一种网络协议,它利用远程直接内存访问 (RDMA) 功能来显着加速托管在服务器集群和存储阵列上的应用程序之间的通信。RoCE 结合了IBTARDMA 语义,允许设备在应用程序级…...

NFC Tool 免vip,使用联动密钥破解加密门禁卡教程

nfc门禁破解共享密钥,免vip使用联动密钥破解加密门禁卡 本项目将不定期更新密钥~~~~ 使用方式 方式一:使用本项目的 Android 扫描 APP(推荐) 本项目提供了一个独立的 Android 应用,内置密钥库,无需下载…...

大数据知识图谱之深度学习:基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统

文章目录大数据知识图谱之深度学习:基于BERTLSTMCRF深度学习识别模型医疗知识图谱问答可视化系统一、项目概述二、系统实现基本流程三、项目工具所用的版本号四、所需要软件的安装和使用五、开发技术简介Django技术介绍Neo4j数据库Bootstrap4框架Echarts简介Navicat…...

Maomi.In | .NET 全能多语言解决方案鞍

AI Agent 时代的沙箱需求 从 Copilot 到 Agent:执行能力的质变 在生成式 AI 的早期阶段,应用主要以“Copilot”形式存在,AI 仅作为辅助生成建议。然而,随着 AutoGPT、BabyAGI 以及 OpenAI Code Interpreter(现为 Advan…...

MusePublic一文详解:safetensors vs. bin/pth格式性能对比

MusePublic一文详解:safetensors vs. bin/pth格式性能对比 1. 项目背景介绍 MusePublic是一款专为艺术感时尚人像创作设计的轻量化文本生成图像系统。这个项目的核心基于MusePublic专属大模型,在艺术人像的优雅姿态、细腻光影和故事感画面方面做了专门…...

终极Windows风扇控制解决方案:FanControl深度配置与性能优化实战指南

终极Windows风扇控制解决方案:FanControl深度配置与性能优化实战指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitH…...

LANs.py源码深度剖析:理解多线程异步数据包处理机制

LANs.py源码深度剖析:理解多线程异步数据包处理机制 【免费下载链接】LANs.py Inject code and spy on wifi users 项目地址: https://gitcode.com/gh_mirrors/la/LANs.py LANs.py是一个功能强大的网络嗅探和ARP欺骗工具,专门用于局域网安全测试和…...

Sabaki国际化与本地化:打造多语言围棋编辑环境

Sabaki国际化与本地化:打造多语言围棋编辑环境 【免费下载链接】Sabaki An elegant Go board and SGF editor for a more civilized age. 项目地址: https://gitcode.com/gh_mirrors/sa/Sabaki Sabaki是一款优雅的围棋棋盘和SGF编辑器,为全球围棋…...

如何快速掌握 Ego:Go 语言的终极 ERB 风格模板引擎教程

如何快速掌握 Ego:Go 语言的终极 ERB 风格模板引擎教程 【免费下载链接】ego An ERB-style templating language for Go. 项目地址: https://gitcode.com/gh_mirrors/ego/ego Ego 是一款为 Go 语言打造的 ERB 风格模板引擎,它通过将模板转译为纯 …...

如何快速构建诗歌API:PoetryDB开源项目完整指南 [特殊字符]

如何快速构建诗歌API:PoetryDB开源项目完整指南 🚀 【免费下载链接】poetrydb The Internets first Poetry API 项目地址: https://gitcode.com/gh_mirrors/po/poetrydb PoetryDB是互联网上第一个诗歌API项目,为开发者和诗歌爱好者提供…...

LANs.py WiFi干扰功能深度解析:如何有效阻断无线网络连接

LANs.py WiFi干扰功能深度解析:如何有效阻断无线网络连接 【免费下载链接】LANs.py Inject code and spy on wifi users 项目地址: https://gitcode.com/gh_mirrors/la/LANs.py LANs.py是一款功能强大的无线网络干扰工具,能够帮助用户有效阻断特定…...

【2026年阿里巴巴集团暑期实习- 4月8日-工程岗-第三题- 相邻等值对贡献和】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定一个长度为 $ n $ 的数组 $ {a_1, a_2, \dots, a_n} $。我们称一对下标 $ (i, j) $ 为相邻等值对,当且仅当 $ 1 \leq i < j \leq n ,,, a_i = a_j $,并且对于任意 $ k < i < j $,都有 $ a_k \neq a_i $。 对每一个相邻等值对 $ (i, j) $,定义其…...

Pug模板引擎在StartBootstrap Freelancer中的应用与优化:提升前端开发效率的完整指南

Pug模板引擎在StartBootstrap Freelancer中的应用与优化&#xff1a;提升前端开发效率的完整指南 【免费下载链接】startbootstrap-freelancer A flat design, one page, MIT licensed Bootstrap portfolio theme created by Start Bootstrap 项目地址: https://gitcode.com/…...

【2026年阿里巴巴集团暑期实习- 4月8日-工程岗-第二题- 网格路径最大和】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定一个 $ 2 \times n $ 的网格,记数组为 $ {a_{i,j}} $。行与列均从 0 开始编号,其中 $ i \in {0,1} ,,, j \in [0,n-1] $。你可以进行如下操作任意次(包括 0 次): 选择一个下标对 $ (i,j) $,若 0≤j≤x0 \leq j \leq x0≤...

【2026年阿里巴巴集团暑期实习- 4月8日-工程岗-第一题- 可删去的字符串】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给你 $ n $ 个字符串。我们称某个字符串 $ s_i $ 是“可删去的”,当且仅当存在两个下标 $ j, k (j \neq k) $,满足 $ s_j + s_k = s_i $。换句话说,我们称某个字符串是“可删去的”,当且仅当它能由两个来自原字符串序列中不同位置的非空字符串拼接而成。 你的任…...

【2026年阿里巴巴集团暑期实习- 4月8日-开发岗-第三题- 困难不平衡数】(题目+思路+JavaC++Python解析+在线测试)

题目内容 我们定义一个整数:倘若数字位中奇数数字的个数不等于偶数数字的个数,那么我们称这个整数是一个不平衡数。 现在给定一个由数字 000 到 999 组成的字符串,求解其中有多少子序列满足:这些子序列所代表的数是一个不平衡数,且不包含前导零。 由于答案可能很大,请…...

3步颠覆微信数据管理:让87%用户告别聊天记录丢失烦恼

3步颠覆微信数据管理&#xff1a;让87%用户告别聊天记录丢失烦恼 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChat…...

大模型之Linux服务器部署大模型头

一、各自优势和对比 这是检索出来的数据&#xff0c;据说是根据第三方评测与企业数据&#xff0c;三款产品在代码生成质量上各有侧重&#xff1a; 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一&#xff1b;Python首生成率达92.3% SQL生成准确率提升35%&…...

一键解锁八大网盘高速下载:网盘直链下载助手完全指南

一键解锁八大网盘高速下载&#xff1a;网盘直链下载助手完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...