第9讲.内存管理.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9讲.内存管理

内存块实际变化 1 1 1 4 4 4 5 5 5 5 5 5 2 2 2 1 1 1 1 1 3 3 3 3 3 3 2 2 2 2 2 4 4 1 2 3 4 1 2 5 1 2 3 4 5 LRU算法解答 1 1 1 4 4 4 5 5 5 3 3 3 2 2 2 1 1 1 1 1 1 4 4 3 3 3 2 2 2 2 2 2 5 1 2 3 4 1 2 5 1 2 3 4 5 分页内存管理(7) 抖动 主存与辅存之间出现频繁的页面置换现象,称为抖动 原因:系统淘汰算法不合理 抖动的结果:系统效率急剧下降 分页管理的存储保护 CPU提供的越界保护 OS在页表中提供存取权限保护 快表 存储于高速缓冲内存中的页表相关信息 存放当前运行进程近期访问过的部分页表内容 目的:加快内存访问速度,提高系统运行效率 因高速缓冲较小,快表也需采用淘汰策略 分页内存管理(8) 分页管理的优缺点 优点 解决了碎片问题 动态分页请求提供虚拟内存的完整方案,扩大了“内存”空间(提高了内存利用率、进程并发度) 缺点 页的等长性:数据结构的跨页将影响共享和存取(破坏了程序及数据逻辑上的完整性) 需要硬件支持,增加硬件成本 中断处理、页面淘汰,增加了系统时间开销 如淘汰算法不好,将引起系统抖动 一般会因最后一页而出现页内碎片 分段内存管理 概述 分区管理、分页管理均按一维线性空间分配,很难利于程序和数据的共享 程序和数据的共享,要求存放它们的每个物理区域具有逻辑上的完整性 程序的模块,具备每个模块在逻辑上的完整性 按照程序逻辑上的相对完整性进行管理,即为段 每个段内首址均为0,并拥有连续的一维线性空间 将长短不一的逻辑部分作为一个段来管理,就是分段内存管理,也称段式内存管理 分段内存管理方便共享、存储保护、动态链接 分段内存管理(2) 段式管理的基本原理 用于分段管理的主要数据结构为段表 段表:主要包括段号、段起始地址、段长度、存取模式、访问位、是否在内存……每个进程拥有一个段表 段式管理的地址映射(段号S:段内位移W) (虚拟地址的)段号?(段表中)段首地址 物理地址=段首地址+段内位移W 分段管理中的虚拟内存实现 只有请求分段管理才提供虚拟内存 原理与请求分页管理一样 分段内存管理(3) 段的共享与保护 段的共享:只需将该进程的段表中某个表项的首地址项,设置为共享段首址即可 段的保护(两种方式) 地址越界保护 采用段表中的存取保护位(存取方式)实现段的保护 分段内存管理(4) 分段管理的优缺点 优点 可实现虚拟内存,其交换频率远低于分页管理 因逻辑上的完整性,更易实现共享 可根据需要实现段的动态增长 便于实现动态链接 缺点 比分页管理需要更多的硬件支持,成本增加 与分区管理一样,存在碎片问题 “动态增长”将增加额外的系统开销 段长受到系统可用空闲区空间大小的限制 如果段的淘汰策略不当,将发生系统抖动 段页式内存管理 概述 结合分页、分段管理的优点,产生了段页式管理 段页式:逻辑上(进程)分段,物理上(内存)分页 逻辑上分段,保持了模块逻辑上的完整性、易于共享和保护,以及段的动态增长 物理上分页,有效地减少碎片,提高内存利用率 基本思路 用进程分段,内存分页的方式,实现段页式管理 每个进程有一个段表,每个段有一个页表 系统通过对段表和页表的管理,实现段页式内存管理。在具体内存分配、回收等操作上,以段为基础 段页式内存管理(2) 起始地址 段表长度 段表地址寄存器 51 … 4 … … … 28 … 0 内存 块号 … 页 号 0段页表 98 … 3 … … … 12 … 0 内存 块号 … 页 号 2段页表   3 … 2   8 … 1   4 … 0 起始地址 页表长度 … 段号 段表     。。。     。。。     。。。    。。。 内存 段表与页表 段页式内存管理(3) 动态地址映射 程序的逻辑地址: 段号、段内位移 段内位移 = 段内页号 “+” 页内位移 由段表寄存器获得“段表起始地址”,并在段表中查找该段号的表项,得到该段页表起始地址 根据页号在页表中找到该页对应的内存块 计算该内存块的起始地址(页号*页大小) 物理地址=内存块起始地址+页内位移 与实验有关的内容介绍 与实验有关的内容介绍 Linux动态内存分配(1) malloc()申请一内存 realloc()调整内存大小 free()释放内存 Linux动态内存分配(2):逆向栈方式 obstack_init()初始化一个逆向栈 obstack_blank()或obstack_grow()在栈中加入新的可用空间 obstack_copy()对该地址空间进行操作 obstack_free()释放栈中空间 Linux动态内存分配(3):半自动式 alloca()

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档