当前位置: 首页 > news >正文

操作系统八股文03-内存管理

操作系统八股文03-内存管理

1. 覆盖与交换

  • 覆盖:同一进程内对页进行覆盖
  • 交换:中级调度,在内存紧张时将不常用的进程换出

2. 连续分配

2.1 单一连续分配

  • 内存中只有一个作业,用于单用户、单任务的操作系统
  • 无外部碎片,有内部碎片

2.2 固定分区分配

  • 多个分区,每个分区只存放一个作业

分区过小时,使用覆盖技术;分区过大时,有外部碎片。

2.3 动态分区分配

  • 按需分配,分区大小、数量可变
  • 有外部碎片,无内部碎片
  • 分配算法
    • 首次适应算法
    • 最佳适应算法
    • 最坏适应算法
    • 邻近适应算法(循环首次适应算法)

通过紧凑技术,可以合并空闲块,消除外部碎片

3. 离散分配

3.1 分页

  • 内存划分为若干个固定大小的页,以页为单位将内存分配给进程
  • 无外部碎片,有内部碎片(理论上内部碎片大小为半个页)
  • 每个进程都维护一个页表,实现从逻辑地址到物理地址的映射

在这里插入图片描述

  • 地址翻译过程:

    • 无快表:页号 -> 越界检查 -> 查页表 -> 页框号
    • 有快表:页号 -> 查快表 -> 越界检查 -> 查页表 -> 页框号
      • 快表命中时,可以直接拿到页框号
  • 每个页表映射空间为整个内存,存储页表会浪费空间,此时可以使用多级页表进行压缩,其中二级页表不使用时可以不分配

  1. 进程中的单位为页,内存中的单位为页框,外存中的单位为块,三者概念类似。
  2. 页表每个进程独有,快表所有进程共享,需要解决快表在不同进程中的冲突问题(增加进程标识字段、刷表)

3.2 分段

  • 内存划分为若干个段,段长不固定,以段为单位将内存分配给进程

在这里插入图片描述

  • **地址翻译过程:**段号 -> 越界检查 -> 查页表 -> 块号

分页存储中的越界检查:页号是否越界

分段存储中的越界检查:段号是否越界、段内偏移是否越界

4. 虚拟分配**(扩大逻辑内存)**

4.1 局部性原理

  • 时间局部性
  • 空间局部性

4.2 请求分页

  • 页表项:页号、页框号、状态位P、访问字段A、修改位M、外存地址
    • 状态位P:标识该页是否在内存中
    • 访问字段A:该页在一段时间内的访问次数
    • 修改位M:该页调入内存后是否被修改

在这里插入图片描述

  • 页面置换算法:OPT、FIFO、LRU、CLOCK、改进CLOCK

抖动:频繁的页面置换

相关文章:

  • 第一个Spring Boot程序
  • 【OpenGL概念】QOpenGLWidget类详述--此文档基于Qt5.14.2
  • 网络基础(day2)
  • 粮油包装生产线的未来趋势:智能、环保与可持续发展
  • 爱普生RX-8130CE内置电池控制 RTC
  • 设计模式学习笔记 - 开源实战二(中):从Unix开源开发学习应对大型复杂项目开发
  • Servlet(1)Request 请求对象
  • 手机如何使用NFC卡模拟门禁刷卡
  • 省市区街道/乡镇四级联动vue3
  • 【Docker 的安装:centos】
  • GO学习记录
  • 模拟面试/面试题
  • DRL经典文献阅读(一):策略梯度理论(Policy Gradient, PG)
  • 第26章 物联网软件系统测试
  • Xmake实战---libjpeg 开源库移植
  • 基于划分的聚类分析——K-means(机器学习)
  • 10.17复习
  • Python正则表达式详解
  • Day08-尚品汇-分页器动态展示
  • 基于图像处理技术的印刷电路板缺陷检测技术分析
  • Hello Word你真的理解了么?今天教我的表弟,有些感悟
  • 【NNDL作业】图像锐化后,为什么“蒙上了一层灰色”?
  • JDBC——使用Java语言操作数据库
  • 将华为地图套件集成到HarmonyOs可穿戴设备应用中
  • 基于OpenAPI(Swagger3)使用AOP技术,进行日志记录
  • JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
  • 【PyTorch深度学习项目实战100例】—— 基于UNet实现血管瘤超声图像分割 | 第30例
  • 浅谈面向对象设计思想,以及在Linux内核中的体现
  • Mybatis——进阶
  • 简单上手_Kotlin,让开发更简洁
  • 机器学习——代价函数
  • 【百日刷题计划 第八天】——熟悉字符串 字符串基础题