关于程序执行流程的问题

时间:2012-10-20 06:51:36

标签: operating-system memory-address

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

Multistep processing of user program

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

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

  2. 如果上一个答案为是,为什么CPU必须生成逻辑地址?我的意思是可执行文件存储在硬盘的某个地址,属于一个地址,为什么CPU必须单独做这些东西? CPU的主要目标是加工!

  3. 为什么可执行文件需要在物理内存中,即内存并且无法在硬盘中执行?这是由于速度问题吗?

  4. 我知道在提出这些问题时我很愚蠢,但相信我,我找不到答案! :|

1 个答案:

答案 0 :(得分:0)

1)二进制文件存储在硬盘中的逻辑地址由file system确定,Operating System组件旨在管理磁盘中的文件。

2)& 3)硬盘不是a)足够快b)不支持字寻址。硬盘在扇区块中寻址。通常扇区大小为512字节。 CPU需要能够解决程序中的每个机器字以执行它。因此,程序存储在硬盘中,即使关闭电源也会保留其内容(与关闭电源时丢失内容的RAM相反)。然后程序被加载到RAM中以执行。程序完成并可能将其执行结果存储在硬盘中后,内存将被释放以运行其他程序。示例中的编译器和链接编辑器也是程序。它们保存在硬盘中。编译器从硬盘中的文件获取其输入(程序的源文本)。然后它存储目标文件。链接编辑器或简称链接器也是如此:它读取目标文件和必要的库文件,然后生成一个带有程序二进制表示的文件。