动态运行时装入
❶ 采用动态重定位方式装入的作业其地址变换工作是在何时完成的
每执行一条指令时
❷ 何谓静态链接何谓装入时动态链接和运行时的动态链接
静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。
静态链接的最大缺点是生成的可执行文件太大,需要更多的系统资源,在装入内存时也会消耗更多的时间。
像Unix ld程序这样的静态链接器(static linker)以一组可重定位的目标文件作为输入,生成一个完全连接的可以加载和运行的可执行目标文件作为输出。输入的可重定位目标文件由各种不同的代码和数据节(section)组成。指令在一个节中,初始化的全局变量在一个节中;而未初始化的变量在另外一个节中。
动态链接英文是Dynamic Linking,他是使得不同的程序开发者和部门能够相对独立地开发和测试自己的程序模块,从某种意义上来讲大大促进了程序的开发效率,原先限制程序的规模也随之扩大。但是慢慢地静态链接的诸多缺点也逐步暴露出来,比如浪费内存和磁盘空间、模块更新困难等问题,使得人们不得不寻找一种更好的方式来组织程序的模块。
动态链接与静态链接对比
静态链接
优点:
① 代码装载速度快,执行速度略比动态链接库快;
② 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。
缺点:
使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;
动态链接
优点:
①更加节省内存并减少页面交换;
② DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;
③不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;
④适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。
缺点:
使用动态链接库的应用程序不是自完备的,它依赖的DLL模块也要存在,如果使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件,统统撕掉。这在早期Windows中很常见。[1]
页面
动态页面:含有?的,或是以asp,php,jsp,aspx结尾的都是动态,动态页面是可以通过网站后台管理系统对网站的内容进行更新管理,动态页面在服务器里面不是真实存在的,访问动态页面需要经过数据库,动态页面是动态连接,发布公司产品,交流互动,博客,网上调查等,这都是动态网站的一些功能。
❸ 运行一个程序文件时,它被装入到( )中。A RA M B ROM C CD-ROM D
选择A
随机存取
所谓“随机存取”,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。相对的,读取或写入顺序访问(Sequential Access)存储设备中的信息时,其所需要的时间与位置就会有关系(如磁带)。
易失性
当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会。
高访问速度
现代的随机存取存储器几乎是所有访问设备中写入和读取速度最快的,取存延迟也和其他涉及机械运作的存储设备相比,也显得微不足道。
需要刷新
现代的随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。
对静电敏感
正如其他精细的集成电路,随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。
[编辑本段]RAM ROM 内存的区别
随机存储器
rom -read only memory 只读存储器
①简单地说,在计算机中,RAM 、ROM都是数据存储器。RAM 是随机存取存储器,它的特点是易挥发性,即掉电失忆。ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM 相反。ROM又分一次性固化、光擦除和电擦除重写两种类型。举个例子来说也就是,如果突然停电或者没有保存就关闭了文件,那么ROM可以随机保存之前没有储存的文件但是RAM会使之前没有保存的文件消失。
内存
在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。
从一有计算机开始,就有内存。内存发展到今天也经历了很多次的技术改进,从最早的DRAM一直到FPMDRAM、EDODRAM、SDRAM等,内存的速度一直在提高且容量也在不断的增加。今天,服务器主要使用的是什么样的内存呢?目前,IA架构的服务器普遍使用的是REGISTEREDECCSDRAM。
既然内存是用来存放当前正在使用的(即执行中)的数据和程序,那么它是怎么工作的呢?我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。
❹ 在运行时动态添加实体类问题,怎么解决
所谓实体类,据我观察主要用在泛型集合里,为了满足强类型系统的要求.OOP的思想就是用人类认识世界的方式去做程序设计.所以,把我们看到的一切都作为对象, 比如人类, 我可以用程序去描述他, 身高,体重,肤色,种族等等, 把这"一类"抽象出来.
这就给我们一个感觉, 实体类只包含属性,没有方法.尽管方法和属性其实一样,只是属性描述数据成员, 这也是C#优势所在, 它更接近人类认识世界的过程 --- 属性,比如上述的身高,体重等.但是其他语言似乎没有属性一说.
把所有动作(方法和事件)放在另外的类中, 叫做控制类. 这就是MVC的概念.
❺ 运行一个程序文件时,它被装入到什么中
运行一个程序文件时,它被装入到随机存取存储器(英语:Random Access Memory,缩写:RAM)中。
RAM是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。
(5)动态运行时装入扩展阅读
RAM的特点:
1、随机存取
当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的位置无关。相对的,读取或写入顺序访问(Sequential Access)存储设备中的信息时,其所需要的时间与位置就会有关系。它主要用来存放操作系统、各种应用程序、数据等。
2、易失性
当电源关闭时,RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。
RAM的工作特点是通电后,随时可在任意位置单元存取数据信息,断电后内部信息也随之消失。
3、对静电敏感
正如其他精细的集成电路,随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。
4、访问速度
现代的随机存取存储器几乎是所有访问设备中写入和读取速度最快的,存取延迟和其他涉及机械运作的存储设备相比,也显得微不足道。
❻ 比较绝对装入方式、可重定位装入方式、动态运行时装入方式三种程序的装入
绝对装入方式:只能将目标模块装入到内存中事先指定的位置,只适用于单道程序环境
可重定位装入方式: 可将装入模块装入到内存中任何允许的位置,故可用于多道程序环境
动态运行时装入方式:在运行过程中程序在内存中的位置能经常改变
❼ 动态运行时什么意思什么是runtime
运行时刻是指一个程序在运行(或者在被执行)的状态。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为“运行库"。这些实例可以在它们运行的时候被连接或者被任何程序调用。
Runtime类封装了运行时的环境。每个 Java应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。
一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。
一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。
当Applet和其他不被信任的代码调用任何Runtime方法时,常常会引起SecurityException异常。
❽ 硬盘上有个程序,运行时要装进内存,但程序代码被装入内存的什么位置,是由什么决定的
问题没那么复杂,楼主是希望得到原理层次上的回答吧。
1、硬盘程序装入内存,其位置由操作系统决定,也就是写操作系统程序的人,来决定。
2、8086数据段存数据,代码段存代码,以示类型的分别。
比如,同样00010001,计算机怎么知道是数据11H,还是汇编指令的机器码呢?
3、“51单片机到明白,程序放在rom里,cpu从rom里读取,执行”。这只是程序代码的情况,其实里面也分数据段、代码段。
4、“有了操作系统,还要汇编中的数据段、代码段,CS、DS干什么?”
因为汇编是转成机器码以后直接执行的,这些是让你直接指挥机器干活的工具啊。
5、你用C/C++等语言的话,则是由编译器来把它们转换成汇编程序。
❾ 装入时动态链接 运行时动态链接 静态链接
静态链接是在生成可执行程序的时候就把库中的内容加入到程序中。
载入时动态链接是在将功能模块读入内存时把动态库中调用到的相关模块的内容载入内存。
运行时动态链接是在执行程序调用到模块内容时再将动态库中的相应模块载入到内存。
这里有两个时间问题。一是载入时间,二是执行时间。
静态链接由于是在一开始就把所有模块都加载进入内存,所以如果模块很多的话效率就会被大大拉低。
载入时动态链接是分别载入,当把一个模块载入内存时检查有调用关系的模块载入,比静态链接节省了许多开销。
运行时动态链接则是把当前模块调用的模块推迟到调用的时候再载入。
三者之间的关系就像是机枪,冲锋枪和手枪
机枪在一开始就把所有子弹装好,开枪的时候很快,但也很笨重。
冲锋枪则是将子弹分弹夹存好,轻便了许多,但是会有一段装填时间。
手枪就更加轻便了,但是弹夹容量更小,装填的频率又变高了。