CPU瞒着内存竟干出这种事
还记得我吗我是阿QCPU一号车间的那个阿Q。今天忙里偷闲来到厂里地址翻译部门转转负责这项工作的小黑正忙得满头大汗。看到我的到来小黑指着旁边的座椅示意让我坐下。坐了好一会儿小黑才从工位上忙完转过身来“实在不好意思阿Q今天活太多没来得及招待你”“刚忙什么呢看你满头大汗的”我问道。“嗨别提了老是发现内存页面错误不停地要通知操作系统那边去处理真是怀念以前啊没有这么多破事儿要管”小黑叹了口气。我一听来了兴趣“小黑你给我说说你们的工作呗地址翻译是怎么一回事儿为什么怀念以前呢”小黑调整了下坐姿咕噜咕噜喝了几口水说道“这话说来可就话长了”接下来小黑开始给我讲起了历史故事······8086原来咱们的祖先叫8086小黑还给我看了他的照片那是一个纯真质朴的年代虽然工作性能不高不过那个年代的程序都很简单我们的祖先一问世就成为了明星称得上那个时代的顶流了。看到照片中的那些金属针脚了吗那是我们CPU和外界打交道的触角每一根都有不同的作用。通过这些触角CPU就可以跟内存打交道获取指令和数据辛勤的干活啦。那个年代条件比较差能凑合的就凑合能共用的就共用。这不你看祖先CPU的地址总线针脚和数据总线针脚就共用了。祖先是一个16位的CPU数据(Data)总线就有16位一次性可以传输16个比特位。和地址(Address)总线凑合着一起共用于是就取名AD0-AD15。不过祖先的地址总线却不止16个还多出了A16-A19整整4个呢这样有20个地址线可以寻址1MB的内存了但是祖先的寄存器都是16位的啊只能存放16位的地址。不过他们很聪明发明了一个叫分段式存储管理的方法把内存划分为最大64KB的小块为什么是64KB呢因为16位地址最多只能寻址这么大了。然后又加了几个叫做段寄存器的东西指向这些块的开头这样通过段地址段内偏移地址的方式就能访问更多的内存了。32位时代后来啊祖先的那点计算能力越来越捉襟见肘实在是跟不上时代了。家族中的年轻一代开始挑大梁80286和80386CPU相继问世尤其是80386成为了划时代的存在。到了80386时代我们与外界通信的引脚就更多了并且变成了32位的CPU那个时候生活条件就变好了地址线和数据线再也不用共享引脚了。后来人类变得越来越贪心想要一边听音乐一边还要上网同时还要编辑文档这就同时需要运行多个程序。这个时候有人发现了商机开发了一个叫操作系统的东西原来那些程序不再直接和我们CPU打交道了而是和操作系统打交道操作系统再和我们打交道中间商赚差价说的就是他们操作系统这玩意儿很聪明啊通过时间片划分让我们CPU来轮流执行多个程序一会儿让我们执行音乐播放一会儿让我们执行浏览器程序一会儿又让我们执行文档编辑程序。我们是无所谓啊给什么代码不是代码啊我们不挑埋头苦干就是了。人类的反应速度跟我们就差得远了他们还以为这些程序真的是同时执行的呢。虚拟内存不过随之而来出现了一个大问题这么多程序都要运行大家挤在一个内存里经常发生摩擦冲突不断。先祖们为了此事殚精竭虑终于想出了一个好办法一直沿用至今。他们提出了一个虚拟地址的东西所有程序使用的地址都是一个虚拟的地址在真正和内存打交道的时候咱们CPU内部工作人员再给翻译成真实的内存地址关于这事儿内存那家伙一直被我们蒙在鼓里。这样一来每个程序都可以用的是0x00000000到0xffffffff总共4GB这么大范围的地址空间当然不会真的给他们那么多空间内存那家伙总共才4GB呢而是要按需申请分配。分配的单元是按照页来进行的32位的CPU一个页是4KB。这些分配管理的累活就让操作系统来干了中间商不能光拿好处不干正事至于我们CPU做好地址翻译的工作就好了。为此在我们寄存器内部专门添置了一个新的寄存器CR3用来指向一个地址翻译查询字典字典划分了两级目录。我们把一个32位的地址划分了3部分前面两部分分别指向两级目录中的条目用来定位这个地址在物理内存的哪个页面最后一部分就是指向物理内存页面的偏移这样就完成了地址的翻译工作。每个进程有不同的地址空间切换进程的时候把CR3的内容换一下就使用新进程的翻译字典特别的方便。我们把这种内存管理方式叫做分页式内存管理。真佩服先祖们的智慧这样巧妙的把各个程序隔离开来后来我们把这种工作模式叫做保护模式把之前那种直接使用真实内存地址的工作模式叫做实地址模式。分页交换人类变得越来越贪婪程序变得越来越多对内存的需求也越来越大。随着这些程序都不断申请内存页面内存空间很快就要耗尽了。我们看在眼里急在心里后来找操作系统协商看看这问题该怎么办。操作系统那家伙也不赖想出了一个好办法。内存的大小有限但是硬盘给力啊硬盘空间大的多去硬盘上划一块区域来把内存里长时间没有用到的页面给换到这块区域里去然后做个标记。如果后面谁要访问那个页面咱们CPU就检查如果有这个标记就发送一个页错误的中断信号告诉操作系统去把这个页面换回来。通过我们之间的配合解决了内存紧张的危机。后来我们把这个技术叫做内存分页交换。现在时间过得很快到了我们这一辈内存变得更大了16GB都是小case32GB也很常见。除了内存我们CPU本身也更先进了别的不说你光看看咱们现在的引脚数那比先祖们那几辈就不可同日而语。我们不仅从32位变成了64位还从单核变成了多核像我所在的CPU就有8个车间8核并行执行比起先祖那个年代简直有云泥之别。彩蛋和小黑闲谈间我们车间的老K突然出现在了门口。“阿Q原来你在这里让我好找赶快回去吧隔壁二号车间的虎子说我们改了他们的数据上门来闹事了······”预知后事如何请关注后续精彩······好了这一期的故事就讲到这里了如果你想查看更多未发布过的新鲜又有趣的技术小故事可以扫描下方二维码购买我最新出版的《趣话计算机底层技术》图书。书中用一个个的小故事系统性的讲解了计算机底层技术的基本原理以及如何运用他们解决日常工作中的各种实际问题。往期热门回顾

