- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 存储器管理(10-5-13)
存储管理概述 内存的作用 计算机的存储体系回顾 内存管理的目的 操作系统的“方便”性 便于用户装入程序,无须了解底层细节 可实现动态的存储空间伸缩,适应不同程序的需要 操作系统的“合理”性 合理分配内存空间,保证多道程序的顺利运行 合理保护内存空间,防止各种可能的破坏泄漏 操作系统的“有效性” 有效保持内存空间的可用性,防止对资源的浪费 有效实现“小空间大容量”,提高计算机的适应性 有效配合CPU的调度过程,实现系统运行的稳定 内存管理的任务 内存空间的管理、分配和回收 内存空间的使用情况记录——位图、分配表、分区表 内存空间的分配与回收——定长与不定长、静态与动态 内存空间的地址映射(转换) 物理地址与逻辑地址的差别 内存空间的共享和保护 内存共享:进程与线程、中间件应用 内存保护:如何防止地址越界或操作越权? 内存空间的扩充 虚拟存储:如何使用小内存空间来运行大的程序? 如果程序为多个模块,则需要进行链接;单个目标模块无须进行链接。在Unix/Linux链接有多种方式。单模块的装入方式: 绝对装入方式 可重定位方式 1、Absolute Loading Mode(ALM) 绝对装入方式:在编译时,已经知道程序要驻留在内存的位置,如地址1024开始,则编译程序直接产生从该地址向上开展的目标代码,目标代码中全部采用绝对地址。 2.重定位装入方式 ALM存在问题:多道程序环境下,编译程序无法预先知道程序的装入位置。 重定位装入:目标模块的起始地址通常是从0开始,其他地址也是相对于起始地址计算的。在程序装入时,把目标程序中的指令和数据的相对地址(有效地址)修改成装入位置处内存的物理地址。 2、Relocatable Loading Mode-RLM 静态重定位:地址变换只是在装入时一次性完成,以后不再改变。 2.动态运行时装入方式 可重定位装入方式存在问题: 虽然可以把程序装入到内存的任意位置,但不允许程序在内存中移动位置。 如果程序在内存中移动,就必须对程序中的地址进行修改才能正常运行。 动态运行时装入程序:把装入模块装入内存时,不把程序中的地址转换成实际的物理地址,而是在运行时才进行地址转换。 3、Dynamic Run-Time Loading 动态重定位:在程序执行时,每当访问指令和数据时,将要访问的指令和数据的相对地址转换成绝对地址。 链接的主要功能:把经汇编、编译所得到的一组目标模块和所需的库函数目标模块一起,装配成一个完整的装入模块。有三种链接方法: 静态链接 装入时动态链接 运行时动态链接 链接需要解决两个问题: 修改相对地址:编译产生的目标模块起始地址为0,除第一块外,其余的相对地址全部要修改。 变换外部调用符号:把外部调用符号变换成相对地址—形成可执行文件。 1、静态链接 程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装入模块,以后不再拆开。 2、装入时动态链接 优点: 便于软件的版本修改和更新:只要对需要修改的模块修改后编译即可,保证所有的软件同步升级。 便于实现目标模块的共享:实现多个模块共享一个模块、而不要每个程序都含有该模块的拷贝。 3、运行时动态链接 装入链接的问题:程序运行期间、整个模块的结构不变—静态结构。在运行期间有些模块(如错误处理)可能不用、但一直占据内存。 运行时链接:在运行期间需要一个模块才装载一个模块。 4.3 连续分配存储管理方式 连续分配存储管理有两种方式: 单一连续分配方式:在内存中仅驻留一道程序,整个用户区为一个用户独占。 适用于:单用户、单任务OS。 分区式分配方式:可以分固定分区和动态分区。 固定分区式:把内存用户区划分成若干个固定大小的区域,每个区域驻留一道程序。 动态分区:根据用户程序大小、动态地对内存进行划分。特点:内存划分成多少分区是可变的。 4.3.1 单一连续分配方式 内存划分: 系统区:仅给操作系统使用(可以放在低端或高端),由于中断向量驻留在低端、一般放在低端。 用户区:提供给用户使用的区域。 4.3.2 固定分区分配 划分分区的方法: 分区大小相等:把内存划分成大小相等的区域。 缺点:程序小浪费空间、程序大不能运行。 分区大小不等: 优点:大、小程序都可运行。 4.3.3 动态分区分配 动态分区分配 动态分区分配需要解决三个问题:分配管理的数据结构、分配算法、分区的分配和回收。 1、分区分配中的数据结构: 空闲分区表: 空闲分区链: 2、动态分区分配算法 动态分区分配算法: 首次适应算法FF—First Fit 循环首次适应算法NF—Next Fit 最佳适应算法BF—Best Fit 最坏适应算法 WF—Worst Fit 练习 3、分区分配操作 分区分配操作:分配与回收。 分配: 内存的回收 当一个
文档评论(0)