1. 虚拟存储的工作原理
虚拟存储(Virtual Memory)是计算机系统内存管理的一种技术,它允许操作系统和程序使用比物理内存(RAM)更大的地址空间。虚拟存储的工作原理主要包括以下几个关键概念:
-
地址空间:虚拟存储为每个进程提供了一个连续的虚拟地址空间,这个空间可以比实际的物理内存大得多。
-
分页(Paging):虚拟存储将虚拟地址空间分割成固定大小的块,称为页(Page)。同样,物理内存也被分割成相同大小的块,称为帧(Frame)。
-
页表(Page Table):页表是一个数据结构,用于存储虚拟页到物理帧的映射关系。当程序访问虚拟地址时,操作系统使用页表来查找对应的物理地址。
-
转换后备缓冲区(TLB, Translation Lookaside Buffer):为了提高地址转换的效率,处理器使用TLB 来缓存最近使用的页表项。这样,对于频繁访问的虚拟页,处理器可以直接从TLB中获取物理地址,而不需要再次查询页表。
-
缺页中断(Page Fault):当程序访问的虚拟页不在物理内存中时,会触发缺页中断。操作系统然后负责将所需的页从磁盘交换到物理内存中,更新页表和TLB,然后重新执行中断的指令。
-
内存映射:虚拟存储允许操作系统将虚拟地址映射到不同的物理内存区域,这可以用于实现内存保护、共享和隔离。
-
交换(Swapping):虚拟存储结合交换技术,允许操作系统将不常访问的页从物理内存移动到磁盘上的交换区,从而为活跃的页腾出空间。
-
内存碎片:虚拟存储通过分页机制减少了外部碎片(External Fragmentation),但可能会引入内部碎片(Internal Fragmentation),即页内未被充分利用的空间。
虚拟存储的主要优点包括:
- 内存利用:允许程序使用比物理内存更大的地址空间,提高了内存的利用率。
- 内存保护:不同进程的虚拟地址空间是隔离的,一个进程的崩溃不会影响其他进程。
- 内存管理:简化了内存管理,因为操作系统可以为每个进程分配连续的虚拟地址空间,即使物理内存是分散的。
虚拟存储是现代操作系统中不可或缺的特性,它使得程序能够更有效地利用内存资源,同时提供了内存保护和隔离。
2. 虚拟内存
虚拟存储并没有在物理上增加内存容量,而是通过巧妙地利用现有的资源来扩展可用的存储空间。以下是对这个过程的更详细解释:
-
物理内存的限制:物理内存(RAM)的容量是固定的,由硬件决定。它就像阅览室的面积一样,无法随意扩大。物理内存的主要作用是为当前正在运行的程序和数据提供快速访问的空间.
-
虚拟存储的扩展:虚拟存储通过将一部分硬盘空间作为“虚拟内存”来使用,从而扩展了可用的存储空间。硬盘的容量通常比物理内存大得多,因此可以存储更多的数据。当物理内存不足时,操作系统会将一些暂时不需要的数据从物理内存中移到虚拟内存中,从而为新的数据腾出空间.
-
数据的动态管理:虚拟存储并不是简单地将所有数据都存储在硬盘上,而是通过一种称为“分页”的机制来动态管理数据。操作系统将数据分成许多小的“页面”,每个页面的大小通常是固定的(如4KB)。当物理内存不足时,操作系统会选择一些不常用的页面,将它们从物理内存中移出到虚拟内存中。当程序需要访问这些数据时,操作系统会将它们重新调入物理内存中,同时可能将其他不常用的页面移出. 这个过程是自动进行的,对用户来说是透明的.
-
性能的权衡:虽然虚拟存储扩展了可用的存储空间,但它也带来了一些性能上的权衡。因为硬盘的访问速度比物理内存慢得多,所以当数据需要在物理内存和虚拟内存之间频繁交换时,可能会导致系统的响应速度变慢。这就是为什么在物理内存充足的情况下,系统的性能通常会更好,因为大部分数据都可以直接存储在物理内存中,减少了硬盘的访问次数.
所以,虚拟存储并不是在原有物理内存不变的情况下存储更多信息,而是通过利用硬盘空间作为补充,来扩展可用的存储空间。它是一种权衡空间和速度的策略,使得电脑能够在有限的物理内存下运行更大的程序和处理更多的数据,但同时也需要付出一定的性能代价.
虚拟存储的基本概念
虚拟存储是一种计算机技术,它允许操作系统管理比物理内存更大的地址空间。这个地址空间被称为“虚拟地址空间”,它与物理内存的“物理地址空间”是分开的。
虚拟地址空间与物理地址空间
-
虚拟地址空间:每个程序在运行时都有自己的虚拟地址空间。这个空间是连续的,并且对程序来说是独立的。程序在编写时不需要关心实际的物理内存布局,它只需要在虚拟地址空间中进行操作.
-
物理地址空间:物理内存是实际存在的硬件资源,其容量是固定的。物理地址空间是物理内存的直接映射,操作系统需要将虚拟地址转换为物理地址,以便在物理内存中存储和访问数据.
分页机制
为了实现虚拟存储,操作系统使用了“分页”机制:
-
页面:虚拟地址空间和物理地址空间都被划分为固定大小的单元,称为“页面”和“页框”。通常,页面的大小是4KB或更大.
-
页表:操作系统维护一个“页表”,用于记录虚拟页面和物理页框之间的映射关系。页表告诉操作系统哪个虚拟页面对应于哪个物理页框.
页面置换算法
当物理内存不足时,操作系统会使用页面置换算法来决定哪些页面应该被移出物理内存:
- 最近最少使用(LRU)算法:选择最近最少使用的页面移出物理内存.
- 先进先出(FIFO)算法:选择最早进入物理内存的页面移出.
- 其他算法:如时钟算法、最坏适应算法等,各有优缺点.
虚拟内存的使用过程
- 程序请求数据:当程序需要访问某个数据时,它会通过虚拟地址来请求.
- 地址转换:操作系统查找页表,确定该虚拟地址对应的物理地址.
- 数据访问:如果数据已经在物理内存中,直接访问;如果不在物理内存中(称为“缺页”),则从虚拟内存(硬盘上的交换空间)中加载数据到物理内存中.
- 页面置换:如果物理内存已满,操作系统会根据页面置换算法选择一个页面移出到虚拟内存中,为新数据腾出空间.
性能影响
- 优点:虚拟存储扩展了可用的存储空间,使得程序可以运行更大的数据集和更复杂的任务.
- 缺点:当频繁发生缺页时,系统需要不断地在物理内存和虚拟内存之间交换数据,这会导致性能下降,因为硬盘的访问速度远慢于物理内存.
通过这种方式,虚拟存储在物理内存不变的情况下,通过利用硬盘空间作为补充,扩展了可用的存储空间,使得计算机能够运行更大的程序和处理更多的数据.
标签:SoC,计算机,页面,虚拟存储,虚拟地址,内存,体系结构,操作系统,物理 From: https://www.cnblogs.com/jzzg/p/18657834