一个cpu里面有海量的运算单元,每个运算单元非常小,运算单元越多cpu算的越快
运算单元不能无限小,所以目前的cpu的频率已很难提升,一般是0.1GHz
一个核心算力到达瓶颈,就多搞几个核心,就有多核
超线程技术让一个核心当两个使用,即8个核心相当于有16个核心
2022年后又出现大小核心,大核心一个顶两,小核心一个顶一个
2025年,intel将超线程技术废了
对于我们只关心逻辑核心数和频率
模电数电
即如何构造一个基本电子元件,即cpu
指令(instruction)
cpu执行任务的基本单位
计算机导论中,,提到,编程语言分为三类,1, 机器语言(001二进制的,也就是指令),2, 汇编语言,3,高级语言
cpu在被设计生产的时候,设计者设计好cpu上要能支持哪些指令了,提供手册告诉使用cpu的人,cpu支持哪些指令,
将一些特定的001序列变成特定的英文单词(之后),就是汇编语言
我们写的C语言/C++就是高级语言,被编译器转成汇编语言,在转成机器语言(指令)
java转成.class字节码,通过jvm把字节码转成机器语言
在设计cpu的厂商的指令有好几套
其中x86/x86_64就是一套规则,intel和amd搞的cpu都是这一套规则,即指令相同
ARM是另一套规则,苹果,高通,联发科就是搞这一套
还有RISC V国产芯片,开源的
寄存器,同样是cpu内部存储数据的硬件设施,其空间很小,主要进行临时数据的计算和保存
一般就是几十个寄存器,每个寄存器就是8个字节左右(64位cpu),总的空间是上百个字节,不到1kb
cpu的基本工作流程
指令保存在内存
c->exe(硬盘,文件)-》双击exe(操作系统就会把exe加载到内存中)
地址不需要保存,而是通过硬件的电路结构计算出来的
c语言中使用专门的变量保存地址,------》指针
java中保存地址变量------》引用(低配指针)
cpu执行指令的步骤
-
取指令,从内存把指令,从内存读到cpu的寄存器中
地址为0的内容00001110 -
解析指令,查询指令表,理解指令含义,区分指令的操作码和操作数,八位指令,前四位操作码,后四位操作数
二进制十进制计算,用计算器从地址为14的内存单元中,读取数据放到寄存器A中
-
执行指令
-
顺序的执行第二条指令,默认顺序依次执行(也有特殊情况,比如跳转语句(条件和循环),函数调用语句(调用函数),返回语句)
-
执行第二条执行
读取指令,读取内存地址为1的内容,00011111
解析指令,0001 1111(操作码与操作数)
从1111这个内存单元读取数据到寄存器B->1111->15
执行指令,继续顺序得取下一个指令执行 -
执行第三条指令
1000 01 00,此处要把A寄存器的数据和B的加和,结果放到A寄存器中
....在执行3+14这个过程用到12步骤,可以理解一步小号一个hz,电脑有3.57Ghz,也就是三十五亿赫兹
而且每一条执行每一步并不是一条一条接着执行的,是像流水线一般
以上是程序运行的基本盘,需要理解
操作系统
管理好各种硬件设备
给软件提供稳定的运行环境
操作系统重要概念,进程
进程(process),也叫任务(task),就是计算机运行起来的应用程序
进程和可执行文件
以exe结尾的是可执行文件,是在硬盘上静态的内容,当双击该文件,就加载到内存,创建出进程,执行内部逻辑,所以进程的运行,需要消耗一定的硬件资源
(一个可执行文件可能会对应多个进程,只不过有些程序在逻辑中限制多开)
进程也是操作系统中的资源分配的基本单位
进程的管理(操作系统管理进程)
- 描述(操作系统主要是C语言写的)通过一个结构体变量,描述出一个进程的各种属性,统称为PCB(进程控制块)
- 使用一定的数据结构,将N个PCB串起来,一般使用链表
PCB的核心属性(非常大的一个结构体)
- PID进程标识符(不懂)(ai说是身份证)
是整数,操作系统自动分配的,确保同一时刻,不会存在两个进程的PID重复(仅仅针对当前时刻) - 内存指针、
进程的运行需要内存,内存的空间里有点部分是指令,有的部分是数据, - 文件描述符表
文件都保存在硬盘内存,让各种进程来进行打开读写关闭
一个进程想要读写文件,先打开,打开的时候就会在PCB中建构一个文件相关的结构体,放到PCB的文件描述符表中
所以文件操作符表,也可以当成数组,里面放的是结构体 ,每个结构体都表示具体的文件信息(就可以通过文件信息,找到文件内容在硬盘的哪个位置)
进程调度
进程有上百个但是CPU核心只有16个,如何利用有限的核心让多个进程"同时执行"
CPU通过并行(两个CPU核心分别执行不同进程的指令)和并发(一个核心通过分时复用实现,宏观来说就是同时的)两个方式解决
这是操作系统负责的调度,对于我们统称为并发
- 进程状态,就绪和阻塞
就绪就是"随叫随到"
阻塞就是无法参与CPU的调度执行,比如scanner,他必须等你输入什么才继续运行下一步
- 优先级
各个进程的优先级不同
比如游戏进程,需要实时操作,需要更多的CPU资源
比如QQ进程,只用来发信息,可以少CPU资源
比如特殊的,智能驾车中的刹车,优先级一定是最高的
- 进程的上下文
一个进程调度到CPU上执行了,离开了CPU,过段时间还会回到CPU,就是会存档信息
上下文具体指的是寄存器的值
进程在CPU上执行的时候,寄存器的值发生改变,当进程离开CPU时,寄存器里的值就拷贝保存到内存(PCB的结构体)中,就是存档
之后进程回到CPU,就不会重头开始,将PCB保存的寄存器的值重写到CPU的寄存器中即可
就是读档
- 进程的记账信息
统计机制,统计每个进程在CPU运行多久,通过记账系统识别到,有些进程会因为优先级低而分配的CPU资源少,而灵活分配多一点
由ai补充
你分享的内容非常棒,系统性地梳理了从CPU硬件到操作系统进程管理的核心知识。我来帮你整理、补充和串联一下,形成一个更清晰完整的知识框架。
🧩 知识体系梳理
1. CPU 的进化之路:从快到多,从多到精
你总结的 CPU 发展路径非常准确:
- 主频提升(垂直扩展) :通过缩小晶体管尺寸,提高单个核心的运算速度(频率)。但受物理极限(量子隧穿效应、散热等)制约,主频在约 4-5 GHz 后难以大幅提升。
- 核心增加(水平扩展) :主频到顶,就增加核心数量,实现并行计算。这是过去十几年的主流。
- 超线程技术 :让一个物理核心"模拟"出两个逻辑核心,提高硬件利用率(让闲置的运算单元也工作起来)。但Intel在2025年放弃,原因可能是能效比不佳、调度复杂,或为新的架构(如大小核)让路。
- 大小核混合架构 :这是当前主流方向。
- 大核:性能强,但功耗高。处理复杂、对延迟敏感的任务(如游戏、视频编码)。
- 小核:性能一般,但能效比极高。处理后台、轻量级任务(如听歌、下载)。
- 目标:在性能和续航间取得最佳平衡。
核心结论 :对于普通用户,逻辑核心数 和频率 确实是衡量CPU性能最直观的指标,但架构 (决定同频性能)和缓存也至关重要。
2. 指令集:CPU的"母语"与"方言"
这部分是理解软件如何驱动硬件的关键。
- 指令 :CPU能听懂并执行的最基本命令,就是一串特定的二进制序列 (如
00001110)。 - 指令集架构 :CPU设计时定下的一套"词汇表"和"语法规则"。
- x86/x86-64:复杂指令集。统治PC和服务器市场(Intel, AMD)。
- ARM:精简指令集。统治手机、平板和物联网市场(苹果、高通)。因其高能效,现已进军PC和服务器。
- RISC-V:开源的精简指令集。新兴力量,国产芯片的重要方向。
- 语言的翻译过程:
graph LR
A[高级语言 C/Java/Python] --> B[编译器/解释器]
B --> C[汇编语言/字节码]
C --> D[机器指令 0101...]
D --> E[CPU执行]
- 寄存器 :CPU内部极快 但容量极小的临时存储单元。所有计算都发生在寄存器之间或寄存器与内存之间。
3. CPU执行程序的微观视角
你模拟的"读取-解析-执行"循环(取指 -> 译码 -> 执行)是CPU工作的核心。补充几点:
- PC寄存器 :程序计数器,永远存放下一条要执行的指令的内存地址。这就是"顺序执行"的秘密。
- 跳转指令 :
if,for, 函数调用时,执行的指令地址不再是PC+1。CPU会根据跳转指令的计算结果,直接修改PC寄存器的值,从而"跳"到新的地址继续执行。 - 流水线技术:就像工厂组装线。你把一条指令的执行拆成多个阶段(取指、译码、执行、访存、写回),让多条指令的不同阶段重叠进行。理想情况下,每个时钟周期都能完成一条指令,极大提升吞吐量。
- 性能直观感受 :你计算的
3+14用了约12个步骤。现代CPU频率约3.5GHz,意味着每秒可进行约350亿次这样的基本操作。这就是计算机速度的根源。
4. 操作系统与进程:资源的管家与租客
操作系统是硬件和软件之间的"中间商",核心职责是管理 (硬件资源)和服务(上层应用)。
- 进程 :程序的一次动态执行过程 。是关键抽象。
- 程序(exe文件):躺在硬盘里的"菜谱"(静态)。
- 进程:厨师(CPU)按照菜谱做饭的整个过程(动态),会占用厨房(内存、CPU等资源)。
- PCB :进程控制块。操作系统的"户口本",用C语言结构体描述进程的一切。
- PID:进程身份证号。唯一标识。
- 内存指针:指向该进程在内存中的"地盘"(代码、数据在哪)。
- 文件描述符表 :进程打开了哪些文件的"台账"。文件操作(
open,read,write)都通过这个表里的"索引"进行。 - 进程调度相关属性 (核心中的核心):
- 状态:就绪(等CPU)、运行(占CPU)、阻塞(等IO,如输入、读盘)。
- 优先级:决定谁更容易被CPU"临幸"。
- 上下文 :进程被换下CPU时的"存档"(所有寄存器值)。换回来时"读档",就能无缝继续。这是实现并发(宏观同时,微观交替)的魔法。
- 记账信息:统计各进程已用了多少CPU时间,用于公平调度和防止"饿死"。
🔗 知识点串联:从按键到显示
现在,我们可以把你讲的所有知识串联起来,看一个完整的例子:
你在记事本里敲了字母'A'并保存。
-
硬件层 :键盘产生中断信号 -> 主板 -> CPU。
-
操作系统层:
- CPU执行中断处理程序(操作系统代码)。
- 操作系统识别是"记事本"进程需要响应,并找到其PCB。
-
进程调度:如果记事本进程处于"阻塞"(等输入),操作系统将其状态改为"就绪"。
-
CPU执行:
- 根据PCB中的内存指针,CPU找到记事本进程的代码和数据。
- CPU开始从PC寄存器指向的地址取指、译码、执行。
- 执行到处理输入的代码,从特定寄存器/端口读到'A'的键值。
-
应用逻辑:进程的指令(由C++等编译而来)将'A'的字符码存入自己的数据区(内存),并调用操作系统的"显示"和"保存文件"服务。
-
系统服务:
- 显示 :操作系统指挥显卡,将字符变为图像信号,输出到屏幕。
- 保存 :操作系统通过PCB中的文件描述符表,找到"test.txt"对应的硬盘位置,将数据写入。
-
并发 :在你打字时,杀毒软件、音乐播放器等其他进程 也在就绪队列中,由操作系统根据它们的优先级、状态、记账信息 等进行调度,在CPU上并发执行。
📊 核心概念关系图
graph TD
subgraph "硬件层"
CPU[CPU核心/寄存器] --> MEM[内存]
MEM --> DISK[硬盘/SSD]
IN[输入设备] --> CPU
CPU --> OUT[输出设备]
end
subgraph "操作系统层"
OS[操作系统内核]
OS --> Scheduler[进程调度器]
OS --> MM[内存管理器]
OS --> FS[文件系统]
Scheduler --> PCB1[PCB 进程A]
Scheduler --> PCB2[PCB 进程B]
Scheduler --> PCB3[PCB 进程C]
PCB1 --> |内存指针| MEM
PCB2 --> |文件描述符| FS
PCB3 --> |上下文/状态| Scheduler
end
subgraph "软件层"
APP1[应用程序A 进程]
APP2[应用程序B 进程]
APP1 --> OS
APP2 --> OS
end
APP1 -.-> |对应| PCB1
APP2 -.-> |对应| PCB2
总结 :计算机是一个高度协同的精巧系统。CPU 是忠实的执行者,用指令 说话。操作系统 是资源的大管家,用 PCB 管理每个租客(进程 )。而 进程,就是活起来的程序,在操作系统的调度下,使用CPU、内存等硬件资源,完成我们的任务。
你的笔记已经抓住了精髓,如果能用这样的框架把零散的知识点组织起来,理解会非常深刻和牢固。很棒!
重点
好的,我帮你挑出最核心、最关键、必须掌握的内容。这些是理解计算机如何工作的"骨架"。
🎯 核心要点提炼
1. CPU工作的核心:执行指令
- 指令 是CPU能理解并执行的最基本命令,就是二进制序列 (如
00001110)。 - CPU工作就是不断循环:取指令 → 解码 → 执行。
- 指令集是CPU的"母语",不同CPU家族(x86、ARM、RISC-V)说不同的"方言"。
2. 程序的运行本质:从静态文件到动态进程
- 可执行文件 (如
.exe):躺在硬盘里的"菜谱"(静态)。 - 进程 :菜谱被加载到内存,CPU按步骤执行的过程(动态)。
- 一个程序可以对应多个进程(如开多个浏览器窗口)。
3. 操作系统的核心管理对象:进程
- 操作系统用PCB(进程控制块,一个结构体)记录每个进程的所有信息。
- PCB的关键属性 :
- PID:进程的唯一身份证
- 内存指针:进程的数据和代码在内存中的位置
- 文件描述符表:进程打开了哪些文件
- 状态:就绪、运行、阻塞(决定是否能被CPU执行)
- 上下文:进程被换下CPU时的"存档"(寄存器值),是实现并发的关键
4. 如何用少量CPU核心运行大量程序:并发
- 并行 :多个CPU核心同时执行不同进程。
- 并发 :单个CPU核心通过快速切换,让多个进程"看起来同时"运行。
- 操作系统通过进程调度(看状态、优先级、记账信息)决定哪个进程上CPU。
5. 性能的关键:CPU架构演进
- 主频提升 到顶 → 增加核心数量 → 使用大小核混合架构。
- 对用户来说,关注逻辑核心数 和频率即可,但架构决定同频性能。
📌 一句话总结核心逻辑
你写的程序(高级语言)被编译成机器指令 → 运行时成为进程 → 操作系统通过PCB管理进程 → 进程在CPU上并发执行指令 → 完成计算任务。
🔍 必懂的三个关键概念
- 进程 vs 程序 :程序是死的,进程是活的。进程是运行中的程序,消耗资源。
- 并发:理解"宏观同时,微观交替",这是操作系统魔法的核心。
- 上下文切换:进程被换下CPU时"存档",换上来时"读档",让你感觉不到切换。
如果你时间有限,先彻底理解"进程"和"并发"这两个概念,就掌握了计算机工作原理的60%以上。