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

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


内存的基本概念

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

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

补充:

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

内存管理

覆盖与交换

覆盖和交换

连续分配管理方式

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

连续分配管理

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

动态分区分配算法

非连续分配管理方式

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

基本分页存储管理方式

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

分页存储概念理解

页表

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

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

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

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

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

基本分页存储管理

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

基本地址变换机构

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

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

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

具有快表的地址变换机构

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

两级页表

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

基本分段存储管理方式

基本分段存储管理

分页 VS 分段

分页VS分段

段页式管理方式

段页式管理

虚拟内存管理

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

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

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

虚拟内存

请求分页管理方式

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

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

请求分页管理

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

请求分页中的地址变换过程

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

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

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

页面置换算法

页面分配策略

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

页面分配置换策略

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

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

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

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

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

工作集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值