1

我正在研究 galvin 第六版的操作系统概念,我对程序的执行流程有一些疑问。一张图将用户程序的处理解释为:

用户程序的多步处理

当我们到达链接编辑器点时,我们得到一个可执行的二进制文件。正如书中所说,“必须将程序放入内存并放入进程中才能执行”现在我的一些愚蠢问题是:

  1. 在程序加载到内存之前,联动编辑器生成的二进制可执行文件存储在硬盘中。二进制可执行文件存储在硬盘中的地址是CPU生成的逻辑地址?

  2. 如果前面的答案是肯定的,为什么 CPU 必须生成逻辑地址?我的意思是可执行文件存储在与地址相关的硬盘中的某个位置,为什么CPU必须单独执行这些东西?CPU的主要目的毕竟是处理!

  3. 为什么可执行文件需要在物理内存即ram中,不能在硬盘中执行?是不是因为速度问题?

我知道我问这些问题很愚蠢,但相信我,我找不到答案!:|

4

1 回答 1

0

1) 二进制文件在硬盘中存储的逻辑地址是由用于管理磁盘中文件file systemOperating System组件决定的。

2) & 3) 硬盘 a) 不够快 b) 不支持字寻址。硬盘在扇区块中寻址。通常扇区大小为 512 字节。CPU 需要能够对程序中的每个机器字进行寻址才能执行它。因此,程序存储在硬盘中,即使断电也会保留其内容(与断电时会丢失内容的 RAM 形成对比)。然后程序被加载到 RAM 中执行。在程序完成并可能将其执行结果存储在硬盘中后,释放内存以运行其他程序。示例中的编译器和链接编辑器也是程序。它们保存在硬盘中。编译器从硬盘中的文件中获取其输入(程序的源文本)。然后它存储目标文件。联动编辑器,

于 2012-10-20T07:10:13.470 回答