相关新闻

Claude Code 入门:智能体循环

Claude Code 入门:智能体循环

Anthropic把agentic loops从模糊概念变成四种可复制的模式,附带SKILL.md和命令示例,Claude Code用户读完就能设计更自主的编码流程。 Claude Code 团队将智能体循环定义为 agent 重复工作直到满足停止条件的过程,并划分出四种主要类型&#…

2026/7/2 5:33:52阅读更多 →
Linux容器化部署安全实践:从宿主机加固到应用防护的纵深防御

Linux容器化部署安全实践:从宿主机加固到应用防护的纵深防御

1. 项目概述:为什么我们需要将安全与容器化结合?最近几年,无论是个人开发者还是企业运维,都面临一个越来越明显的趋势:应用部署的形态正在从传统的物理机、虚拟机,快速向容器化迁移。Docker、Kubernetes这些…

2026/7/2 5:33:52阅读更多 →
计算机毕业设计之基于大数据技术的直播数据实时分析系统的设计和实现

计算机毕业设计之基于大数据技术的直播数据实时分析系统的设计和实现

摘 要本研究设计并实现了一个基于大数据技术的直播数据实时分析系统,旨在解决直播行业数据量大、实时性要求高、分析维度复杂等问题。系统通过实时采集直播平台的数据,利用大数据处理技术进行高效的数据处理和分析,并通过可视化面板展示播放量…

