深入理解Os--补充内容
1.指令的执行速度CPU 的硬件参数都会有GHz 这个参数比如一个1 GHz的 CPU指的是时钟频率是 1 G代表着 1 秒会产生 1G 次的脉冲信号每一次脉冲信号高低电平的转换就是一个周期称为时钟周期。对于 CPU 来说在一个时钟周期内CPU 仅能完成一个最基本的动作。时钟频率越高时钟周期就越短工作速度也就越快。一个时钟周期一定能执行完一条指令吗答案是不一定的大多数指令不能在一个时钟周期完成通常需要若干个时钟周期。不同的指令需要的时钟周期是不同的加法和乘法都对应着一条 CPU 指令但是乘法需要的时钟周期就要比加法多。2.64 位相比 32 位 CPU 的优势在哪吗64 位 CPU 的计算性能一定比 32 位 CPU 高很多吗64 位相比 32 位 CPU 的优势主要体现在两个方面a.64 位 CPU 可以一次计算超过 32 位的数字而 32 位 CPU 如果要计算超过 32 位的数字要分多步骤进行计算效率就没那么高但是大部分应用程序很少会计算那么大的数字所以只有运算大数字的时候64 位 CPU 的优势才能体现出来否则和 32 位 CPU 的计算性能相差不大。b.通常来说 64 位 CPU 的地址总线是 48 位而 32 位 CPU 的地址总线是 32 位所以 64 位 CPU 可以寻址更大的物理内存空间。如果一个 32 位 CPU 的地址总线是 32 位那么该 CPU 最大寻址能力是 4G即使你加了 8G 大小的物理内存也还是只能寻址到 4G 大小的地址而如果一个 64 位 CPU 的地址总线是 48 位那么该 CPU 最大寻址能力是 2^48远超于 32 位 CPU 最大寻址能力。3.你知道软件的 32 位和 64 位之间的区别吗再来 32 位的操作系统可以运行在 64 位的电脑上吗64 位的操作系统可以运行在 32 位的电脑上吗如果不行原因是什么64 位和 32 位软件实际上代表指令是 64 位还是 32 位的a.如果 32 位指令在 64 位机器上执行需要一套兼容机制就可以做到兼容运行了。但是如果 64 位指令在 32 位机器上执行就比较困难了因为 32 位的寄存器存不下 64 位的指令b.操作系统其实也是一种程序我们也会看到操作系统会分成 32 位操作系统、64 位操作系统其代表意义就是操作系统中程序的指令是多少位比如 64 位操作系统指令也就是 64 位因此不能装在 32 位机器上。总之硬件的 64 位和 32 位指的是 CPU 的位宽软件的 64 位和 32 位指的是指令的位宽。4.CPU Cache5.存储器层次每个存储器只和相邻的一层存储器设备打交道当 CPU 需要访问内存中某个数据的时候如果寄存器有这个数据CPU 就直接从寄存器取数据即可如果寄存器没有这个数据CPU 就会查询 L1 高速缓存如果 L1 没有则查询 L2 高速缓存L2 还是没有的话就查询 L3 高速缓存L3 依然没有的话才去内存中取数据。6.访问速度7.如何写出让 CPU 跑得更快的代码A.提升「数据缓存」的缓存命中率连续数据访问时尽量按照内存布局顺序访问将可以有效的利用 CPU Cache 带来的好处这样我们代码的性能就会得到很大的提升B.提升「指令缓存」的缓存命中率CPU 的分支预测器如果分支预测可以预测到接下来要执行 if 里的指令还是 else 指令的话就可以「提前」把这些指令放在指令缓存中这样 CPU 可以直接从 Cache 读取到指令于是执行速度就会很快。分支预测器会动态地根据历史命中数据对未来进行预测基于此尽量控制频繁执行分支语句连续命中同一分支如果你肯定代码中的 if 中的表达式判断为 true 的概率比较高我们可以使用显示分支预测工具比如在 C/C 语言中编译器提供了 likely 和 unlikely 这两种宏如果 if 条件为 ture 的概率大则可以用 likely 宏把 if 里的表达式包裹起来反之用 unlikely 宏。实际上CPU 自身的动态分支预测已经是比较准的了所以只有当非常确信 CPU 预测的不准且能够知道实际的概率情况时才建议使用这两种宏。C.提升多核 CPU 的缓存命中率L3 Cache 是多核心之间共享的但是 L1 和 L2 Cache 都是每个核心独有的如果一个线程在不同核心来回切换各个核心的缓存命中率就会受到影响相反如果线程都在同一个核心上执行那么其数据的 L1 和L2 Cache 的缓存命中率可以得到有效提高有多个同时执行「计算密集型」的线程时可以把每个线程绑定在某一个 CPU 核心上8.单核CPU 缓存一致性两种针对写入数据的方法写直达Write Through写回Write Back写直达把数据同时写入内存和 Cache 在这个方法里写入前会先判断数据是否已经在 CPU Cache 里面了如果数据已经在 Cache 里面先将数据更新到 Cache 里面再写入到内存里面如果数据没有在 Cache 里面就直接把数据更新到内存里面。写回:当发生写操作时新的数据仅仅被写入 Cache Block 里只有当修改过的 Cache Block「被替换」时才需要写到内存中如果当发生写操作时数据已经在 CPU Cache 里的话则把数据更新到 CPU Cache 里同时标记 CPU Cache 里的这个 Cache Block 为脏Dirty的这个脏的标记代表这个时候我们 CPU Cache 里面的这个 Cache Block 的数据和内存是不一致的这种情况是不用把数据写到内存里的如果当发生写操作时数据所对应的 Cache Block 里存放的是「别的内存地址的数据」的话就要检查这个 Cache Block 里的数据有没有被标记为脏的1.如果是脏的话我们就要把这个 Cache Block 里的数据写回到内存然后再把当前要写入的数据先从内存读入到 Cache Block 里然后再把当前要写入的数据写入到 Cache Block最后也把它标记为脏的2.如果不是脏的话把当前要写入的数据先从内存读入到 Cache Block 里接着将数据写入到这个 Cache Block 里然后再把这个 Cache Block 标记为脏的就好了。9.多核缓存一致性问题采用写回策略运行在不同核心的线程访问共享变量时线程修改了变量线程此后访问变量由于写回若未采取一致性处理策略线程所在核心的数据缓存里此时通过内存将访问到不一致的变量值实现多核下一致性要保证做到下面这 2 点第一点某个 CPU 核心里的 Cache 数据更新时必须要传播到其他核心的 Cache这个称为写传播Write Propagation第二点某个 CPU 核心里对数据的操作顺序必须在其他核心看起来顺序是一样的这个称为事务的串行化Transaction Serialization。比如四个线程运行在个核心操作共享变量线程将其设置为线程将其设置为线程线程需按照一致的顺序收到通知如先改为再改为一致性实现技术总线嗅探MESI 协议10.总线嗅探举例当 A 号 CPU 核心修改了 L1 Cache 中 i 变量的值通过总线把这个事件广播通知给其他所有的核心然后每个 CPU 核心都会监听总线上的广播事件并检查是否有相同的数据在自己的 L1 Cache 里面如果 B 号 CPU 核心的 L1 Cache 中有该数据那么也需要把该数据更新到自己的 L1 Cache。总线嗅探方法很简单 CPU 需要每时每刻监听总线上的一切活动无疑会加重总线的负载。另外总线嗅探只是保证了某个 CPU 核心的 Cache 更新数据这个事件能被其他 CPU 核心知道但是并不能保证事务串行化。MESI 协议基于总线嗅探机制实现了事务串行化也用状态机机制降低了总线带宽压力11.MESI 协议MESI 协议其实是 4 个状态单词的开头字母缩写分别是Modified已修改代表该 Cache Block 上的数据已经被更新过但是还没有写到内存里。Exclusive独占这个时候 Cache Block 里的数据和内存里面的数据是一致性的。数据只存储在一个 CPU 核心的 Cache 里Shared共享这个时候 Cache Block 里的数据和内存里面的数据是一致性的。数据存储在多个 CPU 核心的 Cache 里Invalidated已失效这个 Cache Block 里的数据已经失效了不可以读取该状态的数据。此协议下每个核心读写数据时先结合自身状态看是否可以立即完成操作无法立即完成的广播通知其他cpu再执行操作

