用户程序在系统种运行是要经过那三个步骤
1个回答
关注
展开全部
一、地址概念和程序如何运行
在多道程序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常都要经过以下几个步骤:
1. 首先是要编译:由编译程序(Compiler)将用户源代码编译成cpu可执行的目标代码,产生了若干个目标模块(Object Module)(即若干程序段)。
2. 形成的目标代码,每个目标代码都是以0为基址顺序进行编址,原来用符号名访问的单元用具体的数据——单元号取代。
3. 这样生成的目标程序占据一定的地址空间,称为作业的逻辑地址空间,简称逻辑空间。
咨询记录 · 回答于2024-01-08
用户程序在系统种运行是要经过那三个步骤
一、地址概念和程序如何运行
在多道程序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常都要经过以下几个步骤:
1. 首先是要编译:由编译程序(Compiler)将用户源代码编译成cpu可执行的目标代码,产生了若干个目标模块(Object Module)(即若干程序段)。
2. 形成的目标代码,每个目标代码都是以0为基址顺序进行编址,原来用符号名访问的单元用具体的数据——单元号取代。
3. 这样生成的目标程序占据一定的地址空间,称为作业的逻辑地址空间,简称逻辑空间。
在逻辑空间中,每条指令的地址和指令中要访问的操作数地址统称为逻辑地址。很简单,逻辑地址就是你源程序里使用的地址,或者源代码经过编译以后,编译器将一些标号、变量转换成的地址。
其次,链接由链接程序(Linker)完成。它将编译后形成的一组目标模块(程序段),以及它们所需要的库函数链接在一起,形成一个完整的装入模块(Load Module)。
最后,装入程序(Loader)将装入模块装入物理内存,进行地址重定位。
物理内存是真实存在的,它的大小是由插在主板内存槽上的内存条决定的。物理内存由若干个存储单元组成,每个存储单元都有一个编号,这种编号可以唯一标识一个存储单元,称为内存地址(或物理地址)。
我们可以把内存看作是一个从0字节到内存最大容量逐字节编号的存储单元数组,即每个存储单元与内存地址的编号相对应。
虽然装入模块具有统一的地址空间,但它仍以“0”作为参考地址,也就是浮动的。要把它装入内存执行,就要确定装入内存的实际物理地址,并修改程序中与地址有关的代码,这一过程叫做地址重定位。
地址重定位主要是把逻辑地址转换成物理内存绝对地址,这个工作又称为地址映射。
已赞过
评论
收起
你对这个回答的评价是?