2026/7/2 5:33:52阅读更多 →
丰台区配助听器哪家好?选声望听力,专业一站式听力服务更省心

丰台区配助听器哪家好?选声望听力,专业一站式听力服务更省心

丰台区想配助听器?这份实打实的选配指南,建议先看看住在丰台的叔叔阿姨们,如果发现耳朵不好使了,跟人说话老打岔,看电视声音越开越大,其实这种情况很常见。关键是怎么解决。很多人第一反应是“买个助听器”…

2026/7/2 12:10:17阅读更多 →
半夜两点告警群炸了,BE节点CPU爆了,我是怎么5分钟把Doris救回来的?

半夜两点告警群炸了,BE节点CPU爆了,我是怎么5分钟把Doris救回来的?

我踩过的坑,你可别再踩一遍搞Doris运维的兄弟都知道,这玩意儿好用是好用,但一出问题就头大。最常见的一个场景:集群里就一个BE节点CPU飙到100%,其他节点啥事没有,摆明了是数据倾斜。然后你就得翻审计日志、…

2026/7/2 12:10:17阅读更多 →
零基础看懂CRM:全方位拆解客户关系管理系统

零基础看懂CRM:全方位拆解客户关系管理系统

你是否遇到过这些职场头疼场景:销售离职带走半壁核心客户,新人接手连对接人电话都找不到;10万市场推广费砸下去,只知道来了200条线索,最终成单多少、投入产出比多少全算不清;客户打电话投诉上次买的设备出故…

2026/7/2 12:10:17阅读更多 →
定制语音方案哪些合作坑需要避开:创砷电子基于行业经验梳理的专业避坑指南

定制语音方案哪些合作坑需要避开:创砷电子基于行业经验梳理的专业避坑指南

随着物联网产业的发展,智能家居、工业控制、汽车电子等多个领域对个性化语音输出与交互的需求持续增长,定制语音方案已经成为众多产品差异化竞争的重要选择。但由于语音方案定制涉及芯片设计、软件开发、生产调试等多个环节,行业内供应商服务…

2026/7/2 12:10:17阅读更多 →
大模型技术选路指南:收藏这份高性价比就业攻略,小白也能轻松入行!

大模型技术选路指南:收藏这份高性价比就业攻略,小白也能轻松入行!

本文从大模型技术演进的角度,详细分析了LLM、多模态、AIGC三大方向的技术关系与市场趋势。文章指出,与其纠结于单一技术路线,不如关注大模型应用与落地的具体岗位需求。通过分析大模型训练与基座研发、大模型应用与落地、多模态模型研发、AI基…

2026/7/2 12:10:17阅读更多 →
终极免费解锁WeMod Pro会员:Wand-Enhancer本地配置优化完整指南

终极免费解锁WeMod Pro会员:Wand-Enhancer本地配置优化完整指南

终极免费解锁WeMod Pro会员:Wand-Enhancer本地配置优化完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否厌倦了每次打开WeMod游…

2026/7/2 12:05:17阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/2 12:10:34阅读更多 →
塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 想在《塞尔达传说:旷野之息…

2026/7/2 0:03:01阅读更多 →
告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

在本地开发环境使用云厂商 CLI 时,传统的 AccessKey(AK)方式需要手动创建、下载和保管密钥,不仅繁琐,还存在泄漏风险。其实,主流云平台都已提供基于 OAuth 2.0 的免密认证方案,让开发者可以通过浏览器登录一次性完成授权,CLI 自动管理临时凭证的刷新,兼顾了便利与安全…

2026/7/2 0:03:01阅读更多 →
基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

1. 项目背景与核心价值在嵌入式系统开发领域,高精度定位与导航一直是极具挑战性的技术方向。传统方案往往面临成本、精度和实时性难以兼顾的困境。这个项目通过13DOF(13自由度)传感器组合与PIC32MZ2048EFH100高性能MCU的协同工作,…

2026/7/2 0:03:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/2 0:33:58阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/2 1:32:11阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/2 1:50:13阅读更多 →