计算机操作系统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 1003CPU通过地址找到数据。六、逻辑地址和物理地址★★★★★这是内存管理第一个重点。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. 两种碎片类型特点内部碎片分配空间过大外部碎片空闲空间不连续