操作系统 教学课件 作者 吴小平 第4章.pptVIP

操作系统 教学课件 作者 吴小平 第4章.ppt

  1. 1、本文档共127页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
源程序转变为可执行程序,首先由编译程序把源程序编译成若干个目标模块,在通过链接程序把所有目标模块和它们需要的库函数链接在一起,形成可装入模块。通过装入程序把可装入模块装入内存而运行。 4.1.1 逻辑地址、物理地址和虚拟地址 (1)逻辑地址 用户源程序经编译、链接后得到可装入程序。由于无法预知程序装入内存的具体位置,因此不可能在程序中直接使用内存地址,只能规定程序的起始地址为0,而程序中指令和数据的地址都是相对0起始地址进行计算。按照这种方法确定的地址称为逻辑地址或相对地址。一般情况下,目标模块(程序)和装入模块(程序)中的地址都是逻辑地址。 (2)逻辑地址空间 一个目标模块(程序)或装入模块(程序)的所有逻辑地址的集合,称为逻辑地址空间或相对地址空间。 (3)物理地址 内存中实际存储单元的地址称为物理地址。物理地址也称为绝对地址,内存地址等。当程序被装入内存后,要使程序能够运行,必须将代码和数据的逻辑地址转换为物理地址,这个转换操作称为“地址变换”。 (4)物理地址空间 内存中全部存储单元的物理地址集合称为物理地址空间、绝对地址空间或内存地址空间。由于每个内存单元都有唯一的内存地址编号,因而物理地址空间是一个一维的线性空间。为了使程序在装入后能够正常运行,互不干扰,必须将不同程序装入到不同的内存空间位置。 (5)虚拟地址空间和虚拟地址 CPU支持的地址范围一般远大于机器实际主存的大小,对多出来的那部分地址,程序仍然可以使用,程序能使用的整个地址范围称为虚拟地址空间(虚空间),该空间中的某个地址称为虚拟地址。在大多数系统中,物理地址空间只是虚拟地址空间的一个子集。 4.1.2 程序链接 源程序经过编译后所得到的目标模块,必须由链接程序将其链接成一个完整的可装入模块后,方能装入内存运行。链接程序在将几个目标模块装配成一个装入模块时,需要解决以下问题: (1)修改模块的相对地址 (2)变换外部调用符号 针对链接时间的不同,存在3种链接的方式: (1)静态链接 在程序运行前,把源程序编译成的所有目标模块及所需要的库函数链接成一个统一的装入模块,以后不再分开。 (2)装入时动态链接 对目标模块的链接是在模块装入内存时进行,即在模块装入过程中,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,采用边装入边链接的链接方式。 (3)运行时动态链接: 该链接方式是对装入时动态链接方式的一种改进。这种链接方式是将对某些模块的链接推迟到执行时才执行,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存, 把它链接到调用者模块上。 只要在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。 4.1.3 程序装入 1.程序装入 根据内存的当前情况,将装入模块装入到内存合适的物理位置。装入操作针对的是程序的整个逻辑地址空间,而对应的物理地址空间既可以是连续存放的,也可以是离散存放的。 模块装入后并不能立刻运行,因为模块中每个指令要访问的地址仍然是相对地址,并不是内存中的实际物理地址,无法直接进行访问。要使装入内存的程序能够运行,必须将程序中的逻辑地址转换为机器能直接寻址的物理地址,这种地址转换操作称为“地址映射”、“地址变换”或“重定位”。 静态装入 在程序运行之前一次性地将装入模块装入内存,且在装入过程中同时完成相对地址到绝对地址的变换工作。 运行时动态装入: 把装入模块装入内存后,并不立刻完成地址转换,而把地址转换工作推迟到程序真正执行时才进行。 静态装入时进行的地址变换称为静态地址变换或静态重定位,运行时动态装入涉及的地址变换称为动态地址变换或运行时动态重定位。 2.静态重定位(静态地址变换) 装入程序将装入模块装入到内存适当位置后,在程序运行前,一次性地将所有指令要访问的地址全部由相对地址转换为绝对地址,并在程序执行过程中不再改变。静态重定位不允许程序运行时在内存中移动位置,因为移动位置则意味着要对程序和数据的地址进行修改。 静态重定位的优缺点 优点: 简单、容易实现 缺点: (1)内存的利用率不高 程序装入内存后,若在运行期间不允许它在内存中移动,则无法实现内存重新分配。 (2)增加了程序员的负担 若内存提供的物理存储空间无法满足当前程序的存储容量,则必须由程序员在程序设计时采用某种方式来解决存储空间不足问题,。 (3)浪费了内存资源。

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档