大纲:
内存管理:连续分配和非连续分配
连续分配:单一连续分配
固定连续分配 (产生内部碎片)
动态连续分配(产生外部碎片):首次适应算法
循环首次适应算法
最佳适应算法
非连续分配:页式管理(易产生内部碎片)
段式管理(易产生外部碎片)
段页式管理(易产生内部碎片)
注:碎片:内部碎片和外部碎片
内部碎片是自己产生的 ,而外部碎片是系统产生的
也就是如果用户需要8kb的空间 ,而系统分配了10kb给用户,剩下的2kb就是内部碎片,
如果用户需要8kb的空间 ,系统分配给用户8kb,在内存链表里剩下的则是外部碎片
详解:
1.基本思想
用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。
2) 逻辑地址
系统将程序的逻辑空间按照同样大小也划分成若干页面,称为逻辑页面也称为页。程序的各个逻辑页面从0开始依次编号,称作逻辑页号或相对页号。每个页面内从0开始编址,称为页内地址。程序中的逻辑地址由两部分组成:页号P和页内位移量W。
3. 地址变换
若给定一个逻辑地址为A,页面大小为L,则
页号P=INT[A/L],页内地址W=A MOD L
假定页面的大小为4K,
页号: 8203/4096 = 2 ;页内偏移: 8203%4096= 11 ;物理地址:物理块号 * 页面大小 + 页内偏移 = 28683 。分段存储管理
段是按照程序的自然分界划分的长度可以动态改变的区域。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。
地址变换:
绝对地址=根据段号找到段表中的起始地址+段内地址 (如果段内地址超过限长则产生“地址越界”程序性中断事件达到存储保护)
段页式存储
思想:用分段方法来分配和管理虚拟存储器。程序的地址空间按逻辑单位分成基本独立的段,而每一段有自己的段名,再把每段分成固定大小的若干页。
逻辑地址结构。一个逻辑地址用三个参数表示:段号S;页号P;页内地址d。
地址变换过程: