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

来源:互联网 发布:知乎客服电话是多少 编辑:程序博客网 时间:2024/05/22 06:25

连续分配缺点:必须连续,外碎片和内碎片,动态修改困难,内存利用效率低。
非连续目标:调高内存利用率和管理灵活性
(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)—多级页表,反置页表。
页寄存器和反置页表:让页表与物理地址空间的大小相对应。
页寄存器:每一帧与一个页寄存器关联,

原创粉丝点击