[操作系统]4--非连续分配.ppt

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

* 存储器的层次: 分为寄存器、主存(内存)和 辅存(外存)三个层次。 主存:高速缓冲存储器、主存储器、磁盘缓冲存储器, 主存又称为可执行存储器; 辅存:固定磁盘存储器、可移动的外部存储器; 其可长期保存数据,但不能被处理器直接访问。 ? 本章针对的是主存(内存)的管理 * 存储器管理的主要功能 内存(主存)空间的分配与回收 逻辑地址到物理地址的转换 内存信息(数据)的共享与保护 内存的逻辑扩充(虚拟存储器的实现) 一、相关概念 逻辑地址:目标代码的相对编址 物理地址:内存存储单元的编址 逻辑地址空间:目标代码用逻辑地址编址对应的区域 内存存储空间:内存若干存储单元用物理地址编址对应 的区域 重定位:逻辑地址转换为物理地址的操作(过程) ? 为什么要进行重定位 例: ? 重定位的方式 静态重定位:目标代码装入内存时,一次性进行 逻辑地址到物理地址的地址转换。 动态重定位:目标代码装入内存时,先不进行地址 转换(即原代码装入),在执行时, 再实施地址转换。 二、程序的链接与装入 * 程序的链接(模块拼接) 静态链接:装入前先链接 动态链接:装入时(或在执行时)才进行链接 * 程序的装入 绝对装入:目标代码与装入位置地址相一致; 静态重定位装入:一边装入,一边实现地址转换; 动态重定位装入:原代码装入,待执行时再进行 地址转换。 ?无论采用何种方式装入,均涉及到内存共享与分配问题 * 分配方式 连续分配:为作业(进程)分配地址连续的存储空间 离散分配:为作业(进程)分配不连续存储空间 三、连续分配存储管理方式 单一连续分配 固定分区分配 可变(动态)分区分配 可重定位分区分配 1)单一连续分配 适用于早期单用户单任务OS 2)固定分区分配 * 算法思想 内存可用区划分成若干个大小固定的存区,每个存区分别装入一道作业的代码(数据)。 * 算法实现 建立分区说明表,记录各分区大小、地址及分配情况 例: 分配:查分区说明表,找到一个足够大 的空闲分区分配之; 回收:将回收分区对应的分区说明表状 态改为“空闲”。 3)动态(可变)分区分配 * 算法思想 事先不划分分区,待作业需要分配内存时,再按需分配划分分区(分区的大小及个数不固定)。 * 算法实现 建立相关数据结构,根据分配策略(或算法)设定算法程序。 数据结构 空闲分区表或 空闲分区链表 例: 分配策略(算法)<P125流程图> 首次适应算法 循环首次适应算法 最佳适应算法 最差适应算法 分配程序 实现分配的算法程序 回收算法 前邻接合并 后邻接合并 前、后邻接合并 不邻接处理 * 优、缺点 按需分配,可解决浪费问题; 分配算法复杂,会产生碎片; 邻接合并系统开销大。 * 碎片问题 碎片:可变分区分配过程中形成的若干个非常小的无法 再利用的小分区。 解决方法: 4)可重定位分区分配 * 算法思想 在可变分区分配算法的基础上,采用动态重定位方式装入程序(数据)。当无足够大的分区供分配时,若总空闲存储容量够用,则将各分区中的内容向内存一端移动(紧凑),使另一端形成一个大的空闲分区,然后再分配。 例:前例若要为作业10分配120k的存储空间,因无足够 大分区(总空闲容量290k),则先进行合并处理。 * 算法实现 为每个作业(分区)设置一个重定位寄存器,用以 存放对应分区首地址;在进行移动拼接后,只需将 重定位寄存器的值修改为新的地址即可; 为方便移动(搬家)建立相应的数据结构(静态链表、作业表等)。 * 优、缺点 既可实现动态分区分配,又适时解决了碎片问题; 但移动内存需增加系统开销。 可采用离散分配方式解决此问题 四、基本分页存储管理方式 1)算法思想和算法实现 * 算法思想 作业(进程)地址空间被分成大小相同的若干页 内存存储空间被分成大小与页相同的若干块 将连续的页分配并存放到不连续的若干内存块中 建立页表,记录每一页对应的存储块的块号 例: * 算法实现 建立辅助数据结构 页表:每个作业(进程)一张表 空闲块链表:记录所有未分配空闲块情况(供分配用) 存储分块表:记录内存每一块的使用情况 确定分页的页面大小 太大:存在页内碎

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档