云计算百科
云计算领域专业知识百科平台

1计算机是如何工作的

 

一个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核心分别执行不同进程的指令)和并发(一个核心通过分时复用实现,宏观来说就是同时的)两个方式解决
    这是操作系统负责的调度,对于我们统称为并发
    4. 进程状态,就绪和阻塞
    就绪就是“随叫随到”
    阻塞就是无法参与CPU的调度执行,比如scanner,他必须等你输入什么才继续运行下一步
    5. 优先级
    各个进程的优先级不同
    比如游戏进程,需要实时操作,需要更多的CPU资源
    比如QQ进程,只用来发信息,可以少CPU资源
    比如特殊的,智能驾车中的刹车,优先级一定是最高的
    6. 进程的上下文
    一个进程调度到CPU上执行了,离开了CPU,过段时间还会回到CPU,就是会存档信息
    上下文具体指的是寄存器的值
    进程在CPU上执行的时候,寄存器的值发生改变,当进程离开CPU时,寄存器里的值就拷贝保存到内存(PCB的结构体)中,就是存档
    之后进程回到CPU,就不会重头开始,将PCB保存的寄存器的值重写到CPU的寄存器中即可
    就是读档
    7. 进程的记账信息
    统计机制,统计每个进程在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%以上。

     

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 1计算机是如何工作的
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!