1. 存储程序(Stored Program)
核心定义
存储程序是冯·诺依曼体系结构的核心思想之一,指将程序指令和数据以二进制形式共同存储在计算机的内存中,并由中央处理器(CPU)按顺序读取、解释和执行。这一理念彻底改变了早期计算机(如机械开关编程)的工作方式。
关键特点
-
程序与数据统一存储
程序指令和操作数据共享同一存储空间,消除了早期计算机需要物理切换程序(如插拔线路或打孔卡片)的局限性。 -
自动执行
CPU 通过程序计数器(PC)逐条读取内存中的指令并执行,无需人工干预。 -
灵活性
程序可以像数据一样被修改、加载或动态生成(例如操作系统调度不同任务)。
历史意义
- 冯·诺依曼的贡献:1945年提出的《EDVAC报告书》首次系统阐述了这一思想,奠定了现代计算机的基础。
- 革命性影响:使计算机从专用设备变为通用计算工具,支持运行任意程序。
示例
- 当你在计算机上启动一个软件(如浏览器),其代码会从硬盘加载到内存,CPU 按顺序执行内存中的指令。
2. 程序存储(Program Storage)
核心定义
程序存储指程序在计算机系统中的存储方式和管理机制,包括程序代码在内存或外存中的存放位置、组织形式和访问规则。它更侧重于技术实现层面。
关键特点
-
存储介质
程序可以存储在多种介质中:- 内存(RAM):供 CPU 直接快速访问。
- 外存(硬盘、SSD):长期保存,需加载到内存才能执行。
- 只读存储器(ROM):存储固件或启动程序(如 BIOS)。
-
组织形式
- 代码段(Text Segment):存放可执行指令。
- 数据段(Data Segment):存放全局变量等静态数据。
- 堆(Heap)和栈(Stack):动态分配内存空间。
-
操作系统管理
- 虚拟内存:通过分页机制将程序映射到逻辑地址空间。
- 进程隔离:不同程序的存储空间相互隔离,确保安全性。
技术实现
- 编译与链接:程序代码被编译为二进制文件(如
.exe
),链接器确定其存储布局。 - 动态加载:部分代码(如共享库)在运行时按需加载。
示例
- 程序安装到硬盘后,启动时操作系统将其代码段加载到内存的固定区域,堆栈动态分配内存供函数调用使用。
两者对比
维度 | 存储程序(Stored Program) | 程序存储(Program Storage) |
---|---|---|
核心思想 | 程序与数据共享存储空间,自动执行 | 程序在存储介质中的具体存放和管理方式 |
抽象层级 | 计算机体系结构的设计原则 | 操作系统和硬件的实现细节 |
应用场景 | 冯·诺依曼架构的基础 | 内存管理、程序加载、文件系统设计等 |
示例 | CPU 从内存读取指令执行 | 代码段在内存中的地址分配 |
总结
- 存储程序是计算机的根本设计理念,强调“程序即数据”的统一存储和自动执行。
- 程序存储是这一理念的具体实现,涉及程序在存储介质中的物理或逻辑组织方式。