• 【操作系统学习】内存管理(三)


    内存管理目录:

    基本概念和内存分配

    虚拟内存技术

    局部页面替换算法

    全局页面替换算法

     

    8. 虚拟内存的起因

    • 现在的程序需要内存越来越大。
    • 存储器的速度、容量和成本问题。

    在介绍虚拟内存技术之前,我们先介绍一下覆盖技术和交换技术。

    覆盖技术

    • 目标:
      • 是在较小的可用内存中允许较大的程序。常用于多道程序系统,与分区存储管理配合使用。
    • 缺点
      • 由程序员来把大程序划分为若干小功能模块,费时费力,增加了编程的复杂度。
      • 以时间延长来换取空间节省。

    覆 盖 技 术 
程 序 总 共 : 
B 
D 
A 
20K 
E 
190K 
C 
40K 
B 
D 
A 
c 
E F 
内 存 总 共 : 110K 
程 序 x 的 常 驻 区 
A 20K 
覆 盖 区 0 
( 50K ) 
覆 盖 区 1 
( 40K ) 
程 序 X 的 调 用 结 构

    交换技术

    • 目标:多道程序在内存中时,让正在允许的程序或需要允许的程序获得更多的内存资源。
    • 方法:
      • 可将暂时不能允许的程序送到外存,从而获得空闲内存空间。
      • 操作系统把一个进程的整个地址空间的内容保存到外存(换出swap out),而将外存中的某个进程的地址空间读入到内存中(换入swap in)。换入换出内容的大小为整个内存的地址空间。
    • 交换技术实现中的几个问题:
      • 交换时机的确定:何时需要发生交换?只当内存空间不够或有不够的危险时换出。
      • 交换区的大小:必须足够大以存放所有用户进程的所有内存映像的拷贝,必须能对内存映像进行直接存取。
      • 程序换入时的重定位:换出后再换入的内存位置一定要在原来的位置上吗?最好采用动态地址映射的方法。

    交 换 技 术

    覆盖与交换的比较

    • 覆盖只能发生在那些相互之间没有调用关系的程序模块之间。需要程序员自己设置覆盖关系。
    • 交换技术以内存中的程序大小为单位进行的。交换发生在内存中程序与管理程序或操作系统之间,而覆盖技术发生在允许程序的内部。

    9. 虚拟技术

    虚拟技术基本概念:

    • 在装入程序时,不必将其全部装入到内存,而只需将当前需要执行的部分页面或段装入到内存,就可让程序开始执行。
    • 在程序执行过程中,如果需要执行的指令或访问的数据尚未在内存(称缺页或缺段)。则由处理器通知操作系统将对应的页面或段调入到内存,然后继续执行程序。
    • 另一方面,操作系统将内存中暂时不使用的页面或段调出来保存在外存上,从而腾出更多空闲空间存放要装入的程序以及将要调入的页面或段。

    虚拟技术基本特征:

    • 大的用户空间:通过把物理内存与外存相结合,提供给用户的虚拟内存空间通常大于实际的物理内存,即实现了两者的分离。
    • 部分交换:与交换技术相比较,虚拟存储的调入和调出是对部分虚拟地址空间进行的。
    • 不连续性:物理内存分配的不连续,虚拟地址空间使用的不连续。

    虚拟页式内存管理

    • 大部分虚拟存储系统都采用虚拟页式存储管理方式,即在页式存储管理的基础上,增加请求调页和页面置换功能。

    虚 存 技 术 一 虚 拟 页 式 内 存 管 理 
页 表 表 项 
逻 辑 页 号 
修 改 位 
访 问 位 保 护 位 
驻 留 位 
物 理 页 帧 号 
驻 留 位 : 表 示 该 页 是 在 内 存 还 是 在 外 存 。 如 果 该 位 等 于 1 , 表 示 该 页 位 
于 内 存 当 中 , 即 该 页 表 项 是 有 效 的 , 可 以 使 用 ; 如 果 该 位 等 于 0 , 表 示 
该 页 当 前 还 在 外 存 当 中 , 如 果 访 问 该 页 表 项 , 将 导 致 缺 页 中 断 : 
保 护 位 : 表 示 允 许 对 该 页 做 何 种 类 型 的 访 问 , 如 只 读 、 可 读 写 、 可 执 
行 等 : 
修 改 位 : 表 明 此 页 在 内 存 中 是 否 被 修 改 过 。 当 系 统 回 收 该 物 理 页 面 时 
, 根 据 此 位 来 决 定 是 否 把 它 的 内 容 写 回 外 存 ; 
访 问 位 : 如 果 该 页 面 被 访 问 过 ( 包 括 读 操 作 或 写 操 作 ) , 则 设 置 此 位 
。 用 于 页 面 置 换 算 法 。

    缺页中断算法

    • 功能:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被替换。
    • 目标:尽可能地减少页面的换进换出次数(即缺页中断次数)。具体来说,把未来不再使用或短期内较少使用的页面换出,通常只能在局部性原理指导下依据过去的统计数据来进行预测。
    • 页面锁定:用于描述必须常驻内存的操作系统的关键部分或事件关键的应用进程。实现方法是:在页表中添加锁定标记位(lock bit)。

    缺 页 中 断 
缺 页 中 断 处 理 过 程 : 
page on 
1. 
如 果 在 内 存 中 有 空 闲 的 物 
理 页 曲 , 则 分 配 一 物 理 页 
*f, 然 后 转 第 4 步 : 否 则 
转 第 2 步 : 
艺 
采 用 某 种 页 面 置 换 算 法 , 
选 择 一 个 被 替 换 的 物 理 
页 帧 六 它 所 对 应 的 逻 辑 页 
为 q. 如 果 该 页 在 内 存 期 回 
M 
被 的 改 过 . 则 需 把 它 写 回 
6 
外 存 : 
3 , 
对 q 所 对 应 的 页 表 项 进 行 修 
改 · 把 驻 留 位 置 丿 担 ; 
将 需 要 访 同 的 页 p 装 入 到 物 
5 
4 
理 页 面 f 当 中 
5 . 
峰 改 p 所 对 应 的 页 表 项 的 内 
容 , 把 驻 留 位 置 为 1, 把 物 
理 页 帧 号 置 为 
6 · 
重 新 运 行 被 中 断 的 指 令 。

  • 相关阅读:
    c#配置文件
    C#预处理指令
    C#面向对象详解
    231. Power of Two
    226. Invert Binary Tree
    C语言函数入参压栈顺序为什么是从右向左?
    对C++ 虚函数的理解
    悲观锁和乐观锁
    什么是索引
    CHAR 和VARCHAR的区别
  • 原文地址:https://www.cnblogs.com/keeptry/p/15726321.html
Copyright © 2020-2023  润新知