内存管理
Posted simadongyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理相关的知识,希望对你有一定的参考价值。
局部性原理
在一段较短时间内,程序的执行权限仅限于某个部分,相应的,他所访问的存储空间也局限于某个区域
时间局部性 某条指令一旦执行,不久后该指令可能再次执行,
一旦程序访问了某个单元,不久后附近的存储单元也将被访问
局部性原理表现为 时间局部性和空间局部性
程序的装入
绝对装入方式 编译时产生物理地址的目标代码
可重定位装入方式 静态重定位 编译时地址是逻辑地址,装入时通过重定位转换为物理地址
动态运行时装入 动态重定位 程序执行时通过重定位转换为物理地址
内存管理的目标
实现内存分配和回收
提高内存空间的利用率风和内存的访问速度
连续分配存储管理方式
单一连续分配 固定分区分配 动态分区分配
任何时刻主存储器最多只有一个作业
空闲分区链
动态的为每一个分区建立一个节点
动态分区分配算法
首次适应算法 空闲分区链以地址递增的顺序链接从链首开始查找直至找到第一个满足要求的空闲分区从该分区
中划出一块内存给进程剩下的仍留在空闲链中
循环首次适应算法 从上次找到的空闲分区的下一个空闲分区开始查找
最佳适应算法 空间分区链以分区大小递增的顺序链接从链首开始查找 直至找到第一个与进程请求的空间大小最接近
的空闲分区
动态分区回收的流程
1.释放一块连续的内存区域
2.如果被释放的区域与其他空闲去相邻,则合并空闲区
3.修改空闲分区链
分页存储管理的基本原理
基本概念
页 将一个进程的逻辑地址空间分成若干个大小相等的片
页框 将物理内存空间分成与页大小相同的若干个存储块
分页存储 将进程中的若干页分别装入多个可以不相邻的页框中
页内碎片 进程随后一页一般装不满一个页框,形成页内碎片
页表 实现从页号到页框号的映射
分页地址变换
1. 进程执行,PCB中页表起始地址和页表长度送CPU的页表寄存器
2.CPU访问某个逻辑单元A
3.由分页地址变换硬件自动将A分为页号和页内偏移两部分
4.由硬件检索页表,得到A所在的页对应的页框号
5.页框号和页内偏移地址送物理地址寄存器,计算物理地址
物理地址=页框大小X页框号+页内偏移量
快表TLB
快表也称 转换后援缓存 是为了提高CPU访存速度而采用的专用缓存,用来存放最近被访问过的页表项
引入快表后的地址变换过程
1. CPU 产生分页的逻辑地址页和页内碎片偏移地址后,将页号提交给快表
2. 查找快表,如果找到页号,得到该页所对应的页框号; 否则,继续查找页表,得到页框号
3.如果查找的页表项不在快表中,访问完内存页表后,把该页表项写到快表中
两级和多级页表
将页表在分页,形成两级或多级页表,将页表离散地存放在物理内存中
反置页表
为每一个页框设置一个表项,表项中存放进程号和页号,系统只维护一张反置页即可
虚拟存储器
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
优点 提高内存利用率 提高多道程序度,把逻辑地址空间和物理地址空间分开
特征 离散型 实现虚拟存储管理的基础 多次性 对换性 虚拟性 实现虚拟存储系统的最重要目标
地址变换
1 分页地址变换机构计算出页号和页内偏移地址
2.查找快表,如果找到页号,读出页框号,计算物理地址
3.若快表无该页信息,转到内存页表中查找页表,如果该页已调入,读出页框号,计算物理地址
4.如果该页尚未调入内存,则产生缺页异常,请求调入该页,修改页表,重新执行被中断的指令
页置换算法 从内存页中选择换出页的算法
最佳置换算法 主要用于理论研究
选择以后永远不会被访问的页,或者在未来最长时间内不再被访问的页作为换出页
先进先出置换算法FIFO 最简单的页置换算法
为每个页记录该页调入内存的时间,选择换出页时,选择进入内存时间最早的页
最近最久使用置换算法 实现最佳算法的近似算法
选择最近最久未使用的页换出(用一个字段记录一个也自上次被访问以来所经历的时间)
工作集 引入工作集目的:降低缺页率,提高访问内存效率
含义:某段时间间隔里,进程实际要访问的页的集合
抖动 运行进程的大部分时间都用于页的换入换出几乎不能完成任何有效果工作的状态
产生原因 进程数量太多 分配页框太少
预防方法 采取局部置换策略 引入工作集 挂起若干进程
什么是抖动,产生抖动的原因是什么
抖动是运行进程的大部分时间都用于页的换入换出,几乎不能完成任何有效果的工作的状态。
产生抖动的原因主要是系统中的进程数量太多,每个进程都能分配到的页框太少,以至于使该进程运行过程中频繁请求调页。
以上是关于内存管理的主要内容,如果未能解决你的问题,请参考以下文章