课程:
- 1、操作系统中的动态重定位和静态重定位?
- 2、静态地址重定位跟动态地址重定位的区别?
- 3、静态重定位是在程序( )进行的,动态重定位是在程序( )中进行的.
- 4、操作系统的页式地址转换、段式地址转换、静态重定位、动态重定位的大致原理
- 5、重定位的时机
操作系统中的动态重定位和静态重定位?
静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故称为静态重定位。
动态重定位:它不是在程序装入内存时完成的,而是CPU每次访问内存时 由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。动态重定位需要软件和硬件相互配合完成。
扩展资料
在装入程序前,系统会计算未使用的内存,然后将程序装入,并记下开始地址。在执行有相对地址的指令时,会将所有的地址加个刚才记下的开始地址,就叫重定位。
程序放在不连续的实际物理空间中,要进行逻辑地址到物理地址的转换,实现动态重定位一般需要段页式存储管理,页式存储管理用的不是寄存器,使用的是称为page table(页表)的数据结构page table记录了所有逻辑地址到物理地址的转换信息,进程切换的时候需要冲洗硬件上的page table 。
参考资料来源:百度百科-动态重定位
参考资料来源:百度百科-重定位
静态地址重定位跟动态地址重定位的区别?
静态重定位和动态重定位的区别:
①静态重定位是在作业装入的时候一次完成, 动态重定位是在作业执行时再实现的。
②静态重定位是软件支持的, 动态重定位是硬件和软件 合作实现的。
③静态重定位不能实现主存的移动,而动态重定位可以。
④动态重定位还可能 提供虚拟存储空间。
静态重定位是在程序( )进行的,动态重定位是在程序( )中进行的.
静态重定位是在程序( )进行的,动态重定位是在程序( )中进行的。 选项:a、编译过程 b、装入过程
操作系统的页式地址转换、段式地址转换、静态重定位、动态重定位的大致原理
页式地址转换:用户作业的地址空间被分割成若干大小相等的区域,称作页或页面。相应的,将内存的存储空间也分为也页大小 相等的 区域,称作块(Page Frame)。在作业分配存储空间时,总是以块为单位分配,简单说就是将任意页分配到任意块中。(注意:作业调度时必须一次将全部页一次调度,故内存中块不足时等待)
段式地址转换:简单与页式相区别在于段式按照逻辑关系将作业进行分段,使每一段逻辑关系完整,不会像页式那样,可能由于页面大小固定的原因,使一个作业被分成两半、多半。段式中,每段被分配一个连续的存储空间,各段之间是独立的,每段均有自己的地址。
静态重定位:在装入作业时,将作业中指令地址和数据地址全部转换为物理地址。
动态重定位:在装入作业时不进行转换,而是在执行过程中将每一条指令都由硬件的地址转换机构转换成绝对地址。
重定位的时机
将逻辑地址空间重定位到物理地址空间的时机有三种:
1、程序编译连接时。
2、程序装入内存时。
3、程序执行时。
重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程。它是实现多道程序在内存中同时运行的基础。重定位有两种,分别是动态重定位与静态重定位。
分类
对程序进行重定位的技术按重定位的时机可分为两种:静态重定位和动态重定位。
静态重定位:是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的地址。对每个程序来说,这种地址变换只是在装入时一次完成,在程序运行期间不再进行重定位。
动态重定位:是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代码在装入过程中不发生变化。