动态分区 分页分段存储

一.动态分区分配算法

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)优点:更容易实现信息的共享和保护

#动态内存分配##分页#
全部评论

相关推荐

Bug压路:老哥看得出来你是想多展示一些项目,但好像一般最多两个就够了😂页数一般一页,多的也就2页;这些项目应该是比较同质化的,和评论区其他大佬一样,我也觉得应该展示一些最拿手的(质量>数量)😁😁😁专业技能部分也可以稍微精简一些
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务