考研操作系统知识点——内存管理3
发布时间
阅读量:
阅读量
动态分区分配算法
首次适应算法:
每次都从低地址开始查找,找到第一个能满足大小的空闲分区。
两种常用的数据结构:空闲分区表,空闲分区链
最佳适应算法:
空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链,找到第一个满足要求的空闲分区。
缺点:会产生很多的外部碎片。
最坏适应算法: (又称最大适应算法)
空闲分区按容量递减次序链接,每次分配内存时顺序查找空闲分区链,找到第一个满足要求的空闲分区。
缺点:导致较大的连续空闲区被迅速用完。
邻近适应算法:
空闲分区以地址递增的顺序排列。每次分配内存时从上次查找结束的位置开始查找空闲分区链,找到第一个满足要求的空闲分区。
四种算法中,首次适应算法效果是最好的。
连续分配:一个连续的内存空间
非连续分配:分散的内存空间
基本分页存储管理
将内存空间分为一个个大小相等的分区,每个分区就是一个“页框”或“页帧”。每个页框有一个编号,即页框号,页框号从0开始。
将用户进程的地址空间也分为与页框大小相等的一个个区域,称为页。每个页面也有一个编号,即页号,页号也是从0开始的。
页框不能太大,否则会产生内部碎片。
进程的每一个页面分别放入一个页框中。进程的页面与内存的页框有一一对应的关系。
模块在内存中的起始地址+偏移量
将进程的逻辑地址空间分页,假设每页大小为50B
逻辑地址如何转化为物理地址:
- 要算出逻辑地址对应的页号
- 要知道该页号对应页面在内存中的起始地址
- 要算出逻辑地址在页面内的偏移量
- 物理地址=页面地址+页内偏移量
十进制数表示逻辑地址:
页号=逻辑地址/页面长度
页内偏移量=逻辑地址%页面长度
页面在内存中的起始地址
如果每个页面大小为2的K次幂B,用二进制数表示逻辑地址,则末尾K位即为页内偏移量,其余部分就是页号。
页表:每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表
- 一个进程对应一张页表
- 进程的每个页对应一个页表项
- 每个页表项由页号和块号组成
- 页表记录进程页面和实际存放的内存块之间的对应关系
- 每个页表项的长度是相同的,页号是隐含的
每个字节8个二进制位
各页表会按顺序连续地存放在内存中
全部评论 (0)
还没有任何评论哟~