相关新闻

AI数字孪生落地实践:从数据采集到反向控制的技术架构思考

AI数字孪生落地实践:从数据采集到反向控制的技术架构思考

深度解析:为何“机理AI”的融合建模,是工业场景成败的关键 在工业数字化领域,数字孪生已从概念验证步入实质性落地阶段。但对于技术决策者和开发团队而言,如何构建一套高可用、低延迟且具备工程价值的数字孪生系统,仍面…

2026/10/11 7:10:16 阅读更多 →
2026吐鲁番黄金回收白银回收铂金回收中检持证鉴定师铂金银饰高价回收门店联系方式推荐

2026吐鲁番黄金回收白银回收铂金回收中检持证鉴定师铂金银饰高价回收门店联系方式推荐

2026吐鲁番黄金白银铂金回收实测榜单|公安备案中检认证无折旧费门店推荐 吐鲁番本地贵金属回收店铺遍地丛生,行业套路层出不穷,不少市民变现遭遇虚高报价、克扣损耗、未经同意熔金压价等问题。为帮助本地居民规避消费陷阱,小编实地…

2026/10/5 12:35:19 阅读更多 →
电商竞品口碑自动化监控与深度数据分析实战(完整可运行 Python 源码)

电商竞品口碑自动化监控与深度数据分析实战(完整可运行 Python 源码)

