网站大量收购独家精品文档,联系QQ:2885784924

4第四章存储器管理第四版选读.ppt

  1. 1、本文档共85页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章????存储器管理 ; 4.1 存储器的层次结构 ;4.1.2 主存储器与寄存器(引导阅读)   1.主存储器   2. 寄存器 4.1.3 高速缓存和磁盘缓存(引导阅读) 1. 高速缓存 2. 磁盘缓存;高速缓存Cache: 少量的、非常快速、昂贵、易变的 内存RAM: 若干兆字节、中等速度、中等价格、易变的 磁盘: 数百兆或数千兆字节、低速、价廉、不易变的 由操作系统协调这些存储器的使用;4.2 程序的装入和链接; 对用户程序的处理步骤;4.2.1 程序的装入; 2. 可重定位装入方式;3. 动态运行时装入方式; 4.2.2 程序的链接;2. 装入时动态链接;3. 运行时动态链接; 4.2.3 重定位 ; ;用户程序 位于RAM中的 操作系统; 工作流程 : ;; 单用户系统缺点 : ; 4.3.2 固定分区分配 ; 预先把可分配的主存储器空间分割成若干个连续区域,称为一个分区。每个分区的大小可以相同也可以不同。但分区大每个分区装一个且只能装一个作业小固定不变。 (1) 分区大小相等,即使所有的内存分区大小相等,其缺点是缺乏灵活性。 (2) 分区大小不等。为了克服分区大小相等而缺乏灵活性的这个缺点,可把内存区划分成含有多个较小的分区、适量的中等分区及少量的大分区。;分区4 分区3 分区2 分区1 操作系统; 2.内存分配; 4.3.3 动态分区分配; 1. 分区分配中的数据结构 ;;;3. 分区分配操作 ; 内存分配流程 ;  2) 回收内存   当进程运行完毕释放内存时,系统根据回收区的首址,从空闲区链(表)中找到相应的插入点,此时可能出现以下四种情况之一:   (1) 回收区与插入点的前一个空闲分区F1相邻接,见图(a)。此时应将回收区与插入点的前一分区合并,不必为回收分区分配新表项,而只需修改其前一分区F1的大小。   (2) 回收分区与插入点的后一空闲分区F2相邻接,见图(b)。此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和。 ;  (3) 回收区同时与插入点的前、后两个分区邻接,见图(c)。此时将三个分区合并,使用F1的表项和F1的首址,取??F2的表项,大小为三者之和。   (4) 回收区既不与F1邻接,又不与F2邻接。这时应为回收区单独建立一新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置。 ; 内存回收时的情况 ; 4.3.4 基于顺序搜索的动态分区分配算法 ;1)首次适应法: 为作业选择分区时总是按地址从高到低搜索,只要找到可以容纳该作业的空白块,就把该空白块分配给该作业。 2)下次适应法 类似首次适应法每次分区时,总是从上次查找结束的地方开始,找到一个足够大的空白区分配。;3)最佳适应算法;4)最坏适应算法;4.3.5 基于索引搜索的动态分区算法 1)快速适应算法(quick fit) 2)伙伴系统(buddy system) 3)哈希算法;1. 快速适应算法 2. 伙伴系统   固定分区和动态分区方式都有不足之处。固定分区方式限制了活动进程的数目,当进程大小与空闲分区大小不匹配时,内存空间利用率很低。动态分区方式算法复杂,回收空闲分区时需要进行分区合并等,系统开销较大。伙伴系统方式是对以上两种内存方式的一种折衷方案。   伙伴系统规定,无论已分配分区或空闲分区,其大小均为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)

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

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

1亿VIP精品文档

相关文档