




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第三章Linux内存管理 3 1内存管理概述3 2内存管理原理3 3Linux内存管理实现 2 存储系统结构 MMUMemorymanagementUnitVirtualMemorySvm SRAM Sswap 3 概述 内存管理allocatedeallocatekeepingtrack合理地管理系统的内存资源 使多个进程能够在有限的物理存储空间内共享 安全并高效地运行 Linux内存管理四大功能内存分配与回收地址变换内存保护内存扩充 4 内存分配与回收 内存分配为进入系统准备运行的程序分配内存空间内存回收当程序运行结束后回收其所占用的内存空间存储分配与回收的主要要素描述存储分配的数据结构表格 链表或队列等占用区 空闲区分配策略利用率 系统性能 5 地址变换 符号地址逻辑地址物理地址地址变换静态地址变换动态地址变换 6 内存保护 防止程序越界和越权行为不允许用户进程访问操作系统的存储区域每个进程都在自己的地址空间中运行 互不干扰内存保护的措施界限保护设置界限寄存器 限制进程的活动空间 保护键为共享内存区设置一个读 写保护键 在CPU中设置保护键开关 它表示进程的读 写权限 只有进程的开关代码和内存区的保护键匹配时方可进行访问 保护模式将CPU的工作模式分为用户态与核心态 核心态下的进程可以访问整个内存地址空间 而用户态下的进程只能访问在界限寄存器所规定范围内的空间 7 内存扩充 借用外存空间来扩展内存空间 方法是让程序的部分代码进入内存 其余驻留在外存 在需要时再调入内存 内存扩充实现方法 虚拟存储 virtualmemory 程序的部分代码的换入和换出完全由系统动态地完成 用户察觉不到 用户看到的是一个比实际内存大得多的 虚拟内存 方便用户编程 存储扩充的性能好 8 第三章Linux内存管理 3 1内存管理概述3 2内存管理原理3 3Linux内存管理实现 9 存储管理方案 单一连续存储管理分区存储管理页式存储管理段式存储管理段页式存储管理 10 单一连续存储管理 在内存中只存放一个应用程序 这个应用程序和操作系统共享存储器单用户 单任务的操作系统DOS静态地址变换采用界限保护不允许用户程序访问操作系统区域覆盖技术 11 分区存储管理 多道程序系统内存划分为若干个分区 操作系统占用其中一个分区 其他分区由用户程序使用 每个分区容纳一个用户程序 分区方法固定分区内部碎片可变分区外部碎片 12 页式存储管理 1 分散存储 页面 page 将程序的逻辑地址空间分成若干大小相等的片段页帧 pageframe 把内存空间也按同样大小分为若干区域程序的逻辑地址页号 页内位移 13 页式存储管理 2 分散存储 页表记录了进程的页面与块号的对应关系 14 页式存储管理 3 分散存储 页式地址变换 15 段式存储管理 1 应用程序一个主模块 若干个子模块 数据模块等划分模块的好处可以分别编写和编译源程序可以实现代码共享 动态链接等编程技术 段式存储分配为了适应用户对程序结构的需求而设计的存储管理方案程序的地址空间由若干个大小不等的段组成 段 segment 是逻辑上完整的信息单位 划分段的依据是信息的逻辑完整性以及共享和保护等需要 分段后 程序的逻辑地址由段号和段内位移两部分组成 16 段式存储管理 2 分页与分段的区别段是信息的逻辑单位 长度不固定 由用户进行划分 页是信息的物理单位 长度固定 由系统进行划分 用户不可见 段式分配以段为单位分配内存 每个段分配一个连续的分区段与段间可以不相邻接用段表描述进程的各段在内存中的存储位置段表中包括段长和段起始地址等信息 17 段式存储管理 3 段式分配 18 段式存储管理 4 段式地址变换 19 段页式存储管理 分配思想 段式划分 页式存储把程序的各段按页式分配方式存储每段一个页表另设一个段表 指示各段的页表位置程序的逻辑地址段号 页号 页内地址地址变换过程是 先根据段号查段表再用页号查页表最后与页内地址合并即可得到实际内存地址优点 存储利用率高 满足各种应用需求 缺点 过于复杂 软硬件开销大 20 第三章Linux内存管理 3 1内存管理概述3 2内存管理原理3 3Linux内存管理实现PageMemoryzonePageframe空闲内存的管理内存的分配和回收Slab 21 Page 1 pagedescriptorinclude linux mm hstructpage 22 Page 2 unsignedlongflaginclude linux page flags henumpageflags 23 Page 3 atomic tcount 0表示页可用 n表示n个进程可访问页中数据structlist headlist next和prev构成双向链表structaddress space mapping 指向address spacestructlist headlru 通过next和prev指向LRU LeastRecentlyUsed List中的页面void virtual 指向页所对应的virtualaddress 24 MemoryZone 1 composedofpageframes physicalpages include linux mmzone hZONE DMAusedforDMApageframesZONE NORMALnon DMApageswithvirtualmappingZONE HIGHMEMpageswhoseaddressesarenotcontainedinthevirtualaddressspacestructzone Fieldscommonlyaccessedbythepageallocator 25 MemoryZone 2 spinlock tlock spinlock lockforthedescriptoritselfunsignedlongfree pages thenumberoffreepagesthatareleftinthezonenr free pages unsignedlongpages min pages low pages high spinlock tlru lock structlist headactive list listoftheactivepagesstructlist headinactive list alistofpagesthatcanbereclaimedintall unreclaimable if1 Allpagespinned structfree areafree area MAX ORDER 26 MemoryZone 3 for each zone definefor each zone zone for zone pgdat list node zones zone zone next zone zone is highmem staticinlineintis highmem structzone zone return zone zone zone pgdat node zones ZONE HIGHMEM is normal staticinlineintis normal structzone zone return zone zone zone pgdat node zones ZONE NORMAL 27 PageFrame 1 Apageframeistheunitofmemorythatholdsapage 分配PageFrames函数 2n alloc pages 和alloc page include linux gfp h definealloc pages gfp mask order alloc pages node numa node id gfp mask order definealloc page gfp mask alloc pages gfp mask 0 staticinlinestructpage alloc pages node intnid gfp tgfp mask unsignedintorder 28 PageFrame 2 get free page 和 get dma pages define get free page gfp mask get free pages gfp mask 0 define get dma pages gfp mask order get free pages gfp mask GFP DMA order thepagesrequestedbefromZONE DMAbyaddingthatflagontothepageflagmask 29 PageFrame 3 释放PageFrames函数 free page 和free page define free page page free pages page 0 definefree page addr free pages addr 0 30 空闲内存的管理 1 记录空闲内存位示图 链表页块组 pageblock 连续的页帧free area数组数组第k项对应的链表记录系统中所有2k大小的空闲页块组的起始页帧号空闲链表双向链表 31 空闲内存的管理 2 伙伴 buddy 将内存按相同大小的页块组划分并编号 则以偶数号开始的相邻的两个页块组称为伙伴例如 如页块组大小为2帧 则0号页块组 0 1帧 与1号页块组 2 3帧 是伙伴 2号页块组 4 5帧 与3号页块组 6 7帧 是伙伴 但1号页块组与2号页块组不是伙伴 位示图 bitmap 由若干个字节的二进制位构成 每位对应一对伙伴 数组第k项对应的位示图记录2k大小的一对伙伴的分配使用情况 为1表示对应的伙伴中有一个是空闲的页块 为0表示对应的两个伙伴页块都空闲或都不空闲 32 内存的分配与回收 1 BuddysystemToreduceexternalfragmentation buddysystemmaintainsalistofavailableblocksofmemory Linux采用伙伴 buddy 算法来分配和回收内存 内存的分配和回收的空间大小都是2k大小的页块组 内存分配对于i386系统 内存一次分配的最小尺寸是4KB 20 4KB 最大为2MB 29 4KB 分配页函数structpage fastcall alloc pages unsignedintgfp mask unsignedintorder structzonelist zonelist 33 内存的分配与回收 2 当要分配内存时 先根据需要确定要分配的页块组大小 如需要n页 2k 1 n 2k 则分配一个2k大小的页块组 分配时 在free area k 的链表中找一个空闲页块组 将其从链表中删除 返回首地址 若没有2k大小的页块组 就在free area k 1 的链表中取下一个 一分为二 分配一个 将另一个链入free area k 的链表中 如果没有2k 1大小的页块组就进一步地分裂更大的页块组 34 内存的分配与回收 2 内存回收释放页函数staticinlinevoid free pages bulk structpage page structpage base structzone zone structfree area area unsignedlongmask unsignedintorder 回收内存时 将释放的页块组链入适当的链表中 如果该页块组的伙伴为空闲 位示图的对应位为1 则将其与伙伴合并 加入到下一个数组项的链表中 如果还能合并就进一步合并下去 每次分配或回收操作后都要修改free area数组的相应的链表和位示图 Merge归并 合并 35 内存的分配与回收 3 Buddysystem评价优点buddy算法可以尽量减少内存碎片 增加连续内存分配成功的几率 使总体效率显著提高 缺点这个算法可能造成空间的浪费 因为它每次分配的内存是2的整数幂个页 如果需要的内存量是33KB 则实际分配的是16个连续的页帧 64KB 将近50 的内存就浪费掉了 总结 算法的高效率是通过牺牲内存资源利用率换来的 36 SlabAllocator 1 theslaballocatorismadeupofmanycaches eachofwhichstoresmemoryareasofdifferentsizes Acacheisfurthersubdividedintocontainerscalledslabs Eachslabismadeupofoneormorecontiguouspageframes 37 SlabAllocator 2 specializedcachetask struct inode dentryGeneralcache32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072bytecat proc slabinfo 38 SlabAllocator 3 CacheDescriptor 39 SlabAllocator 4 CacheDescriptor kmem cache 40 第三章Linux内存管理 3 1内存管理概述3 2内存管
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023职业健康在线考试试题及答案
- 供应室考试试题及答案
- 文学概论模拟试题及答案
- 三级安全教育考试试题及答案
- 烟草评级模拟试题及答案
- 2025年胃镜室三基三严理论考试试题及答案
- 钢铁产品考试试题及答案
- 水工建筑物试题及答案
- 农田水利建设的科学规划
- 民办教育机构合规运营与品牌建设2025年市场趋势报告
- 《无机化学》第六版 课件 第1章 物质及其变化
- T-CCCI 001-2024 企业文化建设与管理评价标准
- 4M变更管理培训
- 2025年天文知识竞赛试题及答案
- 气道温湿化管理课件
- 2025版办公楼物业管理与智能化系统集成合同
- 民办教育研究院管理办法
- 2025年上半年入党积极分子培训班结业考试题及答案
- DB65∕T 3119-2022 建筑消防设施管理规范
- 2025方便速食行业线上消费趋势洞察
- 中职女生健康教育
评论
0/150
提交评论