操作系统_内存管理

内存管理

存储体系

在这里插入图片描述

CPU缓存(Cache Memory):是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾.
内存: 由于cpu与外设之间速度不匹配,用内存来缓冲.cpu不直接与外设产生联系,外设会通过中断等技术与cpu通信.cpu会将计算的数据予写入到内存,通过内存来写到磁盘或显示器上;而键盘输入的数据或磁盘上的数据会读到内存上,cpu直接到内存取数据.

在这里插入图片描述

管理的目的和任务

内存空间分为用户区和系统区,为了充分利用内存,引入多道程序,以及后期的进程通信,内存共享问题

  • 内存:当前正在运行程序和代码的数据(PC所指的)
    • 系统区:存放操作系统的常驻内存
    • 用户区:装入并存放用户的代码和数据

内存的分配的方式:

  • 静态分配:程序运行前一次性转入内存,运行过程中不能申请增加内存
  • 动态分配:根据需要增加内存

内存共享

多道程序动态地共享内存,可以节省内存空间,提高内存利用率;实现进程通信

存储保护

内存中的各个进程互不影响

  1. 防止地址越界:每个进程都有相对独立的进程空间,防止侵犯 其他进程空间
    2.防止操作越权:每个进程都有自己的访问权限

扩充内存容量

内外村结合起来,借助虚拟存储技术或其他交换技术,达到在逻辑上扩充内存够的效果

地址映射

分为静态地址映射和动态地址映射,通过基址寄存器(重定位)实现逻辑地址到物理地址的映射

分区存储管理方案

系统把内存用户区划分为若干分区,分区大小可以相等,也可以不等。一个进程占据一个分区

  • 特点:

    • 支持多个程序并发执行
    • 难以进行内存分区的共享。
  • 问题:可能存在内碎片和外碎片。

    • 内碎片:占用分区之内未被利用的空间,如在固定分区的系统中,小作业占用大分区时。
    • 外碎片:占用分区之间难以利用的空闲分区(通常是小空闲分区)。
  • 固定分区

  • 可变分区

*在这里插入图片描述


分区算法:

  • 最先匹配法(first-fit):按分区的先后次序,从头查找,找到符合要求的第一个分区,则结束查找。它要求可用表或自由链按起始地址递增的次序排列。
    • 该算法的分配和释放的时间性能较好,较大的空闲分区可以被保留在内存高端。
    • 但随着低端分区不断划分而产生较多小分区,每次分配时查找时间开销会增大。
  • 最佳匹配法(best-fit):它要求找到一个长度大于等于所要求内存长度,且其大小与要求相差最小的空闲分区进行分配。它要求可用表或自由链按分区大小递增的次序排列
    • 从个别来看,外碎片较小,但从整体来看,会形成较多外碎片。较大的空闲分区可以被保留。
  • 最坏匹配法(worst-fit):它要求找到一个长度大于等于所要求内存长度,且最大的分区进行分配。它要求可用表或自由链按分区大小递减的次序排列。
    • 基本不留下小空闲分区,但较大的空闲分区不被保留。

页式存储管理方案

概念:程序的连续存放造成了内存碎片问题。虽然可以利用紧缩法来解决问题,但要额外花费CPU时间。页式存储管理允许程序的存储空间是不连续的,既减少了内存碎片,提高了内存利用率,又增加存储管理的灵活性.
存储管理MMU(memory management Unit)芯片被用来从逻辑地址映射到物理地址.

页面尺寸的取值规律:
通常是:几KB到几十KB,必须是2的整数次方,页的大小是由机器硬件定义好的,OS可以将两页捆绑在一起分配使用。

  • 太小->页表长,并导致需要更多的页表空间,对于大进程而言,页表可能太大,无法放到主存,只好放在磁盘,同时可能导致二次缺页;
  • 太大->页表短,管理开销小,交换时对外存I/O效率高,但能使缺页率增加,还有页内碎片。

[建议]发生缺页时读取时间对页大页小的开销是差不多的,所以页大为好
在这里插入图片描述
分页式地址变换过程:
在这里插入图片描述
快表:为了提高查表速度,在地址变换机构中增设一个具有并行查找能力的高速缓冲存储器(快表),将访问最频繁的少数活动页面的页号放到快表中。
引入快表的目的: 为了提高地址映射速度
原因:CPU的指令处理速度与内存指令的访问速度差异大,CPU的速度得不到充分利用
解决:在CPU中使用了高速缓存(Cache)

引入快表的地址映射:
在这里插入图片描述

段式存储管理方案

在这里插入图片描述


页式管理和段式管理的比较:

  • 页式和段式管理都提供了内外存统一管理的虚存实现,但分页是出于系统管理的需要,分段是出于用户应用的需要:

    • 一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。
    • 页式虚存只交换固定大小的页,需要多次缺页中断才能把所需信息完整地调入内存,而段式虚存每次交换得到是一段有意义的信息。
      无法通过页面共享具有完整逻辑功能的子程序或数据块,而段则可以。
    • 页大小是系统固定的,而段大小则通常不固定,对需要不断增加或吸收新数据的段十分有利
  • 段式便于实现动态链接:段名+入口地址,需要硬件支持。

  • 逻辑地址表示:

    • 分页是一维的,各个模块在链接时必须组织成同一个地址空间;
    • 分段是二维的,各个模块在链接时可以每个段组织成一个地址空间,反映了程序的逻辑结构。
  • 通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。

段页式存储管理方案

在这里插入图片描述
在这里插入图片描述

覆盖技术与交换技术

覆盖技术
原理:把一个程序分成若干个功能上相对独立的程序段(代码段或数据段),它们按照时间先后占用公共的内存空间,即共享同一内存分区。
将程序的必要部分(常用功能)的代码和数据常驻内存;
可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中(覆盖文件),在需要用到时才装入到内存,覆盖前面的程序段(覆盖前后的两个程序段不存在调用关系);

一般要求作业各模块之间有明确的调用结构,程序员要向系统指明覆盖结构,然后由操作系统完成自动覆盖
在这里插入图片描述
交换技术:
为什么引入?
当内存空间紧张时,系统将内存中某些进程暂时移到外存,把外存中某些进程换进内存,占据前者所占用的区域,这种技术是进程在内存与外存之间的动态调度
原理:暂停执行内存中的进程,将整个进程的地址空间保存到外存的交换区中(换出swap out),而将外存中处于外存就绪状态的进程的地址空间读入到内存中,并将该进程送到就绪队列(换入swap in)。

交换技术实现中的几个问题
选择原则
即:将哪个进程换出/内存?
例子:分时系统,时间片轮转法或基于优先数的调度算法,在选择换出进程时,要确定换出的进程是要长时间等待的

需要特殊考虑的是:任何等待I/O的进程中存在的问题

解决:
从不换出处于等待I/O状态的进程
有些I/O进程因DMA而不能换出内存或换出前需要操作系统的特殊帮助

何时需发生交换?
例子:
只要不用就换出(很少再用)
只在内存空间不够或有不够的危险时换出

交换时需要做哪些工作?
需要一个盘交换区:必须足够大以存放所有用户程序的所有内存映像的拷贝;必须对这些内存映像的直接存取

换入回内存时位置的确定
换出后再换入的内存位置一定要在换出前的原来位置上吗?
受地址“绑定”技术的影响,即绝对地址产生时机的限制

与覆盖技术相比,交换技术不要求用户给出程序段之间的逻辑覆盖结构;而且,交换发生在进程或作业之间,而覆盖发生在同一进程或作业内。此外,覆盖只能覆盖那些与覆盖段无关的程序段

虚拟存储技术

虚存:把内存与外存有机的结合起来使用,从而得到一个容量很大的“内存”,这就是虚存
实现思想:当进程运行时,先将一部分程序装入内存,另一部分暂时留在外存,当要执行的指令不在内存时,由系统自动完成将它们从外存调入内存工作
目的: 提高内存利用率

页面置换算法:
参考
如下补充:
NRU:
在这里插入图片描述
在这里插入图片描述
第一次顺序找R=0,M=0(又老又没被修改).若找到,则淘汰;若未找到,则重头开始找R=0,M=1(老但是被修改),同时把不符合条件的页的R置为0.若找到,则淘汰;若未找到,重复以上步骤,肯定会找到符合条件的页面.
如上,第一次查找就找到了R=0,M=0的0号页面.

第二次机会页面置换法:在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值