第4章存储管理-上PPT.ppt

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

第四章 存储器管理; 存储器管理内容;一、概述;一、概述;二、概述-程序的装入和链接;绝对装入方式;可重定位装入方式;MOV 1000 , 5;2.2.程序的链接;静态链接方式;装入时动态链接;运行时动态链接(Run-time Dynamic Linking);三、连续内存分配方式;3.1 单一连续分配;(2)内存的分配和回收 一般用户单道系统 用时分配,空闲回收 (3)内存的保护 为了防止用户程序破坏操作系统的代码和数据,要采取一些保护措施。 采用动态重定位时加一些保护措施,用到两个寄存器: 重定位寄存器:用户程序装入内存的起始地址 界限寄存器:存放用户程序的长度;物理地址;3.2.固定分区分配 ;3.内存分配 ;3.3 动态分区分配 ;;可变分区模式的工作流程 先看一个例子。一个计算机有2560K内存,采用可变分区模式管理内存,操作系统占用低地址的400K空间,剩余2160K的空间为用户区。 最初整个用户区是空闲的,就一个分区。然后随着用户程序的创建和撤销。分区的个数和大小位置开始变化。;;;;3.分区分配算法 ;首次适应算法 该算法要求空闲分区链按照空闲分区起始地址递增的次序排序。 在分配内存时,每次都从链首开始查找,直至找到一个长度大于用户程序的分区,就进行分配。 倾向于优先利用内存中低址部分的内存,从而保留高址的大空闲区,但是低址部分会留下许多难以利用的、很小的内存空闲区,增加查找时间 循环首次适应算法 该算法是从首次适应算法演变而来的。在分配内存时,不再是每次都从链首开始找,而是从上次找到的空闲分区的下一个节点开始找。到了链尾,再从链首开始找。 内存中空闲区分布的比较均匀,减少查找时间,但会缺乏大的空闲区。;最佳适应算法 所谓“最佳”是指分配内存时,总是把满足要求的最小分区分配给用户程序。 为了加快分配速度,可以把空闲分区链按照空闲分区的大小递增的顺序排序,则找到的第一个满足要求的分区即是最佳的。 每次分配剩下的内存是最小的,导致存储区留下许多难以利用的小空闲区 最坏适应法 将空闲区从大到小分配,每次都分配最大的空闲区。 优点是可使剩下的空闲区不至于太小,产生碎片的几率最小,适合中小作业,同时分配算法查找效率最高。 缺点导致缺乏大空闲区。 以上4种算法都为顺序搜索法;快速适应算法:又称为分类搜索法 将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表,在内存中设立一张管理索引表,该表的每一表项对应了一个空闲分区类型并记录了该类型空闲分区链表表头的指针。空闲分区的分类是根据进程常用的空间大小进行划分,如2KB,4KB,8KB等。 优点:查找效率高,根据进程的长度,寻找到能容纳它的最小空闲区链表,取下第一块进行分配即可。能保持大空间需要,也不会产生内存碎片, 分区归还主存时算法复杂,系统开销较大。 ;4.分区分配操作 ;回收内存 根据回收区的首址,从空闲区链表中找到相应的插入点,可能出现以下4种情况:;P2;伙伴系统   固定分区和动态分区方式都有不足之处。固定分区方式限制了活动进程的数目,当进程大小与空闲分区大小不匹配时,内存空间利用率很低。动态分区方式算法复杂,回收空闲分区时需要进行分区合并等,系统开销较大。伙伴系统方式是对以上两种内存方式的一种折衷方案。   伙伴系统规定,无论已分配分区或空闲分区,其大小均为2的k次幂,k为整数,l≤k≤m,其中:21表示分配的最小分区的大小,2m表示分配的最大分区的大小,通常2m是整个可分配内存的大小。 假设系统的可利用空间容量为2m个字,则系统开始运行时,整个内存区是一个大小为2m的空闲分区。在系统运行过程中,由于不断的划分,可能会形成若干个不连续的空闲分区,将这些空闲分区根据分区的大小进行分类,对于每一类具有相同大小的所有空闲分区,单独设立一个空闲分区双向链表。这样,不同大小的空闲分区形成了k(0≤k≤m)个空闲分区链表。; 当需要为进程分配一个长度为n的存储空间时,首先计算一个i值,使2i-1n≤2i,然后在空闲分区大小为2i的空闲分区链表中查找。若找到,即把该空闲分区分配给进程。否则,表明长度为2i的空闲分区已经耗尽,则在分区大小为2i+1的空闲分区链表中寻找。若存在2i+1的一个空闲分区,则把该空闲分区分为相等的两个分区,这两个分区称为一对伙伴,其中的一个分区用于分配,而把另一个加入分区大小为2i的空闲分区链表中。若大小为2i+1的空闲分区也不存在,则需要查找大小为2i+2的空闲分区,若找到则对其进行两次分割:第一次,将其分割为大小为2i+1的两个分区,一个用于分配,一个加入到大小为2i+1的空闲分区链表中;第二次,将第一次用于分配的空闲区分割为

文档评论(0)

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

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

1亿VIP精品文档

相关文档