地址空间
最后更新于:2022-04-02 04:09:05
[TOC]
## 地址空间(Address Space)
- 把真实的内存划分成很多个区间,分给不同的进程
- 地址空间是进程可以用来寻址的独立地址集合
不能让应用接触物理内存的原因?
- 破坏操作系统
- 互相干扰(甚至崩溃)
## 解决方法
1. 保护
- JUMP 20012 > 20000 因此执行失败
2. 重定位
- JUMP12 被重定位成为 JMP12+18000
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/b1/9a/b19acacec798d0825cab0d53b7c9a072_312x400.png)
**缺点**
- 每次都需要做一次加法(+基地址寄存器)和一次比较(界限寄存器)
- 进程太多内存不够分怎么办?(内存超载)
思考:如何优化?
使用内存超载的解决办法
## 内存超载的解决办法
### 交换( Swapping)
- 把不在执行的进程存回磁盘
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/9b/6b/9b6bbe94ccbb6804d6405a087b0f29ed_400x309.png)
问题:
1. 为进程1,2预留了空间,但是如果将预留空间用完,那就需要从新整理内存
- 将内存用数据结构组织,切割成更小的块,一块块的分配给每个进程问题
- 让进程觉得内存地址是连续的,但其实是通过数据结构做了映射
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/ad/12/ad1264fea1bd39432281df33aa86b2da_388x400.png)
2. 占用大量内存的进程如何写入磁盘?
- 只存一部分
### 虚拟内存 Virtual Memory
';