内存的发展历程:
DOS时代:同一时间只能有一个进程在执行
windows95:多个进程装入内存(要解决两个问题,1内存撑爆,2相互打扰,访问别人的内存空间)
出现了现在的内存管理系统:
虚拟地址,分页装入,软硬件结合寻址
内存撑爆问题如何解决
分页:
内存中分成固定大小的页框(4K),把程序(硬盘上的)分成4K大小的块,用到那一块,加载那一块,加载的过程中,如果内存已满,新加载的块会把最不常用一块放到swap分区,把最新的一块加载进来(这个就是著名的LRU算法)
相互打扰问题如何解决
虚拟内存:
让进程工作在虚拟空间,程序中用到的空间地址不再是直接的物理地址,而是虚拟地址,这样,A进程永远不可能访问到B进程的空间。
虚拟空间多大?就是 寻址空间,64位系统就是 2^64(bype)(2的64次方)比物理空间大很多。
站在虚拟的角度,进程是独享整个系统+CPU。
内存映射:偏移量+段的基地址=线性地址(虚拟空间的)
线性地址通过操作系统+MMU(memory Management Unit)硬件管理单元 = 物理地址
缺页中断:(不重要)
需要用到的页面内存中没有,产生的缺页异常(中断),由内核从硬盘处理并加载到内存
ZGC
https://blog.csdn.net/u010321010/article/details/115084646