计算机基础知识第五期——程序是如何执行的

chengsenw 项目开发评论1阅读模式

计算机基础知识第五期——程序是如何执行的

计算机基础知识第五期——程序是如何执行的

一、程序在计算机中是怎么执行的?

计算机只认 0 和 1(二进制指令),不认代码、文字、逻辑。

执行的本质只有三步:

1. 取指令:CPU 从内存里读一条二进制指令

2. 译指令:控制单元看懂这条指令要干嘛

3. 执行指令:运算、读写内存、跳转、输入输出…

循环往复,直到程序结束。

你写的所有代码,最终都会变成:

- 一串二进制

- 在 CPU 里被流水线执行

二、高级语言怎么转成二进制?

1)C / C++:编译型语言(直接变机器码)

完整流程:

源码 .c/.cpp → 预处理器 → 编译 → 汇编 → 链接 → 可执行文件(机器码)

- 编译:把高级语言 → 汇编

- 汇编:汇编 → 机器码(二进制)

- 链接:把你写的代码 + 库函数 → 一个可执行文件(.exe / ELF)

最终得到的是本地 CPU 可直接跑的二进制。

2)Java:半编译半解释(先编译为字节码)

流程:

.java → 编译器 → .class(字节码) → JVM 解释/即时编译(JIT) → 机器码

- Java 编译器不直接生成机器码,而是字节码(中间格式)

- JVM 在运行时把字节码翻译成当前系统的机器码

- JIT 会把热点代码编译成本地二进制,加速运行

3)Python:解释型语言(运行时翻译)

流程:

.py → 解释器 逐行读取 → 逐行翻译成机器码 → 立刻执行

现代 CPython 内部也会先生成字节码 .pyc,再由虚拟机执行。

特点:边译边跑,不提前生成完整二进制可执行文件。

三、一个程序完整执行过程(从双击到结束)

这是最硬核、最完整的真实流程:

1. 双击程序

操作系统接管,找到可执行文件。

2. 加载到内存

OS 把:

- 代码段(指令)

- 数据段(全局变量、常量)

- 堆、栈空间

全都读到内存。

3. 建立进程 + 分配资源

分配 PID、内存、文件描述符、环境变量等。

4. CPU 从入口地址开始执行

从  main  或程序入口开始:

取指 → 译码 → 执行 → 访存 → 写回 → 程序计数器 PC+1

5. 运行中

- 函数调用 → 用栈保存返回地址、局部变量

- 动态内存 → 在堆上分配

- 系统调用 → 向 OS 请求:打印、文件、网络等

6. 程序结束

- 退出 main

- OS 回收内存、关闭文件、销毁进程

计算机基础知识第五期——程序是如何执行的

极简总结

- C/C++:源码 → 编译 → 直接变机器码

- Java:源码 → 字节码 → JVM → 机器码

- Python:源码 → 解释器/字节码 → 边跑边译

- 程序执行本质:CPU 不断取指、译码、执行二进制指令

 
chengsenw
  • 本文由 chengsenw 发表于 2026年3月26日 17:48:31
  • 转载请务必保留本文链接:https://www.gewo168.com/24946.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: