![在这里插入图片描述](https://img-blog.csdnimg.cn/20200519074005710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xvdzUyNTI=,size_16,color_FFFFFF,t_70)
引入:
基本段页式存储管理的缺陷在于作业执行时必须全部装入内存,使得大型作业被拒绝或部分作业需要在外存长期等待。
传统存储管理方式特征:
一次性:作业必须一次性全部装入内存后才能开始运行。这会造成两个问题:①作业很大时,不能全部装入内存,导致大作业无法运行;②当大量作业要求运行时,由于内存无法容纳所有作业,因此只有少量作业能运行,导致多道程序并发度下降。
驻留性:一旦作业被装入内存,就会一直驻留在内存中,直至作业运行结束。事实上,在一个时间段内,只需要访问作业的一小部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。
局部性原理
时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)
空间局部性:一旦程序访问 了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放的,并且程序的指令也是顺序地在内存中存放的)
定义
在具有层次结构存储器的计算机系统中,采用自动实现请求调入功能和部分对换功能。这样的计算机系统好像为用户提供了一个存储容量比实际主存大得多的存储器.就称为“虚拟存储器”。
虚拟存储器是为扩大主存而采用的一种设计技巧,它的容量与主存大小无直
接关系,而受限于计算机的地址结构及可用的辅助存储器的容量。
如果对虚拟存储实在不理解,可以参考知乎的这篇文章如何用通俗易懂的语言解释虚拟存储器?
实现方法:
程序运行前:仅装入当前要运行的主程序需要的部分页面或段
程序运行时:
若要访问的页(段)已装入内存,继续执行
若产生缺页或缺段且内存中还有足够的空间,则启动OS的请求调页(段)功能调入需要的页(段)
若产生缺页或缺段且内存空间不足时,先启动页(段)置换功能,将内存中暂时不用的页(段)调出内存,接着启动请求调页(段)程序调入需要的页(段)
实现虚拟存储器必须解决好以下有关问题:
- 主存辅存统一~管理问题、
- 逻辑地址到物理地址的转换问题、
- 部分装入和部分对换问题。
虚拟存储管理主要采用以下技术实现:
- 请求分页虛拟存储管理
- 请求分段虛拟存储管理
- 请求段页式虛拟存储管理
置换时以页面(段)为单位,为了实现请求调页(段)和置换功能,系统必须提供相应的硬件支持和软件支持:
- 请求分页(段)的页(段)表机制,是在页(段)表机制上增加若干项形成的。
- 缺页(段)中断机构
- 地址变换机构
- 实现请求分页(段)的软件。包括实现请求调页(段)的软件和实现页(段)的置换功能的软件。
特征:
多次性
作业可被分为多次调入内存
虚存的独有特征
对换性
允许作业换入换出
显著提高内存利用率
虚拟性
虚存对内存实行逻辑扩充
虚拟性以多次性和对换性为基础,后二者又以离散分配为基础
例:虚拟存储器的基本特征是什么?虚拟存储器的容量主要受到哪两方面的限制?
虚拟存储器的基本特征有:多次性、对换性、虚拟性、离散性。
多次性:允许用户将一个作业分为多个较小的作业,多次调入内存,而不用一次全调入内存
对换性:允许将暂时不能运行的进程和那些暂时不需要的数据调入外存,将外存已经具备运行条件的进程和所需要的数据调入内存
离散性:作业在内存中不用分配一连续的内存空间。
虚拟性:指通过虚拟技术,将内存进行逻辑上的扩充,使用户看到的是比实际内存大得多的内存空间
虚拟存储器的容量主要受以下两方面的限制:第一:内存加外存的总容量;第二:逻辑地址结构。
易混知识点:
虚拟内存的最大容量是由计算机的地址结构(CPU寻址范围)确定的
虚拟内存的实际容量=min ( 内存和外存容量之和,CPU寻 址范围)
如:某计算机地址结构为32位,按字节编址,内存大小为512MB,外存大小为2GB。则,虚拟内存的最大容量为232B= 4GB
虚拟内存的实际容量= min (232B, 512MB+2GB) = 2GB+512MB
部分内容参考王道考研。