news 2026/8/7 22:30:40

计算机操作系统23

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机操作系统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. 两种碎片

类型特点
内部碎片分配空间过大
外部碎片空闲空间不连续
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 22:28:02

揭秘自动驾驶制动系统:automated-driving-control校准方案

揭秘自动驾驶制动系统:automated-driving-control校准方案 【免费下载链接】automated-driving-control 项目地址: https://gitcode.com/gh_mirrors/au/automated-driving-control 在自动驾驶技术快速发展的今天,制动系统的精准控制直接关系到行…

作者头像 李华
网站建设 2026/8/7 22:27:06

FileBrowser深度解析:Go语言构建的轻量级Web文件管理实战指南

FileBrowser深度解析:Go语言构建的轻量级Web文件管理实战指南 【免费下载链接】filebrowser File Browser provides a file managing interface within a specified directory and it can be used to upload, delete, preview and edit your files. 项目地址: htt…

作者头像 李华
网站建设 2026/8/7 22:25:30

Investbrain多币种支持详解:轻松管理全球投资组合

Investbrain多币种支持详解:轻松管理全球投资组合 【免费下载链接】investbrain Smart LLM-enabled investment tracker that consolidates and monitors market performance across your different brokerages 项目地址: https://gitcode.com/gh_mirrors/in/inve…

作者头像 李华
网站建设 2026/8/7 22:23:48

蓝速科技会议预约屏:智慧办公改造的刚需落地方案

在现代化办公环境中,会议室往往是资源冲突的“重灾区”。行政人员经常面临这样的尴尬:线上系统显示某间会议室已被预订,但走到门口却发现里面空无一人;或者两个团队同时推门而入,才发现时间撞期,场面一度十…

作者头像 李华
网站建设 2026/8/7 22:23:23

GitHub资源下载效率神器:告别克隆整库的3步精准提取法

GitHub资源下载效率神器:告别克隆整库的3步精准提取法 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 还在为下载GitHub上的单个文件夹而烦恼吗?面对庞大的开源项目,你只需…

作者头像 李华