内存管理---非连续存储分配

连续分配缺点:必须连续,外碎片和内碎片,动态修改困难,内存利用效率低。
非连续目标:调高内存利用率和管理灵活性
(1)允许程序使用非连续地址空间
(2)允许共享代码与数据
(3)支持动态加载和动态链接
方法:段式存储管理(segmentation):同一段在内存中是连续的,段之间可以不连续。页式存储管理(paging):页与页之间是不连续的。
段式存储管理:进程的段地址空间由多个段组成,包括 主代码段,子模块 代码段,公用库代码段,堆栈段(stack),堆数据(heap),初始化数据段,符号表等。实现更好的分离与共享。
段的概念:表示访问方式和存储数据等属性相同的一段地址空间。
段访问:逻辑地址二元组(s,addr)表示 s—段号, addr—段内偏移
页式存储管理页帧(帧—物理页面,frame,page frame)—把物理地址空间划分成大小相同的基本分配单元,2的n次幂,如512,4096,8192(机器比较好处理)。页面(页—逻辑页面,page):把逻辑地址空间划分成大小相同的基本分配单元。 :帧和页的大小必须是相同的。
页面到页帧的转换:逻辑地址到物理地址的转换—–页表和MMU/TLB(存储管理单元/快表)。
:物理内存被划分成大小相等的帧,内存物理地址的表示:二元组(f,o) f–帧号(F位,共有2^F个帧),o—帧内偏移(S位,每帧有2^S字节)。物理地址 = f*2^S + o.
:

页表结构:每一个进程都有一个页表—每一个页面对应一个页表项,随进程运行状态而动态变化,页表基址寄存器(PTBR)
页表项组成:帧号:f 和 页表项标志:存在位(resident bit),修改位(dirty bit),引用位(clock/reference bit)
问题:内存访问性能问题(访问两次内存–页表项和数据),页表大小问题。
解决:缓存(caching)—快表,间接访问(indirection)—多级页表,反置页表。
页寄存器和反置页表:让页表与物理地址空间的大小相对应。
页寄存器:每一帧与一个页寄存器关联,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值