计算机操作系统23

第二十三课:内存管理基础


一、为什么需要内存管理?

我们先回到计算机最基本结构。

一个程序:

比如:

复制代码
QQ.exe
浏览器.exe
游戏.exe

它们存放在哪里?

答案:

硬盘。

例如:

复制代码
硬盘

↓

程序文件

但是:

CPU不能直接运行硬盘里的程序。

为什么?

因为:

硬盘速度太慢。

CPU速度:

非常快。

如果CPU每次执行:

都去硬盘找数据。

整个计算机:

会慢到无法使用。


所以:

程序运行时:

必须:

进入:

内存(Memory)

流程:

复制代码
硬盘

↓

加载

↓

内存

↓

CPU执行

二、什么是内存?

这里说的内存:

主要指:

主存(Main Memory)

也就是:

我们平时说的:

RAM。

例如:

电脑:

8GB内存。

16GB内存。

32GB内存。


内存:

可以理解为:

CPU旁边的工作桌。


举个例子:

你的房间:

复制代码
仓库 = 硬盘

书桌 = 内存

你 = CPU

你学习:

不会:

每看一个字:

跑仓库拿书。

你会:

先:

把书放桌子。

然后:

直接看。


三、为什么需要管理?

问题来了。

假设:

你的电脑:

内存:

只有:

复制代码
8GB

但是:

你同时打开:

浏览器:

复制代码
3GB

游戏:

复制代码
6GB

视频软件:

复制代码
2GB

总共:

复制代码
11GB

超过:

8GB。

怎么办?


操作系统:

必须:

管理内存。

包括:

1. 分配

谁:

使用:

哪一块内存。


2. 回收

程序关闭后:

释放:

内存。


3. 保护

一个程序:

不能:

随便:

访问:

另一个程序:

的数据。


4. 扩充

让程序:

感觉:

自己拥有:

更大的内存。

这就是:

虚拟内存。


四、程序如何进入内存?

我们先理解:

程序:

不是:

一整块搬进去。


例如:

一个程序:

结构:

复制代码
程序

├── 代码段
│
├── 数据段
│
├── 堆
│
└── 栈

运行时:

这些部分:

需要:

放入内存。


简单理解:

程序:

像一本书。

内存:

像书桌。

操作系统:

负责:

安排:

这本书:

怎么摆放。


五、地址是什么?

这是内存管理最核心概念。

CPU访问内存:

靠:

地址。


例如:

内存:

像酒店。

每个房间:

有编号。

复制代码
1号房

2号房

3号房

4号房

这个编号:

就是:

地址。


计算机:

也是:

类似。

内存:

被划分:

很多存储单元。

每个单元:

有:

唯一编号。

例如:

复制代码
1000

1001

1002

1003

CPU:

通过地址:

找到数据。


六、逻辑地址和物理地址(★★★★★)

这是内存管理第一个重点。


1. 物理地址(Physical Address)

什么意思?

真正:

在内存里的地址。

例如:

真实内存:

复制代码
0x1000

0x1001

0x1002

这个:

叫:

物理地址。


2. 逻辑地址(Logical Address)

也叫:

虚拟地址。

是:

程序自己看到的地址。


例如:

程序A:

认为:

自己的数据:

在:

复制代码
100号位置

程序B:

也认为:

自己的数据:

在:

复制代码
100号位置

冲突吗?

不会。

为什么?

因为:

这是:

逻辑地址。


操作系统:

负责:

转换。


过程:

复制代码
CPU产生逻辑地址

↓

地址转换

↓

真实物理地址

↓

访问内存

七、为什么需要逻辑地址?

如果:

没有逻辑地址。

程序:

直接使用:

物理地址。

会怎样?


假设:

程序A:

写:

100号地址。

程序B:

也写:

100号地址。

怎么办?

数据:

全部乱掉。


所以:

现代操作系统:

让每个程序:

拥有:

自己的地址空间。


八、什么是地址空间?

一个程序:

能看到的:

地址范围。

叫:

地址空间。


例如:

程序A:

看到:

复制代码
0~9999

程序B:

也看到:

复制代码
0~9999

但是:

实际:

对应:

不同:

物理位置。


例如:

复制代码
程序A

逻辑100

↓

物理5000

程序B

逻辑100

↓

物理8000

两个程序:

互不影响。

九、内存管理的发展历史

操作系统:

一步一步:

发展。


第一阶段:单道程序

最简单。

内存:

一次:

只有:

一个程序。

例如:

复制代码
内存:

系统

程序A

问题:

资源浪费。


第二阶段:固定分区

把内存:

提前:

切成:

几个区域。

例如:

复制代码
内存

--------------
系统

--------------
区域1

--------------
区域2

--------------
区域3

每个程序:

占一个区域。


问题:

产生:

内部碎片。


第三阶段:动态分区

程序来了:

再分配。

例如:

程序A:

需要:

10MB。

就:

给:

10MB。


问题:

产生:

外部碎片。


第四阶段:

分页。

这是:

现代操作系统:

核心。

后面:

重点学习。


十、碎片是什么?

考试:

常考。


内部碎片

什么意思?

分给你的空间:

比你需要的大。

多出来:

浪费。


例子:

一个盒子:

10厘米。

你只有:

7厘米东西。

剩余:

3厘米:

无法利用。


这叫:

内部碎片。


外部碎片

什么意思?

空闲空间:

很多。

但是:

不连续。

无法使用。


例如:

内存:

复制代码
已用

空

已用

空

已用

空

虽然:

总空闲:

很多。

但是:

没有:

连续大空间。


十一、本课核心总结

今天先掌握:

1. 为什么需要内存管理?

因为:

  • 程序需要进入内存运行。
  • 多程序同时运行需要协调。
  • 防止程序互相影响。

2. 两种地址

地址 含义
逻辑地址 程序看到的地址
物理地址 内存真实地址

关系:

复制代码
逻辑地址

↓

地址转换

↓

物理地址

3. 内存管理任务

四个:

复制代码
分配

回收

保护

扩充

4. 两种碎片

类型 特点
内部碎片 分配空间过大
外部碎片 空闲空间不连续
相关推荐
微三云 - 廖会灵 (私域系统开发)2 天前
小程序商城系统安全运维剖析:漏洞、风控与长效迭代方案
运维·小程序·系统安全
计算机魔术师2 天前
工信部发布首部L3/L4自动驾驶系统安全要求强制性国标,2027年7月实施
人工智能·后端·自动驾驶·系统安全
紫禁玄科4 天前
公共WiFi流量安全全解析
网络·人工智能·web安全·网络安全·系统安全
龙亘川4 天前
【客户定制更新】能源充电(汽车充电管理模块)版本更新详情
spring boot·汽车·系统安全·智慧城市·能源
紫禁玄科6 天前
网络安全科普:DDoS与DoS攻击完全指南
网络·web安全·网络安全·系统安全
紫禁玄科6 天前
勒索软件攻击深度解析
web安全·网络安全·系统安全
HackTwoHub7 天前
轻量化AI渗透武器库|ARTEX自主攻防系统、资产梳理、漏洞挖掘、链路分析全流程智能化落地
人工智能·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构
hopsky9 天前
jwt 防重放攻击
系统安全
Chengbei1110 天前
云安全漏洞挖掘SKILL、一站式云漏洞挖掘工具,支持S3爆破、IMDS探测、K8s检测与AK/SK权限利用
前端·人工智能·网络安全·云原生·容器·kubernetes·系统安全