一般用户程序所需的主存容量要大于实际的主存,要解决程序长度与主存容量之间的矛盾,其方法:用户根据主存容量,将程序分成若干个能独立运行的程序段,把先要执行的程序段存于主存中,其余各段存于辅存中,以逐段执行、逐段调入个覆盖技术相结合的方法运行整个程序。通过这种方法,在硬件和系统软件的共同管理下,可以使用户编程时不必考虑该程序执行时到底是访问主存还是辅存,逻辑上把主存和辅存构成的庞大的虚拟存储器空间都当作主存使用,从而扩大了主存容量,这种利用虚拟技术设计的存储器称为虚拟存储器,它不仅有效地解决了存储容量和存取速度的矛盾,而且是管理存储设备的有效方法。“虚拟”两字的含义是:面向应用程序员的是一个虚拟存储空间,该空间远大于实际的主存空间。
虚拟存储器的工作原理和Cache的工作原理十分相似,它把主存和辅存划分成若干小块,主存中每一小块都是辅存中对应小块的副本。程序和数据一开始都存放在辅存中,在CPU用到它们时才调入主存,如果主存已被装满,则采用适当的替换算法在主存和辅存之间交换