第三讲 非连续地址分配.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三讲 非连续地址分配 非连续地址分配概念 段式存储器管理 页式存储器管理 段页式存储器管理 非连续分配的设计目标 分配给程序的物理内存必须连续 存在外碎片和内碎片 内存分配的动态修改困难 内存利用率较低 允许一个程序的使用非连续的物理地址空间 允许共享代码与数据 支持动态加载和动态链接 连续分配的缺点 ■ 非连续分配的设计目标:提高内存利用效率和管理灵活性 ■ * 非连续内存分配的实现 如何实现虚拟地址和物理地址的转换 软件实现 (灵活,开销大) 硬件实现 (够用,开销小) 如何选择非连续分配中的内存分块大小 段式存储管理 (segmentation) 页式存储管理 (paging) 非连续分配需要解决的问题 ■ 非连续分配的硬件辅助机制 ■ 段地址空间 进程的段地址空间由多个段组成 主代码段 子模块代码段 公用库代码段 堆栈段(stack) ■ 段式存储管理的目的 更细粒度和灵活的分离与共享 ■ 堆数据(heap) 初始化数据段 符号表等 代码子 模块 堆栈 符号表 主代码 逻辑地址空间 公用库 段式地址空间的不连续二维结构 堆栈 逻辑地址空间 数据段 代码段 堆 函数库 代码 程序数据 堆栈 物理地址空间 堆数据 用户代码 段地址空间的逻辑视图 1 3 2 4 逻辑地址空间 1 4 2 3 物理地址空间 段式存储管理 段访问机制 单地址实现方案 0 n1+n2 s addr 段的概念 段表示访问方式和存储数据等属性相同的一段地址空间 ■ 对应一个连续的内存“块” 若干个段组成进程逻辑地址空间 段访问:逻辑地址由二元组(s, addr)表示 s — 段号 addr — 段内偏移 ■ “段基址+段内偏移”实现方案 s addr n1 0 0 n2 段访问的硬件实现 0 程序段 1000 1500 物理地址 段基址 寄存器 + 1000 是 段表 段号 基址 长度 段描述符 操作系统设置段表 CPU 0 19 9 10 段号 偏移 程序P 逻辑地址 段长度 寄存器 ≤ 500 内存异常 否 MMU 页式存储管理 ■ 页帧(帧、物理页面, Frame, Page Frame) 把物理地址空间划分为大小相同的基本分配单位 2的n次方,如512, 4096, 8192 ■ 页面(页、逻辑页面, Page) 把逻辑地址空间也划分为相同大小的基本分配单位 帧和页的大小必须是相同的 ■ 页面到页帧 逻辑地址到物理地址的转换 页表 MMU/TLB 页面和帧的数量不一定相同 帧 (Frame) ■ 物理内存被划分成大小相等的帧 内存物理地址的表示:二元组 (f, o) f o 1 S F+S 物理地址 f o (f,o) (0,0) (2F-1,2S-1) 物理地址空间 f — 帧号 (F 位, 共有2F 个帧) o — 帧内偏移 (S 位, 每帧有2S 字节) 物理地址 = f * 2S + o 基于页帧的物理地址计算实例 ■ 假定 16-bit的地址空间 9-bit (512 byte) 大小的页帧 物理地址表示 = (3, 6) 3 6 物理地址 = 2S*f + o 0 1 9 物理地址 16 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 10 F=7 S=9 f=3 o=6 实际物理地址 =2^9 *3+ 6=1536+6=1542 1542 0 (0,0) 物理地址空间 ■ 物理地址计算 f o (3,6) 页(Page) ■ 进程逻辑地址空间被划分为大小相等的页 页内偏移 = 帧内偏移 通常:页号大小 ≠ 帧号大小 p o 逻辑地址: 1 S P+S 2n-1 =(2P-1, 2S-1) (0,0) 逻辑地址空间 进程逻辑地址的表示:二元组 (p, o) p — 页号 (P 位, 2P 个页) o — 页内偏移 (S 位, 每页有2S 字节) 虚拟地址 = p * 2S + o p o (p,o) 页式存储中的地址映射 页到帧的映射 逻辑地址中的页号是连续的 物理地址中的帧号是不连续的 不是所有的页都有对应的帧 (f1,o1) (f2,o2) 物理地址空间 逻辑地址空间 (p2,o2) (p1,o1) 页表 页表保存了逻辑地址— 物理地址之间的映射关系 (p,o) 逻辑地址空间 物理地址空间 (f,o) 1 16 9 10 f o 物理地址 页表 p f CPU 1 20 9 10 p o 程序P 逻辑地址 页表基址 页号 帧号 页表结构 每个进程都有一个页表 ■ 每个页面对应一个页表项 页表基址寄

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档