CPU指令与进程管理

张开发
2026/4/14 23:53:06 15 分钟阅读

分享文章

CPU指令与进程管理
计算机是如何工作的文章目录计算机是如何工作的前言一、CPU是如何运行的1.1 指令是什么1.2 CPU是如何运行的二、关于操作系统1. 操作系统是什么2. 进程是什么3. PCB是什么4. PCB中的一些属性4.1 PID4.2 内存指针4.3 文件描述符表4.4 进程的状态4.5 进程的优先级4.6 进程的上下文4.7 进程的记账信息总结前言本文将带大家了解CPU的工作原理、什么是进程以及与进程相关的基本概念。一、CPU是如何运行的1.1 指令是什么CPU是一台计算机中最为重要的硬件也是人类目前的科技巅峰之作。要理解CPU是如何工作的我们就得先认识一下什么是指令。指令是指导计算机工作的命令。它由操作码和操作数组成以二进制的形式存储在寄存器、内存之中。操作码的功能是告诉计算机此时应该做出什么行为而操作数的功能是指定当前这个行为要作用的对象或位置。以下是一个简单的指令表格指令功能Opcode操作数LOAD_ARAM → A寄存器00104位地址LOAD_BRAM → B寄存器00014位地址STORE_AA寄存器 → RAM01004位地址ADD寄存器相加结果写入第一个寄存器10002位寄存器ID 2位寄存器ID以下是计算机要执行的指令假设从内存地址0开始由上到下依次执行地址数据0001011101000111112100001003010011014000000005000000006000000007000000008000000009000000001000000000110000000012000000001300000000140000011115000011101.2 CPU是如何运行的首先CPU开始读取内存地址0的内容该内容为00101110 0010111000101110。我们将这条指令拆分为0010 00100010和1110 11101110其中0010 00100010对应指令LOAD_A表示将RAM中的数据加载到寄存器A中。而数据部分1110 11101110转换为十进制是14 1414这表示目标地址为内存地址14。地址14的内容是00000111 0000011100000111其十进制值为7 77因此CPU将数值7 77读取并存储到寄存器A中。接下来CPU读取下一条指令即地址1的内容该内容为00011111 0001111100011111。同样拆分为0001 00010001和1111 111111110001 00010001对应指令LOAD_B表示将RAM中的数据加载到寄存器B中。数据部分1111 11111111转换为十进制是15 1515表示目标地址为内存地址15。地址15的内容是14 141400001110 0000111000001110此时数值14 1414被存储到寄存器B中。CPU继续读取地址2的内容10000100 1000010010000100拆分为1000 10001000和0100 01000100。1000 10001000对应指令ADD表示两个寄存器相加而后面的01 0101和00 0000分别指定了寄存器B和寄存器A假设00代表A01代表B。因此CPU执行加法操作14 7 21 14 7 2114721结果21 2121被存储到寄存器A中。需要注意的是寄存器B中的数值保持不变而寄存器A的原有值会被新结果覆盖除非发生断电等意外事件。最后CPU读取地址3的内容01001101 0100110101001101拆分为0100 01000100和1101 11011101。0100 01000100对应指令STORE_A表示将寄存器A的内容存储到RAM中。数据部分1101 11011101转换为十进制是13 1313因此CPU将寄存器A的当前值21 2121转存到内存地址13中。至此CPU完成了一次加法运算。接下来我们把这一节的要点做一个文字总结CPU中的PC寄存器它是决定CPU要执行哪条指令的关键负责指向下一条指令的地址。指令的构成指令由动作和操作对象两部分组成即“做什么” → “对什么做”。CPU的核心关注点在CPU的视角中只有指令指令是其唯一能识别和执行的基本单位CPU本身并不理解“程序”之类的高级概念。二、关于操作系统1. 操作系统是什么操作系统是一个底层的系统软件其作用是管理计算机的硬件资源以及我们所使用的应用软件。常见的操作系统有Windows系列、Unix系列、Linux系列、macOS系列、Android系列、iOS系列、鸿蒙等。2. 进程是什么比如我们运行从网页上下载的一个.exe文件这个正在运行的程序就被称为进程。简而言之进程就是一个正在操作系统上运行的程序。3. PCB是什么站在操作系统的视角当一个进程被创建出来的时候操作系统就会自动地创建PCB进程控制块。PCB是一个结构体操作系统底层大多是由C语言编写的这个结构体包含了很多关于该进程的属性。多个PCB之间的管理与联系方式大概可以简化为链表的串联。4. PCB中的一些属性4.1 PID这是进程的ID就像人的身份证号一样每一个进程都拥有一个独一无二的ID。4.2 内存指针它负责告诉操作系统该进程的代码和数据存储在内存的什么位置。4.3 文件描述符表进程的运行需要和硬盘、内存等硬件进行交互。在交互的时候进程会打开文件这些被打开的文件的信息就存储在文件描述符表中。在实际的运行过程中进程不仅会打开硬盘上的文件还会与网卡等硬件进行交互。由此我们可以知道进程的运行是会消耗计算机资源的。4.4 进程的状态为了方便理解我们先引入一个生活中的背景信息假设这里有三个人A很有钱。B颜值高。C非常在意我。这里我们主要讨论进程的两个状态就绪状态与阻塞状态。就绪状态就像A、B、C三者随叫随到你想什么时候约会就什么时候约会。对应到操作系统中就是进程已经准备好了只要分配到CPU资源想什么时候运行就什么时候运行。阻塞状态假设A去出差了我现在无法一个电话就让A立刻过来找我。对应到程序上就像是程序正在等待某些资源例如等待网络数据或读取文件暂时被卡住无法继续往下执行。补充概念分时复用假设我的电脑CPU有20个逻辑处理器理论上可以同时运行20个程序。但是此时后台的进程有400多个那计算机是如何“同时”运行这400多个程序的呢这里要提出一个核心概念分时复用。可以这样简单理解CPU将一个单位时间切分成无数个微小的“时间片”。第一份时间执行A程序第二份时间执行B程序第三份时间执行C程序……交替进行。由于CPU运行速度非常快如上图所示为3.18GHz即每秒进行数十亿次运算人眼根本感知不到切换的卡顿看起来就像是这400个程序在同时运行一样。4.5 进程的优先级一般来说我会这样安排我一周的时间周一、周二和A约会周三、周四和B约会周五和C约会周六、周日给自己休息。面对不同的人或事我们给予的时间和精力是不同的。对应到操作系统里也是一样的。假设你打开了两个程序一个是《我的世界》游戏一个是QQ。你肯定希望玩游戏的时候电脑不会卡顿。此时操作系统就会把更多的CPU资源倾斜到游戏身上赋予它更高的优先级即使QQ接收消息因此产生了一点点延迟也是合理的。4.6 进程的上下文由“分时复用”可以了解到CPU执行一个进程并不是一口气执行到底的而是交替、分时段运行的。那么问题来了当一个进程被暂停过一会儿再次恢复运行时之前运行产生的数据是否还在呢答案是肯定的还在。如果数据不在了那程序不就变成反复地“开启-关闭-开启-关闭”了吗实际上CPU在切换到其他进程之前会将当前寄存器中的临时数据保存起来存入内存或PCB中在下次恢复运行该进程时又会读取这些“上下文”数据保证程序能接着上一次的进度无缝继续执行。4.7 进程的记账信息记账信息用于统计每个程序运行了多久。如果某一个进程很久都没有获取到吃到CPU资源了操作系统就会察觉到并给这个程序倾斜更多的资源保证该进程不至于被“饿死”或卡死。总结PC 寄存器决定了下一条要执行的指令地址。指令是 CPU 的唯一关注点CPU 并不认识“程序”、“进程”等高层软件概念。所有复杂的计算行为本质上都是指令的顺序执行。就绪态与阻塞态描述了进程当前是否具备运行条件。分时复用解释了在 CPU 核心数有限的情况下操作系统如何“同时”运行大量进程。进程优先级决定了 CPU 资源的分配倾向。进程上下文保证了进程在多次被切换和调度时能够连续不断地运行。记账信息用于统计进程的运行情况辅助操作系统调度策略的公平性。

更多文章