内存管理

连续内存分配
每个进程位于一个连续的内存,与包含下一个进程的内存相连
离散内存分配
进程内存空间不连续
分区
固定分区:
将内存分配成多个固定大小的分区
进程运行受限单过分区内存大小
最多只能运行多个进程
会产生内部碎片,无法有效利用内存。
可变分区:
每次为进程找到合适的位置加载
可能产生内存外部碎片
可变分区有多种内存分配算法:首次适用,最优适用,最差适用
首次适用:分配首个足够大的孔,从头查找,直到找到为止
最优适用:找到能装载该进程的最小的孔,可能产生更小的外部碎片
最差适用:每次找到最大的孔装进程
7.外部碎片最好的解决办法是通过紧凑技术
分段
分段就是支持用户视图的内存管理方案。逻辑地址空间是由一组段组成,每个段都有名称和长度。地址指定了段名称和段的偏移量。
分页
实现分页的基本方法就是将物理内存分为固定大小的块,称为页帧;而将逻辑内存也分为同样大小的块,称为页。
一个64位操作系统的逻辑地址可以有2的64次方逻辑空间,而系统的物理内存小于2的64次方字节。
页表:操作系统提供,逻辑地址与虚拟地址的映射,每个进程都有它的页表
采用分页技术不会产生外部碎片,但会产生内部碎片,分配是以帧为单位进行分配,如果进程要求的内存并不是以帧的整数倍,那么最后一个帧用不完。
分页大小决定内部碎片的大小,如果太小,页表就会很大,如果太大就会产生更多的内部碎片。
分页的一个重要方面,程序员视图内存和实际的物理内存是分离的。程序员将内存做为一整块来处理,而且它只包含一个查询。
程序员内存视图和实际的物理内存是逻辑转换,用户进程不能访问不属于它的内存。它无法访问页表外的内存。
操作系统管理物理内存,它应该知道那些帧已分配,那些空闲,总共有多少帧等等数据,这些都保存在帧表中
页表基地址寄存器,当进行进程切换只需要改变页表基地址寄存器的指向即可。
页表结构:多级页表,哈希页表
虚拟内存管理
背景
虚拟内存允许进程不必完全处于内存。这种的一个大优点,程序内存可以远大于物理内存。虚拟内存把内存抽象成一个巨大的,统一的内存数组。
进程内许多指定代码并不需要完全处于内存中,计算满足局部性原理,大量代码并不一直执行
程序通常处理异常代码实际情况很少发生
程序某些函数很少使用
虚拟内存将用户逻辑内存和物理内存分开。这在现有物理内存有限制的情况下,为程序员提供了巨大的虚拟内存。虚拟内存使得编程更加容易,因为程序员不再需要担心有限的物理内存空间,只需要关注所要解决的问题
内存管理单元将虚拟内存映射到物理内存
通过将共享对象映射到虚拟空间,系统库可以被多个进程所共享,尽管每个进程都将库视为其虚拟空间的一部分,但是驻留在物理内存中的库被多个进程所共享
请求调页
如何从磁盘中加载执行程序:方法1:在程序执行时将整个程序全部加入内存,方法2:仅在需要时才加载,这种技术称为请求调页,用于虚拟内存系统,页面只有在需要时才被夹在,从未访问的那些页面从不加载到物理内存。
缺页中断:当请求的页不在内存中就会产生缺页中断,请求io把数据调入内存,如果内存没有空间就会产生换页,把调用不频繁的页换到外存
支持请求调页的硬件与分页相同,页表和外存中的交换空间
页面置换
页面置换的基本步骤:
1.如果没有空帧,那么就查找当前不再使用的帧,把该帧写入磁盘,修改对应的页表和帧表,当调入内存,把进程置为就绪态,等待cpu时间片运行。
页面置换算法
先来先服务页面置换算法(fifo)
fifo页面置换算法为每个页面记录了调入内存时间。当必须置换页面时,将选择最旧的页面,并不需要记录时间,可以创建一个队列,来管理内存页面,把首个页面换到外存,然后再把换入的插入队尾部。
算法缺陷,不满足局部性原理,可能早调入的还有可能被使用,增加缺页中断次数。
最优置换算法
算法思路:置换最长时间不被使用的页
最优算法,缺页次数最低
实现难度难以实现,因为需要预测未来
lru页面置换算法
算法思路:置换最近最少使用的页
算法性能,每次内存引用都需要更新时钟域,和堆栈,增加中断次数
全局置换
由于多个进程竞争帧,全局置换进程可以去其他进程置换帧。
局部置换
局部置换只能在自己的进程置换
系统抖动
系统抖动严重影响cpu利用率
抖动原因,假如内存分配两个进程,页帧有限,若采用全局置换,进程a换进程b的内存,进程b换a的内存。产生缺页中断次数就会很多。
避免抖动可以采用局部执算法,或优先权置换算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值