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

03Linux内存管理2010091607.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
存储系统结构 MMU Memory management Unit Virtual Memory Svm = SRAM + Sswap 概述 内存管理 allocate deallocate keeping track 合理地管理系统的内存资源,使多个进程能够在有限的物理存储空间内共享,安全并高效地运行。 Linux内存管理四大功能 内存分配与回收 地址变换 内存保护 内存扩充 内存分配与回收 内存分配 为进入系统准备运行的程序分配内存空间 内存回收 当程序运行结束后回收其所占用的内存空间 存储分配与回收的主要要素 描述存储分配的数据结构 表格、链表或队列等 占用区、空闲区 分配策略 利用率、系统性能 地址变换 符号地址 逻辑地址 物理地址 地址变换 静态地址变换 动态地址变换 内存保护 防止程序越界和越权行为 不允许用户进程访问操作系统的存储区域 每个进程都在自己的地址空间中运行,互不干扰 内存保护的措施 界限保护 设置界限寄存器,限制进程的活动空间。 保护键 为共享内存区设置一个读/写保护键,在CPU中设置保护键开关,它表示进程的读/写权限。只有进程的开关代码和内存区的保护键匹配时方可进行访问。 保护模式 将CPU的工作模式分为用户态与核心态。核心态下的进程可以访问整个内存地址空间,而用户态下的进程只能访问在界限寄存器所规定范围内的空间。 内存扩充 借用外存空间来扩展内存空间,方法是让程序的部分代码进入内存,其余驻留在外存,在需要时再调入内存。 内存扩充实现方法: 虚拟存储(virtual memory) 程序的部分代码的换入和换出完全由系统动态地完成,用户察觉不到。 用户看到的是一个比实际内存大得多的“虚拟内存”。 方便用户编程,存储扩充的性能好 存储管理方案 单一连续存储管理 分区存储管理 页式存储管理 段式存储管理 段页式存储管理 单一连续存储管理 在内存中只存放一个应用程序,这个应用程序和操作系统共享存储器 单用户、单任务的操作系统 DOS 静态地址变换 采用界限保护 不允许用户程序访问操作系统区域 覆盖技术 分区存储管理 多道程序系统 内存划分为若干个分区,操作系统占用其中一个分区,其他分区由用户程序使用,每个分区容纳一个用户程序。 分区方法 固定分区 内部碎片 可变分区 外部碎片 页式 存储管理 (1) (分散存储) 页面(page) 将程序的逻辑地址空间分成若干大小相等的片段 页帧(page frame) 把内存空间也按同样大小分为若干区域 程序的逻辑地址 页号+页内位移 页式 存储管理 (2) (分散存储) 页表 记录了进程的页面与块号的对应关系 页式 存储管理 (3) (分散存储) 页式 地址变换 段式 存储管理 (1) 应用程序 一个主模块、若干个子模块、数据模块等 划分模块的好处 可以分别编写和编译源程序 可以实现代码共享、动态链接等编程技术。 段式存储分配 为了适应用户对程序结构的需求而设计的存储管理方案 程序的地址空间由若干个大小不等的段组成。 段(segment)是逻辑上完整的信息单位,划分段的依据是信息的逻辑完整性以及共享和保护等需要。 分段后,程序的逻辑地址由段号和段内位移两部分组成。 段式 存储管理 (2) 分页 与 分段 的区别 段是信息的逻辑单位,长度不固定,由用户进行划分; 页是信息的物理单位,长度固定,由系统进行划分,用户不可见。 段式分配 以段为单位分配内存,每个段分配一个连续的分区 段与段间可以不相邻接 用段表描述进程的各段在内存中的存储位置 段表中包括段长和段起始地址等信息 段式 存储管理 (3) 段式分配 段式 存储管理 (4) 段式 地址变换 段 页 式 存储管理 分配思想:段式划分,页式存储 把程序的各段按页式分配方式存储 每段一个页表 另设一个段表,指示各段的页表位置 程序的逻辑地址 段号+页号+页内地址 地址变换过程是: 先根据段号查段表 再用页号查页表 最后与页内地址合并即可得到实际内存地址 优点:存储利用率高,满足各种应用需求。 缺点:过于复杂,软硬件开销大。 Page (1) page descriptor include/linux/mm.h struct page{ …. } Page (2) unsigned long flag include/linux/flags.h enum pageflags { …… } ; Page (3) atomic_t count; 0表示页可用,n表示n个进程可访问页中数据 struct list_head list ; next 和 prev 构成双向链表 struct address_space *mapping ; 指向addr

文档评论(0)

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

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

1亿VIP精品文档

相关文档