考研408--操作系统--day6--内存&内存管理&连续分配管理方式

(以下内容全部出自上述课程)

目录

  • 内存的基础知识
    • [1. 什么是内存,有何作用](#1. 什么是内存,有何作用)
    • [2. 指令的工作原理](#2. 指令的工作原理)
    • [3. 装入的三种方式](#3. 装入的三种方式)
      • [3.1 绝对装入](#3.1 绝对装入)
      • [3.2 可重定位装入](#3.2 可重定位装入)
      • [3.3 动态重定位](#3.3 动态重定位)
    • [4. 从写程序到程序运行](#4. 从写程序到程序运行)
    • [5. 链接的三种方式](#5. 链接的三种方式)
    • [6. 小结](#6. 小结)
  • 内存管理的概念(熟悉)
    • [1. 内存空间的分配与回收](#1. 内存空间的分配与回收)
    • [2. 内存空间的扩展](#2. 内存空间的扩展)
    • [3. 地址转换](#3. 地址转换)
    • [4. 内存保护](#4. 内存保护)
    • [5. 小结](#5. 小结)
  • 进程的内存映像
  • 连续分配管理方式
    • [1. 单一连续分配](#1. 单一连续分配)
    • [2. 固定分区分配](#2. 固定分区分配)
    • [3. 动态分区分配](#3. 动态分区分配)
    • [4. 小结](#4. 小结)
  • 动态分区分配算法
    • [1. 首次适应算法](#1. 首次适应算法)
    • [2. 最佳适应算法](#2. 最佳适应算法)
    • [3. 最坏适应算法](#3. 最坏适应算法)
    • [4. 邻近适应算法](#4. 邻近适应算法)
    • [5. 小结](#5. 小结)

内存的基础知识

1. 什么是内存,有何作用

例子:

8GB-->内存 64GB-->外存

房屋是人类的家,那么,内存就是数据的家。

1个存储单元=(存储单元是房子,下面的就是房子的大小)

  • 1个字节=8个字(按字节编址)-->有钱人,按栋买房子
  • 1个字=XX字长=XX个二进制(按字编址)-->普通人,按个买房子

    按字节编址,最后就需要用字节表示存储单元的大小。
    按字编址,最后就需要用字或者多少位的二进制表示存储单元的大小。

2. 指令的工作原理

准备工作:先把所有指令全部存入内存的程序段中,将需要的数据存入数据段中

指令1 --传入--> CPU --执行--> 将10赋值给寄存器中的存储单元(注意地址编号)

指令2 --传入--> CPU --执行--> 寄存器中的10进行加1操作

指令3 --传入--> CPU --执行--> 将寄存器中的数字传回地址为...的存储单元内。

如上图所说,我们进行指令操作时,都是直接用的给出的固定地址,那如果地址是随便儿分配的,指令还能正常执行么?

这里就引出了逻辑地址,也叫做相对地址,比如小明坐在一排一位、小红坐在一排二位,有具体编号的,这是绝对地址

如果我们说,小红坐在小明的右边,和别人比对了一下,通过别人找到这个人,这就是相对地址 ,也就是逻辑地址

将上述的指令的地址转换为逻辑地址的话,我们的思路就是,将这个数值放在某某指令下面,距离这个指令多少多少距离。

但是在内存中我们只能存放物理地址,不能存放逻辑地址,所以我们就要考虑怎样才能把左侧的可执行文件(就是上面的所有指令打包起来,类似于带main的可执行Java代码,纯类比,逻辑并不严谨)中的逻辑地址,在装入内存后转换为内存中的物理地址。

3. 装入的三种方式

3.1 绝对装入

这个是提前知道自己的位置,然后在装入前直接改好 ,再进行装入。

3.2 可重定位装入

这个是在装入过程中直接边装入边修改 地址。

3.3 动态重定位

这个是装入就直接装入,装入的还是逻辑地址,等到运行的时候 才会修改,转换为物理地址。

4. 从写程序到程序运行

5. 链接的三种方式

和装入的三种方式类似,都是前中的分类。

静态:运行前连接。

动态:边XX边连接。

6. 小结

内存管理的概念(熟悉)

1. 内存空间的分配与回收

2. 内存空间的扩展

3. 地址转换

就是上面的装入的三种方式。

4. 内存保护



5. 小结

进程的内存映像


连续分配管理方式

1. 单一连续分配

内存-->一个小区

系统区-->物业

用户区-->可以住人的地方

进程-->买房的客户

内部碎片-->好比我这个房子买来收租的,有个房间没租出去,这就是内部碎片

外部碎片-->这个小区有房子一直没卖出去

单一连续分配就是,这个小区每次只卖给一个人一个房子,这个人走了才会卖给另外一个人。

怎么这么像招了一个小区门卫(误)

2. 固定分区分配

就是这个小区里的房子的大小都一模一样。

想要小房子的人只能买这个适中大小的房子,想要大房子的也只能买这个大小的房子。

3. 动态分区分配

定制化卖房,户主想要多大的房子到时候就直接定制化施工。









4. 小结

动态分区分配算法

1. 首次适应算法

顺序:地址从低到高,找第一个。

2. 最佳适应算法

顺序:容量从低到高,找第一个。

3. 最坏适应算法

顺序:容量由高到低,找第一个。

4. 邻近适应算法

变为循环链表,依次查找。

5. 小结

相关推荐
Jk_Mr5 小时前
Linux-进程状态
linux·操作系统·进程
黛琳ghz6 小时前
极速云原生:openEuler之Redis与Nginx部署性能实战
redis·nginx·云原生·操作系统·压力测试·openeuler·服务器部署
一个平凡而乐于分享的小比特6 小时前
Linux、Debian、Yocto、Buildroot、Android系统详解
android·linux·操作系统·debian·yocto·buildroot
Mintopia7 小时前
🤖 AI 时代,大模型与系统的可融合场景架构猜想
人工智能·前端框架·操作系统
potato_may20 小时前
CC++ 内存管理 —— 程序的“五脏六腑”在哪里?
c语言·开发语言·数据结构·c++·内存·内存管理
馒头6751 天前
openEuler 向量数据库:Milvus 相似度搜索性能测试
操作系统
不秃头的帅哥1 天前
程序地址空间(基于c++和linxu的一些个人笔记
linux·开发语言·c++·操作系统·内存空间
落尘2981 天前
openEuler操作系统环境:研发人脸识别软件与系统性能评估
操作系统
落尘2981 天前
面向openEuler操作系统:OCR软件应用部署流程、性能评测
操作系统