计算机操作系统基础(十)---存储管理之虚拟内存

引言

本文为第十篇,存储管理之虚拟内存,在正式了解之前,有一个问题,一个游戏十几G,物理内存只有4G,那么这个游戏是怎么运行起来的呢?为了解决这个问题,就需要本篇中介绍到的虚拟内存的知识

虚拟内存概述

  • 有些进程实际需要的内存很大,超过物理内存的容量
  • 多道程序设计,使得每个进程可用物理内存更加稀缺
  • 不可能无限增加物理内存,物理内存总有不够的时候

这些原因就促使虚拟内存技术的产生

  • 虚拟内存是操作系统内存管理的关键技术
  • 使得多道程序运行和大程序运行成为现实
  • 把程序使用内存划分,把部分暂时不使用的内存放置在辅存

举例:

左边为进程的逻辑空间,红色部分为一个程序需要使用的内存,操作系统会将内存加载到物理内存中去,灰色的部分为暂时不需要使用的内存,这部分会先放到磁盘中,这样可以节省物理内存,把更多的物理内存让给其它进程使用,并且,在这个里边,如果说这个进程的逻辑空间很大的话,这些很大,且暂时不需要的空间都可以放到磁盘里边暂时保管

计算机操作系统基础(十)---存储管理之虚拟内存_第1张图片

程序的局部性原理

局部性原理指的是CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。这个原理也是使得虚拟内存技术可以实现的一个原因

因为有局部性原理

  • 所以计算机在加载程序时,无需全部逻辑空间装入内存,装载部分即可(需要使用的部分)
  • 如果发现所使用的内存不在物理内存中,则发出缺页中断,发起页面置换,把保存在辅存中的页面置换到物理内存中,这样程序又可以继续运行下去了
  • 从用户层面看,程序拥有很大的空间,既是虚拟内存

虚拟内存实际上是对物理内存的扩充,速度接近于内存,成本接近于辅存

虚拟内存的置换算法

  • 先进先出算法(FIFO)
  • 最不经常使用算法(LFU)
  • 最近最少使用算法(LRU)

高速缓存的替换时机

在高速缓存替换的时候,主要发生在CPU需要获取缓存的时候,发现缓存中没有对应的数据,此时就会发生高速缓存的替换,也就是从主存中载入所需数据

计算机操作系统基础(十)---存储管理之虚拟内存_第2张图片

主存页面的替换时机

主存缺页的时候,就会去辅存中加载相关数据,这个时候就会发生主存页面替换

计算机操作系统基础(十)---存储管理之虚拟内存_第3张图片

对比来看:

  • 替换策略发生在:高速缓存-主存层次、主存-辅存层次
  • 高速缓存-主存层次的替换策略主要是为了解决速度问题
  • 主存-辅存层次主要是为了解决容量的问题(这也是存储器存储分层的理由)

在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践
计算机操作系统基础(十)---存储管理之虚拟内存_第4张图片

你可能感兴趣的:(操作系统,进程,线程,php,laravel)