一,局部性原理
因为局部性原理,我们读一个二维数组时,则会一行一行的访问的效率会比一列一列的访问的效率高
二,虚拟内存
磁盘中划分出一部分区域作为swap space(交换空间),之前磁盘分区的时候会留一部分作为交换空间,现在都是自动划分的
虽然可以不用担心内存不足,因为后面有硬盘作为后备内存,但是速度会很慢
硬盘上的这部门swap space就是虚拟内存
1,虚拟内存是一个允许进程不需要完全在内存中的一种技术(部分装入)
2.如果内存只有两个G,但是进程可以有4G,可以实现大进程运行
3.虚拟内存将物理内存抽象成了一个统一的,以字节为单位的存储器,将物理内存的概念和逻辑内存的概念分离开来,我们只需要管逻辑地址,不需要管物理地址够不够
4.程序员可以不用关心物理内存的限制
三,请求调页
Linux没有采用分段,二是采用分页的方案
->请求调页式的虚拟内存,所有的页面只有被请求的时候才被加载
①基于分页方案②在内存中的页面叫内存驻留③如果内存驻留没有所需的页,则请求调页从swap space加载到内存,并写入页表④页表中的标志位可以用来标志是否在内存中
->从没有被访问过的页面,就没有必要加载进物理内存
请求调页的步骤:
加载M->页表标志位invalid->缺页异常->中断处理(调页)->disk中找到页面->加载到memory->更新页表->通知重新加载
页面置换的算法式影响调页性能的一个方面
四,页面置换算法
1.先进先出
2.最优置换
3.LRU算法
五,系统抖动
如果一个进程无法拿到足够它使用的页框,会很快的发生一次缺页,而此时内存又不够用,这时就会发生页面置换,然而被调出去的页面可能也是马上要使用的,最终很快又会发生一次缺页,就这样,反复,再反复出现这种情况,每次调用出去的都是即将要用的,这种高频率的调页动作就是系统抖动。
发生抖动是,进程花在调页的的时间要远远高于进程运行的时间
cpu的利用率跟进程的并发量有关,但是超过一定的值之后就会发生抖动,利用率会直线下降
缺页异常频率:
根据进程的PFF值调整进程的页框数量 ,不让他的页框太多,也不让他太少。