2、内存管理的功能

  • 功能1:内存空间的分配与回收
    • 连续分配管理:
      • 方法1:单一连续分配
      • 方法2:固定分区分配
      • 方法3:动态分区分配
        • 1、什么是动态分区分配?
        • 2、系统用什么样的数据结构记录内存使用情况?
        • 3、当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?(首次适应、最佳适应、最坏适应、临近适应)
        • 4、如何进行分区的分配与回收操作?
        • 5、如何解决动态分区分配碎片化问题?
      • 非连续分配管理方式
  • 功能2:内存空间的扩充
    • 方法1、覆盖技术
    • 方法2、交换技术
    • 方法3、虚拟存储技术
  • 功能3:地址转化
    • 方法1、绝对装入
    • 方法2、可重定位装入
    • 方法3、动态重定位
  • 功能4:存储保护
    • 方法1:上下限寄存器法
    • 方法2:重定位寄存器(基址寄存器)和界地址寄存器法(限长寄存器)

看几个问题

功能1:内存空间的分配与回收

连续分配管理:

方法1:单一连续分配

方法2:固定分区分配


问题:如何对每一块分区进行记录呢?

方法3:动态分区分配

1、什么是动态分区分配?


一个接一个的放入。

2、系统用什么样的数据结构记录内存使用情况?

3、当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?(首次适应、最佳适应、最坏适应、临近适应)

4、如何进行分区的分配与回收操作?

能合并就合并

5、如何解决动态分区分配碎片化问题?

采用“拼凑”技术,就是将使用的存储空间拼接到一起,闲散的存储空间拼接到一起。例如现在内存中有互不相邻的三块空间:1K,3K,5K;现在有一个7K的程序要运行,但是由于内存空间不连续而无法运行,此时就需要将三块空间拼接。

非连续分配管理方式

见下篇:
操作系统之内存管理:3、基本分页存储管理

功能2:内存空间的扩充

方法1、覆盖技术

看上图:
假设现在B、C不能同时放入内存,D、E、F不能同时放入内存;
所以:
可以将A放入固定区;(8K)
将B、C设置一个覆盖区用于存放B、C(只需10K)
将D、E、F设置一个覆盖区用于存放D、E、F(只需12K)
从而从逻辑上达到内存扩充的目的,以淘汰

方法2、交换技术

方法3、虚拟存储技术

功能3:地址转化

方法1、绝对装入

方法2、可重定位装入

装入后可执行文件中的地址都被修改为了物理地址,地址变换在装入时一次性完成

方法3、动态重定位

在装入后通过重定位寄存器和逻辑地址计算数据存放地址,即使程序移动后,也可以通过再次计算得到新的物理地址

功能4:存储保护

方法1:上下限寄存器法

用物理地址设置俩个上下界寄存器,CPU访问存储单元时判断是否在上下界寄存器地址范围内

方法2:重定位寄存器(基址寄存器)和界地址寄存器法(限长寄存器)

重定位寄存器:存放起始物理地址
界地址寄存器:存放最大逻辑地址
此时,CPU想要访问逻辑地址80,首先要与界地址寄存器比较判断是否越界,未越界则访问物理地址:80+100=180.

操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)相关推荐

  1. Linux 操作系统原理 — 内存 — 页式管理、段式管理与段页式管理

    目录 文章目录 目录 前文列表 页式管理 快表 多级页表 基于页表的虚实地址转换原理 应用 TLB 快表提升虚实地址转换速度 页式虚拟存储器工作的全过程 缺页中断 为什么 Linux 默认页大小是 4 ...

  2. 13 操作系统第三章 内存管理 虚拟内存 请求分页管理方式 页面置换算法 页面分配策略

    文章目录 1 虚拟内存 1.1 传统存储管理方式的特征.缺点 1.2 局部性原理 1.3 虚拟内存主要特征 1.4 如何实现虚拟内存技术 1.5 虚拟内存的基本概念小结 2 请求分页管理方式 2.1 ...

  3. mysql内存管理,学习猿地-闲谈 MySQL内存管理,内存分配器和操作系统

    当用户使用任何软件(包括MySQL)碰到内存问题时,我们第一反应就是内存泄漏.正如这篇文章所示,其实并不总是这样. 这篇文章阐述一个关于内存的bug. All Percona Support cust ...

  4. 操作系统之内存管理:1、内存管理基础知识(指令工作原理、地址转化、程序运行过程)

    1.内存管理基础知识(指令工作原理.地址转化.程序运行过程) 思维导图 什么是内存? 指令的工作原理 装入模块的三种实现 绝对装入 可重定位装入 动态重定位 程序的运行过程 链接的三种方式 思维导图 ...

  5. 内存管理模拟程序c语言,C语言 内存管理详解

    本文出自: 伟大的Bill Gates曾经失言: 640K ought to be enough for everybody -Bill Gates 1981. 程序员们经常编写内存管理程序,往往提心 ...

  6. linux内存管理与设计,深入理解Linux内存管理机制(一)

    通过本文,您即可以: 1. 存储器硬件结构: 2.分段以及对应的组织方式: 3.分页以及对应的组织方式. 注1:本文以Linux内核2.6.32.59本版为例,其对应的代码可以在http://www. ...

  7. 操作系统核心原理-5.内存管理(中):分页内存管理

    在上一篇介绍的几种多道编程的内存管理模式中,以交换内存管理最为灵活和先进.但是这种策略也存在很多重大问题,而其中最重要的两个问题就是空间浪费和程序大小受限.那么有什么办法可以解决交换内存存在的这些问题 ...

  8. linux 共享内存_什么是物理/虚拟/共享内存——Linux内存管理小结一

    物理内存和虚拟内存到底有什么区别? 提到内存,我们会想到经常接触的三个词:虚拟内存.物理内存.共享内存.它们分别对应top输出中的VIRT.RES.SHR三列. 1. 物理内存 系统的物理内存被划分为 ...

  9. C++ 动态内存管理:c/c++的动态内存管理,new/delete,operator new/delete,placement-new, 内存泄漏

    c/c++的动态内存管理 new/delete opeartor new/delete placement-new 内存泄漏 c/c++的动态内存管理 在开始之前首先要了解c和c++的内存分布,我简单 ...

最新文章

  1. 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。...
  2. 问题解决:错误:unable to connect to node rabbit@localhost: nodedown
  3. (十)HTTP协议【前后端分离的时代,网络请求是前端的生命线】
  4. Spring4Shell的漏洞原理分析
  5. 三星Galaxy A73显示Geekcbench:或搭载骁龙778G
  6. 【Java】Java 使用函数的方法输出菱形(星号)
  7. 总结4月13日密室逃脱后至今复习的内容(夯实基础,构建知识脉络)
  8. pip 源使用阿里云镜像加速
  9. 详细说明手工创建oracle数据库实例
  10. MATLAB--查表
  11. 思科 Cisco CCNA 题库、
  12. 视觉 注意力机制——通道注意力、空间注意力、自注意力
  13. 服务器存储光模块需要同型号吗,最全面的光模块系列分类讲解
  14. Domino蓝色多瑙河版本
  15. 图神经网络(贪心学院)
  16. 【POI2005】SZA-Template(KMP)
  17. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛
  18. 7-39 抽卡游戏 (30分) 本题的灵感来源于一个古典的概率模型。 AliceAliceAlice 在一个卡池里抽卡,里面有 xxx 张 sss 卡和 yyy 张 aaa 卡。 AliceAlice
  19. python中的eval函数
  20. cpu中计算机的主要功能,cpu主要功能详解介绍

热门文章

  1. python:栈的理解与应用,让你快速入门Python
  2. 面试题系列(8):什么叫优雅降级和渐进增强?
  3. laravel php7.2报错,laravel,php_运行php artisan serve时报错,laravel,php - phpStudy
  4. code换取微信openid_JSamp;微信_微信授权
  5. Adobe illustrator 批量变换同时选中的单个对象 - 连载 12
  6. Adobe illustrator 排版后图形导出这样的Tiff/PNG - 连载 3
  7. 1.5编程基础之循环控制_16买房子
  8. PHP给后台管理系统加安全防护机制的一些方案
  9. 1327集群_MPT1327集群通讯系统
  10. 台式机电脑配置单_游戏直播电脑配置要求2019,附配置单及价格