Linux原理与结构 作者 郭玉东 全书 第6章.pptVIP

Linux原理与结构 作者 郭玉东 全书 第6章.ppt

  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文档。上传文档
查看更多
  在操作系统营造的虚拟社会中,除了被时钟管理部分管理的时间之外,另一个重要的基石就是空间。对空间的管理是操作系统的另一项核心工作。   操作系统所管理的空间可大致分为内存空间和外存空间,其中内存空间可被处理器直接访问的,是最基础的空间。内存空间是计算机系统中的重要资源,操作系统中的进程运行在内存空间中,操作系统本身也运行在内存空间中,离开了内存空间,计算机系统将无法运行。另一方面,内存空间又是计算机系统中的紧缺资源,操作系统及其管理的所有进程共享同一块物理内存空间,其容量似乎永远都无法满足进程对它的需求。因而有必要对内存空间实施严格的、精细的管理。   内存管理的工作艰巨而繁琐,可大致分成两大部分:物理内存管理部分管理系统中的物理内存空间,负责物理内存的分配、释放、回收等;虚拟内存管理部分管理进程的虚拟内存空间,负责虚拟内存的创建、撤销、换入、换出及虚拟地址到物理地址的转换等。物理内存管理的主要任务是快速、合理、高效地分配与回收物理内存资源以尽力提高其利用率;虚拟内存管理的主要任务是为进程模拟出尽可能大的内存空间并实现它们间的隔离与保护。在操作系统长期的发展过程中,内存管理部分由简到繁,不断演变,正逐步走向成熟。      为解决复杂的内存管理问题,Linux采用了分而治之的设计方法,将内存管理工作交给几个既相互独立又相互关联的管理器分别负责。这些内存管理器各司其职,互相配合,共同管理系统中的内存空间,如图6.1所示。 图6.1 内存管理系统的组成结构   Linux的物理内存管理子系统运行在内核空间,仅为内核提供服务。内核需要的物理内存通常是连续的,而且应该有内核线性地址(内核用线性地址访问物理内存)。如果按申请的规模划分,内核对物理内存的需求大致可分为中规模(几个物理上连续的页)、小规模(若干字节)和大规模(多个逻辑上连续的页)等几类。为了满足内核对物理内存的不同需求,Linux将物理内存管理子系统进一步划分成三个管理器,即伙伴内存管理器、对象内存管理器和逻辑内存管理器。   伙伴内存管理器是物理内存的真正管理者,是物理内存管理的基础。伙伴内存管理器以页块(若干个连续的物理页)为单位分配、释放、回收物理内存,虽比较粗放,但极为快速、高效,且不会产生外部碎片。   对象内存管理器建立在伙伴内存管理器之上,是一种细粒度的物理内存管理器。对象内存管理器将来自伙伴内存管理器的内存页块划分成小内存对象,以满足内核对小内存的需求,并负责将回收到的小内存对象组合成内存页块后还给伙伴内存管理器。   由于伙伴内存管理器只能提供物理上连续的内存,常常无法满足内核对大内存的需求,因而Linux实现了逻辑内存管理器,专门为内核提供逻辑上连续、物理上可不连续的大内存服务。   在系统初始化期间,Linux还提供了一个初始内存管理器Bootmem,用于向内核提供物理内存服务。但在伙伴内存管理器启动之后,Bootmem已让出管理权,被停止了工作。   除内核之外,内存管理的主要服务对象是进程。与内核不同,每个进程都需要一块容量足够大的独立的虚拟内存,用于暂存它的程序、数据、堆栈等。因而内存管理的另一个核心工作是利用有限的物理内存和外存设备为系统中的每个进程都模拟出一块连续的虚拟内存,并实现各虚拟内存之间的隔离与保护。Linux中负责进程内存管理工作的是虚拟内存管理器和用户内存管理器。   用户内存管理器运行在用户空间中,负责进程虚拟内存(在堆中)的动态分配、释放与回收(如库函数malloc()、free()等)。用户内存管理器一般在函数库(如Libc)中实现,不属于内核的组成部分,但需要内核中的虚拟内存管理器为其提供帮助。   本章主要分析Linux的物理内存管理部分,虚拟内存管理部分将在第8章中讨论。      伙伴内存管理器管理系统中的物理内存,因采用伙伴算法而得名。所谓物理内存就是计算机系统中实际配置的内存。根据处理器与物理内存的组织关系可将计算机系统分成两大类。在UMA(Uniform Memory Access)系统中,每个处理器都可以访问到所有的物理内存,且访问速度都相同。在NUMA(Non-Uniform Memory Access)系统中,处理器虽可访问到所有的物理内存,但访问速度略有差异。 事实上,一个NUMA系统由多个节点组成,每个节点都有自己的处理器和物理内存,处理器对节点内部内存的访问速度较快,对其它节点的内存访问速度较慢。UMA是NUMA的特例,只有一个节点的NUMA就是UMA。   计算机系统中的物理内存被统一编址,其中的每个字节都有一个物理地址,只有通过物理地址才能访问到物理内存单元。在一个计算机系统中,可以使用的所有物理地址的集合称为物理地址空间。物理地址空间的大小取决于地址线的位数。 物理地址空间中

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档