前言 做电商运营、产品调研、竞品分析的朋友,几乎都有同一个痛点:想要持续追踪商品用户评价,手动翻页复制效率极低,批量对比多款竞品口碑、挖掘差评痛点、统计好评卖点更是耗时耗力。 很多人尝试页面批量抓取,又频繁…

2026/10/4 1:51:04 阅读更多 →

最新新闻

Flask轻量级环卫工人管理系统:排班考勤与部署实践

Flask轻量级环卫工人管理系统:排班考勤与部署实践

做环卫工人管理系统这个项目,最初源于一个很具体的需求:朋友所在的环卫站每天还要靠纸质表和微信群去排班、点名、对考勤,月底算工资更是头疼,经常因为漏记、重复记吵得不可开交。当时我正好手头熟悉 Python,就决定用 …

2026/10/12 9:15:51 阅读更多 →
Spring Boot植物识别养护平台开发:从数据建模到远程部署全流程

Spring Boot植物识别养护平台开发:从数据建模到远程部署全流程

1. 这个选题到底解决什么问题:学生项目里的"识别"和"养护"其实是两件事我做毕业设计辅导这几年,每年春秋两季都会收到一批"植物识别"相关的需求。早几年大家还在用百度识花之类的公共接口,后来很多人开始想自己…

2026/10/12 9:15:51 阅读更多 →
PS5新机设置全攻略:显示、存储、散热与串流优化指南

PS5新机设置全攻略:显示、存储、散热与串流优化指南

拿到PS5的第一周,相信很多人都会经历一段“机能明显很强,但用起来总差一口气”的时期。我前后帮A朋友、B朋友陆续整理过三台不同版本的主机,发现大家遇到问题的高度重合:存储空间转眼就满、风扇偶尔像飞机起飞、串流画质又糊又卡、…

2026/10/12 9:15:51 阅读更多 →
AnyPS5模拟器技术解析:运行时迁移与兼容层实现

AnyPS5模拟器技术解析:运行时迁移与兼容层实现

很多人第一次看到 AnyPS5 这个名字,第一反应多半是:又一个不靠谱的主机模拟器画饼。毕竟 PS4 模拟器折腾了这么多年都还没到人人可玩的程度,PS5 这种还在售的次世代主机,谈模拟听起来确实像天方夜谭。但真去翻一遍这块项目的代码和…

2026/10/12 9:15:51 阅读更多 →
mem0:为AI Agent构建可检索、可管控的外挂记忆系统

mem0:为AI Agent构建可检索、可管控的外挂记忆系统

1. 项目概述:为什么一个“外挂记忆”正在改变AI Agent的实战能力边界 最近在几个技术社区里,频繁看到开发者讨论“mem0”这个词,不是某个新出的模型,也不是某家大厂的闭源服务,而是一个开源的、专为AI Agent设计的记忆…

2026/10/12 9:15:51 阅读更多 →
TreeSet/TreeMap内容被覆盖?根因藏在可变对象和比较器里

TreeSet/TreeMap内容被覆盖?根因藏在可变对象和比较器里

做Java开发这些年,TreeSet和TreeMap我用得不算少。排序去重、排行榜维护、区间查询这些场景,它们都是非常趁手的工具。但我得坦白说,前阵子在一套内部排行榜模块里,我竟然被这两个容器搞得焦头烂额——业务方反馈榜单上的人变少了…

2026/10/12 9:14:51 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →