操作系统---内存管理

2023-05-16

操作系统之内存管理

  • 内存管理
    • 1、概念
    • 2、内存空间的分配和回收
      • 内存空间的分配和回收会需要实现的功能
      • 用户空间的分配
      • 进程空间的分配
      • 内存分配策略
    • 从逻辑地址到物理地址的转换

内存管理

1、概念

1、什么是内存?
首先从硬件的角度去理解内存, 内存是用来存储数据的基本单元。
用于存储数据的硬件可以分为以下几个层次,分别是寄存器、 高速缓冲器、 内存、磁盘。他们的访问数据的速度依次变慢,成本依次降低。
然后再从抽象的角度去理解一下,内存可以看成一一小的存放数据的空间,为了快速访问对应的空间,需要给每一个小的存储单元进行编址。有按字节(8位)进行编址的,也有按字(32位/64位)进行编址的。

2、为什么需要操作系统对内存进行管理?
程序运行的条件有将程序包含的数据和代码指令存放到内存中,并且给其分配CPU。这样程序才能运行起来。
为了提高cpu利用率,多个程序需要同时并发的执行。由于需要多个进程的并发执行,各个进程的代码和数据都需要存放到内存当中,等待分配cpu后,才能执行。为了保证为各个进程合理的分配内存空间,防止进程之间的越界访问,保证系统安全可靠的运行,因此需要对操作系统需要对内存进行管理。

为了方便人们进行编程,出现了高级程序语言,使人们更容易和计算机进行交流,用人类的思维方式来编写代码。我们编写的程序需要经过编译、链接、装入内存后,程序才能执行。简单理解就是将我们的编写的代码转换为计算机能运行的机器指令。

  • 逻辑地址:生成的变量以及函数的地址并不是对应实际的物理内存地址,而是从0开始偏移的逻辑地址。
  • 物理地址:实际的物理内存地址。

3、内存管理的具体内容
操作系统对于内存的管理主要有四大方面

  • a.对内存空间的分配与回收
  • b.内存的逻辑地址到物理地址的转换
  • c.对内存进行扩充
  • d.实现内存空间的共享与保护

2、内存空间的分配和回收

内存空间的分配和回收会需要实现的功能

1、当一个进程要运行时将其程序和数据存放在内存中的什么位置?
2、当一个进程运行结束后,其空间如何进行回收?
3、进程的内存的分配方式有哪些?
4、采用什么数据结构来记录进程在内存中的存放情况。等等

系统中的内存分为内核空间和用户空间。内核空间是存放一些用于维护进程运行的一些必要的信息数据等,不允许用户进行访问。而用户空间是用于存放进程的代码、数据、以及运行程序时的产生的数据的空间。为进程分配的内存空间就是该空间。

用户空间的分配

固定分区分配

  • 不变大小的分区分配
    将用户空间分成一个个大小相等的较小的存储区域。
  • 可变大小的分区分配
    将用户空间分一个个大小不等的较小的存储区域。

进程空间的分配

  • 连续分区分配
    保证进程内存在实际的物理内存中是连续的。
  • 不连续的分区分配
    进程的代码和数据在实际的物理内存中是不连续的。
    将进程的内存分成一个个小的页。进程在装入内存是以页为基本单元装入内存中的。
    不连续的分配方式有:
    基本分页式的存储方式
    基本分段式的存储方式
    基本段页式的存储方式

内存分配策略

动态内存分配

动态内存分配算法
首次适应算法
最佳适应算法
最坏适应算法
邻近适应算法
用于实现动态内存分配的数据结构,将空闲的内存块用链表的方式进行存储。

从逻辑地址到物理地址的转换

页表,各种页表

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统---内存管理 的相关文章

随机推荐

  • GAZEBO 中 sdf文件详解

    GAZEBO 中 sdf文件详解 1 model模型 一个模型数据库会拥有的文件 xff08 1 xff09 database config xff1a 有关数据库的元数据 xff0c 从CMakeList自动填充 本地不需要 xff08
  • 【HCNP-OSPF】LSA

    一 拓扑图 OSPF为什么会引入 划分区域 xff1f 划分区域以后 xff0c 可以带来以下好处 xff1a 1 节省区域中的每一个设备的系统资源 xff08 大区域被划分以后 xff0c 小区域中的数据库内容就会变少 xff09 xff
  • 无人机起降(2):AcFly飞控模块与M8N GPS模块的接口修改

    假如AcFly飞控想使用M8NGPS而不是AcFly GPS 需要将接线进行更换 AcFly飞控接口定义 由飞控手册查阅外设接口 xff1a 超声波 xff1a Ultrasonic 接口 光流传感器 xff1a Uart5 接口 GPS
  • 卡尔曼滤波原理及应用仿真(3):非线性滤波之扩展Kalman滤波

    标量非线性系统EKF 标量系统状态方程 xff1a 观测方程 xff1a MATLAB仿真 设置时间长度为50s xff0c 过程噪声方差Q 61 0 01 观测噪声方差R 61 1 xff0c 初值X 0 61 0 1 xff0c 协方差
  • 100条经典C++笔试题目及答案分享

    100条经典C 43 43 笔试题目分享 一 C 43 43 与C差异 1 17 二 数据类型 关键字 18 37 三 C 43 43 面向对象的特性 38 61 四 程序阅读题 62 89 五 编程练习 90 100 看到好用的经典C 4
  • 2020讯飞AI开发者大赛-温度预测赛道baseline改进

    2020讯飞AI开发者大赛 温度预测赛道baseline改进分享 写在前面数据清洗缺失值处理异常值处理 特征工程模型训练写在最后 写在前面 这是我参加的第二次数据竞赛 xff0c 上次是上个月的 传染病趋势预测 xff0c 西交是主办方的那
  • office显示正在更新怎么办

    问题 xff1a office打开之后 xff0c 显示正在更新 xff0c 过了一段时间后显示失败 xff0c 怎么解决 xff1f 解决方案 xff1a 1 win 43 R输入services msc 2 将Microsoft Off
  • pandas.DataFrame.select_dtypes的用法

    做数据分析时 xff0c 需要对特征进行归类 类别型还是数值型 xff0c pandas提供了select dtypes函数 函数原型 DataFrame select dtypes include 61 None exclude 61 N
  • SQL中if语句的使用

    SQL代码 xff1a select cast allcardid as bigint as allcardid is lord won if lord total bomb cnt 61 0 1 lord used bomb cnt 1
  • pandas.facctorize

    pandas factorize用法 对标签进行数值编码 相当于label encoding xff0c 按照标签在data中出现的先后顺序 span class token keyword import span pandas span
  • 录制好的视频文件,如何添加到直播源中做成直播?

    阿酷原创 2017 11 27 长沙 录制好的视频文件 xff0c 如何添加到直播源中做成直播 xff1f 打开直播助手界面 xff0c 点击 34 添加素材 34 xff0c 就可以添加音视频文件了 xff0c 选择你要添加的视频文件 x
  • pandas随机打乱dataFrame顺序

    pandas sample frac 61 sample frac 61 0 5 随机取data的一半数据 sample frac 61 1 0 随机取data的所有数据 xff0c 相当于打乱顺序 span class token key
  • pandas.dataFrame索引重置

    pandas 重置索引 data span class token operator 61 span pd span class token punctuation span span class token function DataFr
  • Ubuntu更新内核版本-Mainline(ukuu免费版本的延续)——一个带有图形和控制台界面的程序,用于更新内核

    要安装程序 xff0c 请运行以下命令 xff1a sudo apt add repository y ppa cappelikan ppa sudo apt update sudo apt install mainline 要启动图形界面
  • 无人机各个类型介绍

    为了执行 xff0c 无人机可能由类似的元件制成 xff0c 但无论是它们的能力 xff0c 还是由什么组成的 xff0c 它们都在某种程度上有所不同 大多数无人机都是为了执行特定任务而制造的 xff0c 因此以特定的方式建造 xff0c
  • 知识图谱概述(图谱学苑课程)

    1 知识图谱概念 知识图谱本质上是基于图的语义网络 xff0c 表示实体和实体之间的关系 构建知识图谱的目的 xff0c 就是让机器具备认知能力 xff0c 理解这个世界 2 知识图谱研究的多个维度 2 1 知识图谱相关发展领域 知识图谱是
  • 关于keils中#include后的双引号““与尖引号<>的区别

    关于keils中 include后的双引号 34 34 与尖引号 lt gt 的区别 关于 include 后的 与 lt gt KEILS中 include后的 与 lt gt 关于 include 后的 与 lt gt lt gt 搜索
  • UC/OS-III学习——触发PendSV中断

    UC OS III学习 触发PendSV中断 前言一 关于PendSV的基础知识二 代码1 c语言2 汇编语言 前言 PendSV典型使用场合是在上下文切换时 xff08 在不同任务之间切换 xff09 本文主要介绍触发PendSv中断的两
  • 数据结构与算法(C语言)------顺序线性表

    顺序线性表 定义 xff1a 线性表的顺序存储结构 xff0c 指的是用一段地址连续的存储单元依次存储线性表的数据元素 线性表的顺序存储的结构代码 xff1a span class token macro property span cla
  • 操作系统---内存管理

    操作系统之内存管理 内存管理1 概念2 内存空间的分配和回收内存空间的分配和回收会需要实现的功能用户空间的分配进程空间的分配内存分配策略 从逻辑地址到物理地址的转换 内存管理 1 概念 1 什么是内存 xff1f 首先从硬件的角度去理解内存