一. 内存的基础知识

操作系统——内存、内存管理概念_操作系统

1. 什么是内存?有什么作用?

操作系统——内存、内存管理概念_物理地址_02

2. 进程运行的基本原理

(1). 指令

操作系统——内存、内存管理概念_重定位_03


操作系统——内存、内存管理概念_重定位_04


操作系统——内存、内存管理概念_物理地址_05


操作系统——内存、内存管理概念_操作系统_06

(2). 逻辑地址VS物理地址

操作系统——内存、内存管理概念_操作系统_07

(3). 从写程序到程序运行过程

用户程序要在系统上运行,必须先将它装入内存,然后再将其转变为一个可执行程序

操作系统——内存、内存管理概念_重定位_08

1. 装入模块装入内存(逻辑地址到物理地址的转换)

以下部分知识简单介绍装入模块的基本内容
并没有具体介绍如何实现从逻辑地址到物理地址的转换,也就是说没有详细介绍如何为程序分配内存空间的
放入了内存从0开始的地址(此时程序可正常运行)

操作系统——内存、内存管理概念_重定位_09


放入了内存从100开始的地址(此时程序可能会出错)

操作系统——内存、内存管理概念_操作系统_10

保证装入程序地址转换正确有三种方式:

1. 绝对装入

操作系统——内存、内存管理概念_操作系统_11

2. 可重定位装入(静态重定位)

操作系统——内存、内存管理概念_物理地址_12

3. 动态运行时装入(动态可重定位)

思想:最终物理地址 = 模块在内存中的“起始地址” + 目标内存单元相对于起始位置的偏移量

操作系统——内存、内存管理概念_内存空间_13


好处:

允许程序在内存中发生移动,并且可将程序分配到不连续的存储区中;
在程序运行前只需装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存;
便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间
  1. 紧凑
一个系统或用户程序必须被装入一片连续的内存空间中,
但是一台计算机运行一段时间,它的内存空间就会被分割成许多小的分区,缺乏大的内存空间
即使这些许多小的分区容量加起来大于要装入的程序,但是不相邻无法装入

操作系统——内存、内存管理概念_重定位_14

缺点:紧凑后的用户程序在内存中位置发生了变化,所以紧凑之后必须对移动的程序或数据进程重定位
  1. 动态重定位
在系统中增设一个重定位寄存器,用来存放程序在内存的起始位置,地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的
系统对内存进行紧凑之后,程序移动到了内存的另一个地方,不需要对程序做任何修改
只要用该程序在内存的新起始地址去置换原来的起始地址即可

作用:弥补了紧凑之后对移动的数据和程序地址进行修改而产生的系统开销

操作系统——内存、内存管理概念_内存空间_15

  1. 动态重定位分区分配算法

特点:增加了紧凑功能

操作系统——内存、内存管理概念_重定位_16

2. 链接的三种方式

方式一:

操作系统——内存、内存管理概念_操作系统_17


方式二:

操作系统——内存、内存管理概念_物理地址_18


方式三:

操作系统——内存、内存管理概念_内存空间_19

3. 存储器的层次结构

操作系统——内存、内存管理概念_内存空间_20

二. 内存管理的功能

存储器管理的主要对象是内存。由于对外存的管理与对内存的管理相似,只是他们用途不同,即外存主要用来存放文件,所有我们把对外存的管理放在了文件管理一章介绍

操作系统——内存、内存管理概念_操作系统_21

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

操作系统——内存、内存管理概念_操作系统_22

2. 内存空间的扩展

操作系统——内存、内存管理概念_重定位_23

3. 地址转换

操作系统——内存、内存管理概念_重定位_24


操作系统——内存、内存管理概念_内存空间_25

4. 内存保护

操作系统——内存、内存管理概念_物理地址_26


操作系统——内存、内存管理概念_操作系统_27


操作系统——内存、内存管理概念_操作系统_28