因此理论上,我们可以把程序分成一个个小块,然后按照块进行装载到内存中,局部性原理的存在,程序倾向于在一个或者多个块上执行,所以性能不会太差
虚拟内存:分页
实际上程序的内存比我们的物理内存大很多,因此我们会给每个程序提供一个虚拟的空间...,这样方便映射,因此还得有一个页表,用来映射虚拟页面和物理页面
上图就是虚拟页面和物理页面通过页表进行映射的基本原理,其中我们发现虚拟页面中的第一页,并没有映射到物理内存中,如果访问到他,就会产生缺页的中断...程序的装载
当一个程序要进行的时候,会被一个装载器的东西进行装载,装载器会先创建虚拟地址空间,这个虚拟地址不存代码和数据,不是实际的内存,只是读取一些header信息,实际上会把程序的代码和数据在硬盘记录下来...,然后cpu,就会查询页表,试图把虚拟地址变成物理地址,但是发现页表对应的内存地址就没有装载这个代码,操作系统进行缺页处理,从硬盘中加载,把代码加载到物理内存中,CPU同时修改页表,表示数据已经进入内存中...随着指令的执行,越来越多的数据和代码被装载到物理内存中,安插到物理内存的不同位置了.