首先内存(主存)它的读写速度是要比硬盘快很多的,但是内存的容量相对于硬盘来说非常低,为了解决这个问题,就引入了虚拟内存的概念。
虚拟内存的目的
虚拟内存的目的有三个:
1 将将储存视为操作系统的高速缓存,在主存中,我们只保留活动的区域,而那些不常活动的对象就放在硬盘中。
2 为进程提供一个统一的地址空间,来简化内存的管理。
3 保护进程的地址空间不被破坏。
一些基本概念
页表:可以理解为位于内存中的一个大数组,它的基本组成单位是页表项;
页表项:分为两个部分:标志位和地址位
虚拟页:主存和磁盘之间的基本传递单元,磁盘地址空间可以视为一个一个的虚拟页。
物理页:缓存在主存中的实际单元。
程序的局部性原理
程序的局部性原理是指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址分别局限于一定区域。
举个例子,比如说我有一个1024×1024的二维数组,那么我对它赋值的时候,我就要先对第1个一维数组赋值,再对第2个一位数组赋值以此类推,一共需要发生1024次缺页处理,这是不违反局部性原理的。
而如果我先对第1个一维数组的第1个赋值,再对第2个一维数组的第1个赋值,这样就要发生1024×1024次缺页处理。
【虚拟内存的概念与实现】页式内存管理基础上的虚存技术
1 在我们装入程序的时候,不必将处理的对象全部装入内存,而只需要将当前需要执行的部分页面或者段装入内存即可。
2 在程序执行的过程中,如果需要执行的指令或者访问的数据尚未在内存(称为缺页或缺段),则由处理器通知操作系统,将相应的页或者段调入到内存中,然后继续执行程序。
3 另一方面操作系统将内存中暂时不使用的页面或者段调出保存在外存上,从而腾出更多空间,给要装入的程序以及要调入的页面。
推荐阅读
- 笔记|如何在Windows11安装安卓子系统()
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- 2021年下半年《信息系统项目管理师》真题
- 个人理解|【C语言基础之类型转换】
- 学习分享|【C语言函数基础】
- 个人理解|【C语言实现井字棋及电脑落子优化】
- Python|蓝桥杯 平面切割 Python
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- 笔记|这是一个关于face_recognition和dlib库的安装(亲测有用,毕竟我代码都写出来了)
- 信令模式与非信令模式