操作系统第四篇存储管理新.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 存储器管理 潘东静 存储器是计算机系统的五大组成部分之一。随着计算机技术的发展,存储器容量一直在扩充,但仍不能满足现代软件和用户的需要,因此存储器仍是一种宝贵、紧俏的资源。对存储器加以有效管理,不仅直接影响存储器的利用率,而且对系统性能有重大影响。内存管理的主要对象是内存,对外存的管理在文件管理中。 存储管理的主要功能有: 主存分配与回收 地址重定位(地址映射) 存储保护 主存扩充(虚拟内存) 提高内存空间的利用率 4.1 程序的装入和链接 4.2 连续分配方式 4.3 基本分页存储管理方式 4.4 基本分段存储管理方式 4.5 虚拟存储器的基本概念 4.6 请求分页存储管理方式 4.7 页面置换算法 4.8 请求分段存储管理方式 4.1 程序的装入和链接 在多道程序环境下,要使程序运行,必须为之先建立进程。创建进程的第一件事是将程序和数据装入内存。 将用户源程序变为可在内存中执行的程序的步骤: 编译:由编译程序将用户源代码编译成若干个目标模块 链接:由链接程序将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块 装入:由装入程序将装入模块装入内存 4.1 程序的装入和链接 4.1 程序的装入和链接 4.1.1 程序的装入 先介绍一个无须进行链接的单个目标模块的装入过程。此时目标模块就是装入模块。 将一个装入模块装入内存时,有三种方式: 绝对装入方式 可重定位装入方式 动态运行时装入方式 4.1 程序的装入和链接 1. 绝对装入方式只适用于单用户单任务操作系统 在编译时,如果知道程序驻留在内存的什么位置,那么编译程序将产生绝对地址的目标代码。 程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员赋予。通常在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。 4.1 程序的装入和链接 2. 可重定位装入方式(静态重定位) 在多道程序环境下,目标模块的起始地址通常从0开始,程序中的其他地址都是相对于起始地址计算的。因此应采用可重定位装入方式,根据内存的当前情况,将装入模块装入到内存的适当位置。 4.1 程序的装入和链接 4.1 程序的装入和链接 3. 动态运行时装入方式(动态重定位) 静态重定位,可将装入模块装入到内存中任何允许的位置,故可用于多道程序环境;但并不允许程序运行时在内存中移动位置。 动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。为使地址转换不影响指令的执行速度,应设置一个重定位寄存器。 4.1 程序的装入和链接 4.1.1 程序的链接 程序经过编译后得到一组目标模块,再利用链接程序将目标模块链接,形成装入模块。根据链接时间的不同,把链接分成三种: 静态链接:在程序运行前,将目标模块及所需的库函数链接成一个完整的装配模块,以后不再拆开。 装入时动态链接:指将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的链接方式。 运行时动态链接:指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行链接。 4.1 程序的装入和链接 4.1 程序的装入和链接 2. 装入时动态链接: 用户源程序经编译后所得的目标模块,是在装入内存时,边装入边链接的,即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存,还要修改目标模块中的相对地址。 优点: (1) 便于修改和更新 (2) 便于实现对目标模块的共享 4.1 程序的装入和链接 3. 运行时动态链接: 在许多情况下,应用程序要运行的模块可能不同,事先不知道要运行哪些模块,只能全部装入,装入时全部链接在一起,效率低。 运行时动态链接是将对某些模块的链接推迟到执行时才执行,即在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。凡执行过程中未被用到的目标模块,不会调入内存和链接,这样不仅加快程序的装入过程,而且节省大量的内存空间。 如:主程序段 4.2 连续分配方式 连续分配方式,是指为一个用户程序分配一个连续的内存空间。 分类: 单一连续分配 固定分区分配 动态分区分配 动态重定位分区分配 4.2

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档