搜索

操作系统中的动态重定位和静态重定位?

gecimao 发表于 2019-05-12 21:21 | 查看: | 回复:

  百度知道电脑/网络操作系统/系统故障其它操作系统

  为什么说动态重定位比较容易共享同一程序副本,而静态重定位很难共享同一程序副本。这句话怎么理解?什么是同一程序副本...

  为什么说动态重定位比较容易共享同一程序副本,而静态重定位很难共享同一程序副本。这句话怎么理解?什么是同一程序副本

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部程序和数据装入内存时需对目标程序中的地址进行修改。这种把逻辑地址转变为内存的物理地址的过程叫重定位。

  对程序进行重定位的技术按重定位的时机可分为两种:静态重定位和动态重定位。

  静态重定位是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的地址。对每个程序来说,这种地址变换只是在装入时一次完成,在程序运行期间不再进行重定位。

  静态重定位的优点是无需增加硬件地址转换机构,便于实现程序的静态连接。在早期计算机系统中大多采用这种方案。

  它的主要缺点是:(1)程序的存储空间只能是连续的一片区域,而且在重定位之后就不能再移动。这不利于内存空间的有效使用。(2)各个用户进程很难共享内存中的同一程序的副本。

  动态重定位是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代码在装入过程中不发生变化。

  动态重定位的主要优点是:(1)程序占用的内存空间动态可变,不必连续存放在一处。(2)比较容易实现几个进程对同一程序副本的共享使用。

  它的主要缺点是需要附加的硬件支持,增加了机器成本,而且实现存储管理的软件算法比较复杂。

  动态重定位的话,程序可以装入任意内存区域(不要求占用连续的内存区),只装入部分程序代码就可以运行。改变系统时不需要改变程序(程序占用的内存空间动态可变,只需要改变定位寄存器中的值即可),所以程序可以方便共享同一个程序的副本。

本文链接:http://hem-larm.com/dongtaizhongdingwei/466.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部