虚拟内存与写时复制
Posted 西邮菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟内存与写时复制相关的知识,希望对你有一定的参考价值。
一、什么是虚拟内存:
之前记录了虚拟内存如何映射到物理内存的方式(内存管理方式):分段和分页。但是这两个策略都有相同的目标,就是同时将多个进程保存在内存中,以便允许多道程序。然而,这些策略都倾向于要求每个进程在执行之前应完全处于内存中。而虚拟内存技术则可以允许内存不必完全处于内存,就是执行的指令应处于物理内存中。
二、虚拟内存的优点:
运行的程序可以远大于物理地址,使我们不必担忧内存容量的限制,它实现的原理就是局部性原理。
给每个进程都分配一个4G的看似连续的虚拟内存空间。
方便内存共享,文件共享等。
它保护了每个进程的地址空间不被其他进程破坏。
三、局部性原理
在程序整个运作过程中,程序引用的不同页面的总数可能超出了物理内存的总大小,但是局部性原则可以保证在任意时刻,程序将趋向于在一个较小的活动页面集合上工作。如果程序有很好的时间局部性,那么虚拟内存就会工作的很好,但是时间局部性差的话,会不停的产生页面置换,这样会产生“抖动”。
四、写时复制
进程在执行fork时只是把父进程的虚拟内存拷贝给子进程,父进程与子进程共用同一块物理内存,把这段内存设为只读内存,如果两个进程需要写这里的物理内存时会发生页错误中断,取消内存共享,给写的进程分配一个新的物理页面,并设置两个内存为可读可写,然后执行写操作。
以上是关于虚拟内存与写时复制的主要内容,如果未能解决你的问题,请参考以下文章