- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux操作系统分析与实践第四讲:内存管理 《Linux操作系统分析与实践》课程建设小组 北京大学 二零零八年春季 *致谢:感谢Intel对本课程项目的资助 本讲主要内容 基础知识 Linux中的分段 Linux中的分页 物理内存的管理 基于区的伙伴系统的设计 Slab分配器 非连续存储器区的管理 基础知识:基本概念 存储器地址 逻辑地址(logical address) 机器语言指令中用来指定一个操作数或一条指令的地址,通常我们写程序中引用的符号地址是逻辑地址 线性地址(linear address/virtual address) 标识0-4GB范围的地址 物理地址(physical address) 送到地址线上的地址,用于对物理存储单元寻址 基础知识:基本概念(续) 三种地址之间的关系 通过硬件的分段和分页进行转换 逻辑地址->线性地址->物理地址 基础知识:硬件分段 为支持保护模式,段改由段描述符来描述 段基址 段限长 类型 访问该段所需的最小特权级 … 段描述符存放在GDT或LDT中(全局/局部描述符表)中 GDT/LDT的基址存放在寄存器GDTR/LDTR中 基础知识:硬件分段(续) 段寄存器 CS:代码段寄存器 DS:数据段寄存器 SS:堆栈段寄存器 ES、FS、GS… 每个段寄存器存放段选择符 GDT/LDT的索引 TI位:指定描述符是GDT还是LDT RPL:CPU的当前特权级 基础知识:硬件分段(续) 逻辑地址到线性地址的转换 基础知识:硬件分页 页 vs. 页框 页:数据块,可以在主存也可以在磁盘 页框:固定长度的RAM块 分页 Intel CPU处理4KB的页(why 4KB?) 通过设置CR3的PG位开启分页 数据结构 页目录 当前使用的页目录的物理地址在CR3中 页表 基础知识:硬件分页(续) 硬件的分页过程 发生在物理地址送地址线之前 MMU中进行 基础知识:硬件分页(续) TLB(Translation Lookaside Buffer) 硬件,用来加速页表查找 关键的一点:如果操作系统更改了页表内容,它必须相应的刷新TLB以使CPU不误用过时的表项 CR3发生改变时,硬件自动更新TLB中所有的表项 基础知识:硬件保护机制 段描述符 type标志:读/写/执行 页表项 User/Supervisor标志 Read/Write标志 硬件产生page fault 基础知识:扩展分页 允许页框为4MB(why?) 基础知识:物理地址扩展分页(PAE) 内核不能直接对1G以上的RAM进行寻址 市场需求刺激下,Intel进行了修补: 在Pentiume Pro体系结构,地址线36位,但仍必须把32位线性地址转换为36位 办法:页表项长度改为64位(因为32位已不够用),再增加一级页表,该页表4个表项,基址存在CR3中 基础知识:小结 如何面对不同的体系结构? 原理类似,实现略有不同 分段 能不能不要分段? 分页 硬件提供保护 性能的考虑:TLB 软件应该如何设计? Linux中的分段 内核代码段__KERNEL_CS:范围 0-4G;可读、执行;DPL=0 内核数据段__KERNEL_DS:范围 0-4G;可读、写;DPL=0 用户代码段__USER_CS:范围 0-4G;可读、执行;DPL=3 内核代码段__USER_DS:范围 0-4G;可读、写;DPL=3 Linux中的分段(续) TSS(任务状态段):存储进程的硬件上下文,进程切换时使用,每个CPU有一个 default_ldt:理论上每个进程都可以同时使用很多段,这些段可以存储在自己的ldt段中,但实际linux极少利用x86的这些功能,多数情况下所有进程共享这个段,它只包含一个空描述符 Linux中的分段:小结 由于历史原因,IA32体系结构仍然强制使用硬件分段 段式映射基地址总是0,逻辑地址与虚拟地址总是一致的 Linux中的分页 与体系结构无关的三级页表模型 pgd,页目录 pmd,页中级目录 pte,页表项 为什么使用三级页表 设计目标决定:可移植性 硬件特性决定:PAE Linux中的分页(续) Linux中的分页(续) 进程页表 各进程拥有自己的3G用户空间 内核占用最高的1G作为系统空间,系统空间由所有进程共享 Linux中的分页(续) 1G的内核空间 内核空间==物理内存空间 1G的后128MB用作实现非连续内存分配和固定映射的线性地址 Linux中的分页(续) 问题: 为什么系统空间要由所有进程共享? 系统空间和进程空间中的线性地址可能映射到同一物理地址么? 物理内存的管理 Linux2.4的内存管理 实现了基于区的伙伴系统 为了改进伙伴系统的效率,实现了slab分配器 非连续存储器区的
您可能关注的文档
最近下载
- TCCIAT0003-2019建筑施工承插型轮扣式模板支架安全技术规程.pdf
- T∕CTCA 6-2019 劳动防护手套.pdf
- 注册单元划分膝关节假体vlc g02.pdf VIP
- JTG5220—2020公路养护工程质量检验评定标准第一册土建工程全面解读.pptx
- 教育部留服务中心国(境)外学历学位认证评估程序和标准(试行)之附则.doc
- 土方工程课件.ppt
- 《医学细胞生物学》课件 第七章 细胞骨架与细胞运动.pptx
- 《排球正面双手垫球》教案排球正面双手垫球公开课教案1水.docx VIP
- 教育法学课件.ppt VIP
- 2023年人教版七年级语文下册期中试卷附参考答案 .pdf VIP
文档评论(0)