-
虚拟内存
- 内存存在的问题
- 内存不足:如果是逻辑内存直接映射到物理内存,当逻辑内存超过物理内存的时候,计算机就会出现内存不足的情况,导致程序崩溃。
- 内存碎片化:如果程序频率启动或退出,会产生内存碎片,对于连续分配内存时,即使碎片内存数量比申请的内存大,但可能导致申请失败,因为没有足够的连续内存。
- 程序间互相修改内存:如果程序切换时,不同的程序指向相同的内存时,会导致修改数据错乱。
- 解决以上问题的方案:虚拟内存
- 什么是虚拟内存?
- 如何实现虚拟内存?
- 内存存在的问题
-
内存的3个问题:如果所有程序可以直接访问相同的内存空间
- 假如内存不足会怎么样?(对于一台32位系统来说,可以使用的内存有:2^32 bytes = 4GB);内存不足,超出内存空间会导致崩溃(crash)(例如32位系统,只有1GB RAM)
- 内存碎片化:如果连续分配内存,程序可能找不到合适的空间(run out of space),即使有空间,但是不连续
- 多个程序指向相同的地址:不同程序间读写相同的内容,导致数据污染或崩溃
怎么解决?让每一个程序拥有自己的虚拟内存空间。把程序的内存空间映射到物理内存(物理内存不足时把暂时不用的swap到硬盘上)
-
什么是虚拟内存(Any problem in computer science can be solved by adding indirection.)
- 虚拟内存是一个间接容器
- 如果没有虚拟内存时,程序地址直接映射到物理内存。假如内存为1G,程序A运行时占用了1GB,此时再启动程序B时,发现没有内存空间可用,就导致崩溃。
- 虚拟内存:通过Map来查找程序地址对应的物理内存地址。
- 虚拟内存是一个间接容器
深入浅出:操作系统之虚拟内存
最新推荐文章于 2022-08-24 12:42:24 发布