动态分区 分页分段存储
一.动态分区分配算法
1.首次适应算法
(1)空闲分区以地址递增的次序排列,分配内存时顺序查找空闲分区链(或空闲分区表)
(2)找到大小满足要求的第一个空闲分区;
2.最佳适应算法
(1)按容量递增次序链接,分配内存时顺序查找空闲分区链(或空闲分区表)
3.最坏适应算法(又称最大适应算法)
(1)按容量递减次序链接,分配内存时顺序查找空闲分区链(或空闲分区表)
4.邻近适应算法
(1)空闲分区以地址递增的次序排列
(2)每次分配内存时从上次查找结束的位置开始查找空闲分区链(或空闲分区表)
二.分页存储管理(非连续分配管理)
1.基本思想
把进程分页,各个页面可离散的放到各个内存块中
2.页表
(1)记录了页面和实际存放内存块之间的映射关系
(2)一个进程对应一张页表,进程每一页对应一个页表项,每个页表项由页号和块号组成;
(3)每个页表项的大小相同,页号隐含
(4)i号页表项存放地址=页表始址+i*页表项大小
3.逻辑地址结构组成
a.页号P=逻辑地址/页面大小
b.页内偏移量W=逻辑地址%页面大小
4.地址的转换
(1)计算逻辑地址对应的P,W
(2)找到对应页面在内存中的存放位置(查页表)
(3)物理地址=页面始址+W
PS:
(1)在内存空间中
页框=页帧=内存块
页框号=页帧号=内存块号(从0开始)
(2)在进程的逻辑地址空间中
将页框称之为页,页面
(3)页表项=页号+块号
(4)页表是在内存中的
5.页表寄存器(PTR)
(1)当进程加载到内存中时,存放页表在内存中的起始地址F和页表长度M
当文件还在外存中时,F和M存放在进程控制块(PCB)中;
6.快表(联想寄存器,TLB)
(1)访问速度比内存快很多
(2)不是内存,存放最近访问的页表项的副本
(3)内存中的页表被称为慢表
7.局部性原理
(1)时间局部性
程序中存在循环,如果执行了程序中某条指令,那么不久后这条指令很有可能再次执行
(2)空间局部性
很多数据在内存中连续存放,一旦程序访问了某个存储单元,不久后其附近的存储单元也可能被访问
8.多级页表
访存次数n+1
三.分段存储管理
1.结构
段号(段名)+段内偏移量(段内地址)
2.段表
(1)组成
段号,段长,基址(起始地址)
3.段表寄存器
(1)当进程加载到内存中时,存放段表在内存中的起始地址F和段表长度M
当文件还在外存中时,F和M存放在进程控制块(PCB)中;
4.逻辑地址访问过程
5.分段共享
(1)条件:共享的代码为纯代码或可重入代码即不能被修改的代码
(2)实施:只需让各进程的段表项指向同一个段即可
(3)优点:更容易实现信息的共享和保护
#动态内存分配##分页#