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