当前位置:首页 > 内存 > 正文

在目标程序装入内存时

  • 内存
  • 2024-08-14 12:02:17
  • 7577

一、程序被装入内存后形成线程吗程序加载到内存后形成什么?程序只有被转移到内存中才能被执行。程序只有被转移到内存中才能被执行。内存传输过程需要两个步骤:编译和链接:首先需要编译。大多数编译系统都提供编译驱动程序,其中包括语言预处理器、编译器、汇编器和链接器。如果有两个源文件main.c和swap.c,则main.c指的是swap.c函数。驱动程序首先调用cpp预处理器(cpp),它将C源程序main.c翻译成中间ASCII代码文件main.i。接下来,驱动程序运行C编译器(ccl),将main.i翻译为ASCII汇编语言文件main.s,然后驱动程序运行汇编程序(as),将main.s翻译为可重定位目标文件main.o它再次链接,收集各种代码和数据并将其组合成一个可以加载到内存中执行的文件过程。链接可以在以下三个阶段完成:可以在编译时完成,即将源代码翻译成机器代码。(静态绑定方法)可以在加载时执行,即当程序从加载器加载到内存并执行时。(加载时动态链接)可以由应用程序在运行时执行(运行时动态链接)。由以上两步可知,程序加载到内存后形成三个模块:(1)可重定位目标文件:包含二进制代码和数据,其模块在编译时可以与其他可重定位目标文件组合,创建可执行目标文件。(2)可执行目标文件:可能包含可以直接加载到内存并执行的格式的二进制代码和数据。(3)共享目标文件:一种特殊类型的可重定位目标文件,可以动态加载到内存中,并在加载或运行时链接。

5.9
百度文库VIP限时优惠现已开放,立即享受6亿VIP内容
立即领取
程序加载后形成什么内存
程序加载内存后会发生什么
程序只有调入内存才能执行程序只有调入内存才能执行内存调入的过程需要两个步骤:编译和链接:
首先,为了编译,大多数编译系统都提供了编译驱动程序,其中包括语言预处理器、编译器、汇编器和链接器。如果有两个源文件main.c和swap.c,则main.c指的是swap.c函数。
驱动程序首先调用cpp预处理器(cpp),将C源程序main.c翻译为中间ASCII代码文件main.i
然后驱动程序执行C编译器(ccl),将C编译器翻译为中间ASCII代码文件.i转换为ASCII汇编语言文件main.s
第1页
然后驱动程序运行汇编器(as),将main.s转换为可重定位目标文件main.o


二、静态重定位的时机是当程序加载时。
静态重定位的时机是在程序加载时。有状态重定位是指当目标程序被加载到内存中时,加载器修改目标程序,将程序的逻辑地址转换为实际地址。