双击一个程序后发生了什么?
双击一个程序图标后,电脑并不是简单地“把程序复制到内存”。系统会先识别你的操作、找到真正的程序文件、创建进程、准备虚拟内存和运行环境,再由 CPU 开始执行程序指令。
从看得见的电脑出发,理解硬件、数据和程序怎样一起工作。
共 47 篇文章
双击一个程序图标后,电脑并不是简单地“把程序复制到内存”。系统会先识别你的操作、找到真正的程序文件、创建进程、准备虚拟内存和运行环境,再由 CPU 开始执行程序指令。
程序平时长期保存在 SSD 或硬盘里,但运行时,操作系统会把当前需要的代码和数据映射到进程的虚拟地址空间,并在需要时把相应页面调入内存。这样 CPU 才能高效取得正在执行的指令和数据。
程序进入可运行状态后,CPU 会不断取得机器指令、理解指令需要什么操作、准备数据并执行,再决定下一条指令在哪里。真实 CPU 还会使用流水线、缓存、分支预测和乱序执行等技术提高效率。
电脑看起来能同时播放音乐、打开网页、聊天和下载文件,是因为操作系统会调度很多进程和线程,让它们轮流获得 CPU 时间;多核处理器还可以让多个线程真正同时执行。
电脑“变卡”并不是一种单一故障。CPU 太忙、内存紧张、存储读写拥堵、显卡负载过高、温度过高导致降频,甚至网络变慢,都可能让我们感觉电脑反应迟钝。
电脑并不是真的“只认识数字 0 和 1”。更准确地说,现代数字计算机通常用两种稳定的电状态来表示两种符号状态,我们把它们记作 0 和 1。
一个 0 或 1 并没有固定的物理大小。在计算机里,我们常把一个二进制位称为 Bit(比特):它一次只能处于两种可能状态之一,例如 0 或 1。
今天的计算机里,1 Byte(字节)通常定义为 8 Bit。这个“8”不是自然规律,而是计算机历史、字符编码、硬件设计和行业标准长期发展后形成并固定下来的约定。
二进制和十进制一样,也是一种按位计数的方法。十进制每一位按 1、10、100……增长,而二进制每一位按 1、2、4、8……增长;数到这一位不能再增加时,就向左边进位。