第三章 UNIX的存储管理.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文档。上传文档
查看更多
第三章 UNIX的存储管理

第三章 UNIX的存储管理 3.1 UNIX存储管理简介 UNIX将内存划分为固定尺寸的片或页面。页面的大小均为2的整次幂,通常为4KB。UNIX采用了虚存系统,进程空间中连续的页在物理内存中不必是连续的。内存管理子系统维护进程的逻辑(虚)页与实际的物理内存之间的映射。当请求一个连续的内存块时,内存管理子系统可以通过分配若干物理上不连续的页面来满足这个请求。 虚存系统大大简化了页面分配的工作。内核为空闲页面维护一个键表结构。当进程需要页面时,内核从空闲键表中去掉足够的页面,当释放页面时,内核再将它们键入键表结构中。页的实际物理位置是无关紧要的。 页面级分配器有两个主要的客户(下图)。一个是虚存系统的分页系统,它为用户进程分配页面。在许多UNIX系统中,分页系统还为磁盘缓冲捉供页面。另一个客户是内核内存分配器,它为不同的内核子系统提供各种尺寸的内存诀,遁常这些内存块仅使用很短的一段时间。 物理内存 在各种UNIX系统中,大多数分配请求所要求的内存大小都远小于一个页面的大小,很明显不能用页面级分配器来实现这些功能。我们需要一套独立的机制来实现更细粒度上的内存分配。一个简单解决方案就是避免动态地进行内存分配。早期的实现的UNIX为i节点、proc结构等数据结构分配固定大小的内存。当系统需要临时保存路径名或网络报文时,系统借用盘块缓冲系统中的缓冲区。此外,针对特殊情况,还设计了一些ad hoc的分配机制,如终驱动程序中的clists结构。 这种策略有许多弊端。首先,它极不灵活。各种表或缓冲区的大小在系统启动或编译时就被固定下来,不能根据系统的请求而调整。系统开放人员根据典型系统的工作负荷来选择表格的缺省大小。尽管系统管理人员通常可以调节这些尺寸,但这样做缺少指导依据。如果某些表过于小,这些表就很可能溢出,并使整个系统在没有任何征兆的情况下崩渍。如果使所有的表都尽可能地大,则会造成内存的浪费。留给应用程序的内存相对减少。这也会造成系统的整体性能下降。 3.2 资源映射图分配器 资源映射图是一系列记录空闲内存的偶对base,size的集合(见下图)。一开始,资源映射图只有一个项,它的base就是内存池的基址,而size就是内存池的大小(见下图(b))。随着客户不断地分配和释放内存,内存池被逐渐打碎。内核为每一段连续的空闲内存分配一项。资源映射图按基址顺序组织,这样就可以很容易地连接两个邻接的空闲内存区。 利用资源映射图,内核可以用如下三种策略之一来满足分配请求: 最先适应分配。从第一个可以满足请求的空闲块中分配内存。这是最快的算法,但不利于减少碎片。 最佳适应匹配。选择可满足请求的空闲块中最小的一个分配内存。该策略的缺点是可能会造成若干非常小的、不可用的空闲块。 最差适应匹配。如果没有正合适的空闲诀,选择可瞒足请求的空闲块中最大的一个。这看上去似乎不合常理,但它是处于这样的考虑:保证分配后剩下的空间足够大,以便满足后续的请求。 没有一种算法可以很好地匹配所有的使用模式。UNIX使用最先适应匹配第略。 下图给出了一个管理1024字节大小内存的资源映射图。它支持两个操作: offset_t rmalloc(size); /* return offset of allocation region */ void rmfree(base,size); 资源映射图是一种简单的分配器,它主要有如下优点: 算法易于实现。 资源映射图并非仅能用于内存分配。它能管理任何有序的,需要分配和释放连续块 的对象(如页表项,以及以后将讲述的信号灯等)。 它可精确地分配请求所需的内存,不浪费空间。通常是将请求取整到4或8的倍数。 并不强制客户精确地释放分配的内存。 分配器完成邻接空闲块的合并,有利于内存的再利用。 然而,资源映射图分配器同时存在一些显著的缺点: 在分配器运行一段时间后,资源映射图碎片化非常严重,生成许多很小的空闲块。这将使利用率显著下降。 随着分片增加,资源图的大小也在增加,为每一片内存区建立一个表项。如果资源 图预配置成固定数目的表项,它就有可能溢出,分配器就不能再记录某些空闲内存 区了。 如果资源图动态的增长,它需要另外一个分配器来为自己分配内存。这成了递归问

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档