这道c语言题错在哪里了
把逻辑地址转变为内存的物理地址的过程称作()。(A)编译(B)链接(C)运行(D)重定位...
把逻辑地址转变为内存的物理地址的过程称作( )。 (A)编译 (B)链接 (C)运行 (D)重定位
展开
4个回答
展开全部
概念错误。准确地说,逻辑地址变为物理地址的过程应该叫做内存地址变换,不是内存重定位。
在生成可行程序而没有加载之前,所需内存尚未得到分配,因而内存地址未知,使用这些地址的程序代码中的地址无法确定。在程序加载之后开始执行之前,这些内存地址就能够确定了,这时需要由操作系统把无法确定的地址修改正确,这个过程叫做“内存重定位”。在程序开始执行之后,如果操作系统需要重新调整程序在内存中的位置,可以在程序暂停期间重行分配,这个过程也叫做“动态重定位”。
而地址变换发生在程序代码执行期间。程序中使用的地址永远是逻辑地址,而CPU使用的地址却是物理地址。在每条指令执行期间,需要由微处理器专门的称为“地址变换机构”的部件把逻辑地址转换为物理地址。虽然这一过程非常复杂,涉及微处理器的多方面机制以及特殊内存结构,但在现代计算机中,都是由硬件全自动高速完成的,所以并不影响程序的执行效率。
内存位由操作系统完成的,是针对程序的,是由操作系统软件实现的,发生在程序加载之后、开始执行之前,或者当需要重新调整内存分配时暂停程序执行的暂停期间。地址变换是针对地址的,需要特殊的寄存器和内存结构,完全由处理机硬件完成,发生在程序的执行的过程中。一个是针对整个程序中,一个是针对程序中的大量地址的;一个是软件实现的,一个是硬件实现;一个在程序执行之前或暂停期间工作,一个是执行过程之中:很明显,这是完全不同的两个概念。
在生成可行程序而没有加载之前,所需内存尚未得到分配,因而内存地址未知,使用这些地址的程序代码中的地址无法确定。在程序加载之后开始执行之前,这些内存地址就能够确定了,这时需要由操作系统把无法确定的地址修改正确,这个过程叫做“内存重定位”。在程序开始执行之后,如果操作系统需要重新调整程序在内存中的位置,可以在程序暂停期间重行分配,这个过程也叫做“动态重定位”。
而地址变换发生在程序代码执行期间。程序中使用的地址永远是逻辑地址,而CPU使用的地址却是物理地址。在每条指令执行期间,需要由微处理器专门的称为“地址变换机构”的部件把逻辑地址转换为物理地址。虽然这一过程非常复杂,涉及微处理器的多方面机制以及特殊内存结构,但在现代计算机中,都是由硬件全自动高速完成的,所以并不影响程序的执行效率。
内存位由操作系统完成的,是针对程序的,是由操作系统软件实现的,发生在程序加载之后、开始执行之前,或者当需要重新调整内存分配时暂停程序执行的暂停期间。地址变换是针对地址的,需要特殊的寄存器和内存结构,完全由处理机硬件完成,发生在程序的执行的过程中。一个是针对整个程序中,一个是针对程序中的大量地址的;一个是软件实现的,一个是硬件实现;一个在程序执行之前或暂停期间工作,一个是执行过程之中:很明显,这是完全不同的两个概念。
展开全部
(D)重定位
根据重定位的时机不同,又分为静态重定位(装入内存时重定位)和动态重定位(程序运行时重定位)
根据重定位的时机不同,又分为静态重定位(装入内存时重定位)和动态重定位(程序运行时重定位)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询