内存管理(操作系统笔记四)

内存管理(操作系统笔记四)


内存的基本概念

内存 可存放数据。程序执行之前 必须先放到内存中才能被CPU处理 ——缓和CPU与硬盘之间的速度矛盾。

内存中就是一系列的存储单元,如果计算机 “按字节存储” ,则每个存储单元的大小为一个字节,即 1B8个二进制位 。如果计算机是 “按字编址” ,则每个存储单元的大小根据每个 字长 来确定。

补充:

210 = 1K (千) 220 = 1M (兆,百万) 230 = 1G(十亿,千兆)

内存管理(操作系统笔记四)_第1张图片

覆盖与交换

内存管理(操作系统笔记四)_第2张图片

连续分配管理方式

连续分配管理方法 :为一个用户程序分配一个 连续 的内存空间。

内存管理(操作系统笔记四)_第3张图片

以上的 动态分区分配 中,当内存中有多个足够大的空闲块时,操作系统必须确定分配哪个内存块给进程使用,这就是 动态分区的分配策略 ,有以下这些算法。

内存管理(操作系统笔记四)_第4张图片

非连续分配管理方式

非连续分配管理方式 根据分区大小是否固定,分为 分页存储管理方式分段存储管理方式

基本分页存储管理方式

分页存储一些词的表示,如下图

内存管理(操作系统笔记四)_第5张图片

内存管理(操作系统笔记四)_第6张图片

注意页号 是不需要占存储空间的,就像顺序表的索引页不需要占用存储空间, 块号 是需要占用存储空间的,块号 只表示 页框号 ,并不是 内存块的起始地址块号 的大小需要根据 有多少个页框 来确定。如下举个例子

物理内存大小4GB,页面大小为4KB,求每个页表项至少应该为多少个字节?

页框大小=页面大小=4KB= 2^12 B

4GB内存会被分为 232 / 212 = 220 个页框

页框号范围 0 ~ 220 - 1 ,至少要 20bit 来表示,所以每个页表项至少要 3B 来存储 (3*8=24bit)

内存管理(操作系统笔记四)_第7张图片

基本分页存储管理 中,从 逻辑地址 转换到 内存中的物理地址 ,地址变换是基于 页表 实现的,这就是 地址变换机构

内存管理(操作系统笔记四)_第8张图片

  • 分页管理 存在两个基本问题:
    • 每次访存操作都需要进行逻辑地址到物理地址的转换, 地址转换过程必须足够块,否则访存速度会降低
    • 每个进程引入 页表 ,用于存储映射机制, 页表不能太大,否则内存利用率会降低

以上 地址变换 过程中,若 页表 全部放在内存中,则存取一个数据或一条指令 至少需要访问两次内存第一次访问页表 ,确定存取的数据或指令的物理地址; 第二次是根据该地址存取数据或指令 。显然这种方法比通常执行指令的速度慢了一半。

地址变换机构中增设一个具有并行查找能力的高速缓冲存储器——快表,由称相联存储器(TLB)。

内存管理(操作系统笔记四)_第9张图片

当一个进程的页表需要耗费巨大的连续内存来存储时,这不切合实际。所以,为了压缩页表,我们可得到 二级分页

内存管理(操作系统笔记四)_第10张图片

建立多级页表的目的在于建立索引,以便于不用浪费主存空间去存储无用的页表项,也不用盲目的顺序式的查找页表项

基本分段存储管理方式

内存管理(操作系统笔记四)_第11张图片

分页 VS 分段

内存管理(操作系统笔记四)_第12张图片

段页式管理方式

内存管理(操作系统笔记四)_第13张图片

虚拟内存管理

传统存储管理方式 的两个特征: 1. 一次性 :作业必须一次性全部装入内存后,才能开始运行。(这可能导致两种情况:作业太大而不能全部装入内存时使作业无法运行;当大量作业要求运行时由于内存不足以容纳所有作业,只能使少数作业先运行,导致 多道程序度的下降 ) 2. 驻留性 :作业数据在整个运行期间都会常驻内存。

  • 局部性原理 分两种:
    • 时间局部性 :现在访问的指令、数据在不久后很可能会被再次访问
    • 空间局部性 :现在访问的内存单元周围的内存空间,很可能在不久后被访问

高速缓存技术 :使用频繁的数据放到更高速的存储器中(快表、页高速缓存及虚拟内存技术从广义上讲,都属于高速缓存技术)(依赖原理为 局部性原理

内存管理(操作系统笔记四)_第14张图片

请求分页管理方式

请求分页存储管理基本分页存储管理 的主要区别:在程序执行的过程中,当所 访问的信息不在内存时,由操作系统负责将所有信息从外存调入内存 ,然后继续执行程序;若空间不够,由操作系统负责 将内存中暂时用不到的信息换出到外存

  • 请求页表项 中增加了4个字段:
    • 状态位P :用于指示该页是否已经被调入内存,供程序访问时参考。
    • 访问字段A :用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问,供置换算法换出页面时参考。
    • 修改位M :标识该页在调入内存后是否被修改过。
    • 外存地址 :用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。

内存管理(操作系统笔记四)_第15张图片

更具体的地址变换流程如下图

内存管理(操作系统笔记四)_第16张图片

  • 只有"写指令"才需要修改"修改位" 。并且,一般来说只需要需该快表中的数据,只有要将快表项删除时才需要写回内存中的慢表,这样可以减少访存次数。
  • 和普通的中断处理一样,缺页中断处理依然需要保留CPU现场。
  • 换出页面 时需要使用 “页面置换算法”
  • 换入/换出页面都需要 启动慢的I/O操作 ,所以如果此操作太频繁将会有很大开销。
  • 页面调入内存后需要 修改慢表 ,同时也许要将表项 复制到快表 中。

页面置换算法(确定将如何换入/换出)

请求分页存储管理基本分页存储管理 其中的一点区别就在于内存空间不够时,操作系统需要将暂时用不到的信息换出到外存,选择调出页面的算法就称为 页面置换算法 。(算法的英文缩写要记住)

内存管理(操作系统笔记四)_第17张图片

页面分配策略

驻留集 :指请求分页存储管理中 给一个进程分配的物理页框的集合 就是这个进程的驻留集

内存管理(操作系统笔记四)_第18张图片

  • 调入页面的时机
    • 预调页策略 :运行前提前调入内存,目前预调页的成功率仅50%,所以这种策略主要用于 进程的首次调入 ,由程序员指出应先调入哪些页。
    • 请求调页策略 :进程运行时,发现缺页了才调入内存。

外存中分为 对换区文件区对换区采用连续存储方式,速度更快文件区采用离散存储方式,速度更慢 。因为两个区的不同,所以有 从何处调入页面 的问题。

  • 从何处调入页面
    • 系统拥有足够的对换区空间 :运行将所以的数据从文件区复制到对换区,之后所有的页面调度都在内存和对换区之间进行
    • 系统缺少足够的对换区空间 :不会修改的数据每次从文件区调入,会修改的数据调出到对换区,需要时再从对换区调入
    • UNIX方式 :第一次使用的页面都从文件区调入,调出的页面都写回对换区,再次使用时从对换区调入

抖动(颠簸) 现象:页面频繁的换入换出,主要原因时因为 分配给进程的物理块不够

工作集 是指再某段时间间隔内,进程要访问的页面集合。(驻留集大小要大于工作集大小)

内存管理(操作系统笔记四)_第19张图片

你可能感兴趣的:(操作系统)