第4章 存储器管理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 存储器管理.ppt

第4章 存储器管理 存储器管理的功能: (1)???? 存储分配和回收:是存储管理的主要内容。讨论其算法和相应的数据结构。 (2)???? 地址变换:可执行文件生成中的链接技术、程序加载时的重定位技术,进程运行时硬件和软件的地址变换技术和机构。 (3)???? 存储共享和保护:代码和数据共享,对地址空间的访问权限(读、写、执行)。 (4)??存储器扩充:它涉及存储器的逻辑组织和物理组织; 由应用程序控制:覆盖; 由OS控制:交换(整个进程空间),请求调入和预调入(部分进程空间) 存储器的发展方向:高速、大容量和小体积。如:内存在访问速度方面的发展DRAM、SDRAM、RDRAM,DDR RAM等; 容量也在不断增大。 但程序的增长速度和内存容量的增长速度几乎一样快 帕金森定律:存储器有多大,程序就有多大 4.1 程序的装入和链接 编程得到可执行文件的步骤:编译、链接、装入。 编辑:得到如test.cpp ,a.asm等源文件 装入模块--由OS装入内存,成为进程。 重定位:在可执行文件装入时需要解决可执行文件中指令和数据的地址和内存地址的对应。由操作系统中的装入程序loader来完成。 逻辑地址空间与物理地址空间 逻辑地址 – 由CPU执行指令时生成的地址(本条指令所需数据的地址或下一条指令的地址),也称虚地址(virtual address)、相对地址。 物理地址 – 实际的内存单元地址,也称绝对地址、实地址。 将逻辑地址空间与物理地址空间相分离,是内存管理的核心。 如果地址映象工作在编译阶段或加载阶段完成,那么逻辑地址与物理地址是相同的。如果地址映象工作在执行阶段完成,那么逻辑地址(虚地址)与物理地址是不相同的。 4.1.1 程序的装入 1.???? 绝对装入(absolute loading) 编译程序知道程序将驻留在内存的地址,产生绝对地址的目标代码; 绝对装入模块装入时直接定位在上述内存地址,不需修改程序和数据的地址。 优点:装入过程简单。 缺点:过于依赖于硬件结构,不适于多道程序系统。 2. 可重定位装入(relocatable loading) 在多道程序环境下,目标模块的起始地址通常从0开始,程序的其它地址也都是相对于起始地址计算的。装入时采用可重定位装入。 在可执行文件中,列出各个需要重定位的地址单元和相对地址值(可重定位表),装入时再根据所定位的内存地址去修改每个重定位地址项,添加相应偏移量。 优点:不需硬件支持,可以装入有限多道程序(如MS DOS中的TSR)。 缺点:一个程序通常需要占用连续的内存空间,程序装入内存后不能移动。不易实现共享。 地址变换是在装入时一次完成,以后不再改变,故称为静态重定位。 3. 动态运行时装入(dynamic run-time loading) 程序装入内存后,并不立即将相对地址转换为绝对地址,地址转换推迟到程序真正要执行时才进行。装入内存后所有地址都是相对的。 优点: OS可以将一个程序分散存放于不连续的内存空间,可以移动程序,有利于实现共享。 能够支持程序执行中产生的地址引用,如指针变量(而不仅是生成可执行文件时的地址引用) 缺点:需要硬件支持(通常是CPU),OS实现较复杂--是虚拟存储的基础 4.1.2 程序的链接 源程序经过编译后,得到一组目标模块,再利用链接程序将这组目标模块链接,形成装入模块,根据链接时间的不同,链接分为: 静态链接 装入时动态链接 运行时动态链接 1. 静态链接(static-linking) 在程序运行前,先将各目标模块及它们所需的库函数,链接成一个完整的装入模块,以后不再拆开。要解决两个问题: 修改相对地址 变换外部调用符号 对多用户、多任务系统显然有冗余,比如多用户调用了sin(x),则每个目标代码中都有这部分代码,装入到内存则也都有这部分代码。 2. 装入时动态链接(dynamic-linking) 源程序编译得到的目标模块是在装入内存时,边装入边链接的,即在装入一个目标模块时,若发现一个外部模块调用事件,装入程序去找出相应的外部目标模块,并将它装入内存,同时修改相对地址。 优点 共享:多个进程可以共用一个目标模块,节省内存,减少文件交换。 便于修改和更新。各目标模块是分开存放的,便于修改。 3. 运行时动态链接(Run-time Dynamic Linking) 应用程序运行时,每次运行的模块可能不同。但事先又无法知道,在前两种链接方式中,只能所有模块都装入内存,并在装入时都链接在一起。显然低效。 运行时动态链接是将某些模块的链接推迟到执行时。即,执行时发现调用的模块未被装入,由OS找到该模块并装入,并将其链接到调用者模块上。 优点: 部分装入:一个进程可以将多种操作分散在不同的DLL中实现,而只将当前操作相应的D

文档评论(0)

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

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

1亿VIP精品文档

相关文档