虚拟内存:它是什么以及它用于什么

虚拟内存:它是什么以及它用于什么

硬件指南 » 教程 » 虚拟内存:它是什么以及它用于什么

La 虚拟内存 这是一种非常重要的记忆,但很少有人了解或理解。因此,在本文中,我们将告诉你所有你需要知道的知识,让你的记忆不再隐藏秘密。

您可能还有兴趣阅读:

最佳 RAM 内存

最佳存储单元

什么是虚拟内存?它有什么用?

La 虚拟内存 它不像 RAM 那样是一个有形的物理术语。它是一种技术,允许辅助内存也贡献部分空间,就像它是主内存的扩展一样,也就是说,作为 RAM 的一部分。操作系统使用了这项技术,它的管理由内核与进程调度程序协同执行,我们稍后会看到。

因此,我们可以说虚拟内存 使用硬件和软件 允许系统拥有比实际更多的内存空间。这是通过将进程从 RAM 转移到辅助存储来实现的,从而为其他优先级更高的进程释放 RAM 空间。

也就是说,操作系统将把介质的保留空间视为 SSD 或 HDD 存储 就像 RAM 一样。计算机内置的 RAM 并不总是足够同时运行多个程序。众所周知,每个软件程序都会告诉你它需要什么,但是当多个程序并行运行时会发生什么?这时虚拟内存就派上用场了,它可以交换进程,释放 RAM 空间,供优先级更高的程序处理。

这样,程序就会被误导,误以为主内存比实际安装的内存更大,从而提高多任务处理性能。然而,需要注意的是,虚拟内存的速度比 RAM 慢得多。如果操作系统需要在虚拟内存和 RAM 之间频繁切换进程,这也可能造成问题。 称为抖动的性能问题.

虚拟内存最初是在 RAM 极其昂贵且物理内存仅允许几兆字节的年代引入的。因此,需要一种机制来弥补主内存的不足,将部分硬盘模拟为 RAM 的扩展。

虚拟内存的工作原理

至 了解虚拟内存的工作原理要做到这一点,首先必须了解什么是进程。进程只不过是一个程序,由指令和数据组成,供 CPU 处理。要做到这一点,必须先将其从硬盘加载到 RAM 中,以便 CPU 能够更快地访问它。

一 内存管理单元 它会分配地址并自动转换。系统会处理物理地址(对应 RAM 中的实际地址)和逻辑地址(指向 RAM 之外的其他内存)。

因此,如果 RAM 内存 充满流程 如果比当前加载的进程更紧急的进程需要空间,则其中一个不太紧急的进程将被移至辅助内存,而优先级较高的进程将被移至 RAM 以供 CPU 执行。执行完成后,如果没有其他更紧急的进程,则该进程可以从辅助内存中恢复并加载到主内存中。

虚拟内存将由操作系统管理,它将在 页面文件或交换文件这样,您就知道每个进程在哪里,并且在需要时,您可以将页面上传到主内存,将虚拟地址转换为真实地址。

带有 Radiance 核心、神经阵列和通用压缩的 RDNA 5 是什么?需要注意的是,虚拟内存可以通过操作系统进行管理。通常,可以选择将更多或更少的内存分配给辅助存储单元。例如,在 Unix 和类 Unix 系统中,例如 Linux、Solaris、BSD 等,所谓的 交换空间或分区(SWAP)例如,在 Linux 中也可以使用交换文件。在 Windows 中,则使用 pagefile.sys 文件,该文件用于创建虚拟内存。通常,操作系统会根据操作系统本身的需求以及已安装的 RAM 大小,推荐使用特定大小的虚拟内存。

请注意,在此虚拟内存中,RAM 的内容在某些情况下也会被保存,即 纪念火山例如,当计算机进入休眠状态时。这样,计算机可以停止向 RAM 供电,数据不会丢失,因为数据存储在非易失性存储器中,并且计算机重启时可以恢复活动。

小德历史

众所周知,早期的计算机只使用穿孔卡,后来才转向磁带和类似的设备,这些设备可以被视为辅助存储器。然而,为了提高性能, 实现了 RAM 内存。 CPU 和辅助存储器之间的中间存储器,其访问速度比从辅助驱动器读取数据的速度更快。

最初的主存储器基于磁芯,而次级存储器则基于磁鼓。随着微电子技术的进步以及程序规模和复杂性的增加,存储器得到了改进。

回想一下,在早期阶段,程序使用了一种称为重叠的过程,这意味着当某个软件变得大于可用内存时,它就会覆盖其他程序。

在1956, 德国物理学家 Firtz-Rudolf Güntsch,将创建虚拟内存的概念,尽管该概念与缓存内存更相似,而不是我们目前所知的虚拟内存。

虚拟内存本身在 曼彻斯特大学英国。在那里,人们尝试为 Atlas 计算机开发一种改进的存储系统。该系统使用分页技术,将虚拟地址分配给始终驻留在主内存中的程序员。然而,尽管该系统于 1959 年开发完成,但直到 1962 年才投入使用。

他们将会领先于 宝来公司,这将推出第一台具有虚拟内存的商用计算机,并使用分段而不是分页。这是在1961年。

当时,有人质疑虚拟内存是否优于覆盖内存。但IBM对此进行了研究,并于1969年得出结论,认为虚拟内存系统更胜一筹,这促使70世纪XNUMX年代的大型机和小型机纷纷转向虚拟内存。然而,IBM PV的出现要晚一些,因为PC的要求不如其他高性能机器那么高。

当时采用这种虚拟内存的流行机器还有 IBM S/370、DEC VAX、

Interl 于 80286 年为其 1982 引入了保护模式虚拟内存 并在 80386 年实现了对 1985 的分页支持。其他制造商,例如 AMD 等,也纷纷推出了英特尔芯片的 CPU 克隆版。从那时起,无论是在 PC 领域内部还是外部,每个人都开始实现它……

整数与浮点数:它们是什么以及它们的用途虚拟内存:优点和局限性

与几乎所有概念和技术一样,虚拟内存也有其优点和缺点。

优点

其中 主要优点 从虚拟内存中我们可以得到:

增加可分配给程序的内存地址数量。

允许您同时运行更多应用程序。

它可以防止用户不断扩展他们的 RAM。

通过允许优先级较高的进程在 RAM 中拥有空间来提高性能。

由于内存隔离而提高了安全性。

它允许程序员拥有更多的内存用于他们的开发。

进程由操作系统调度程序自动移动,无需用户干预,这意味着更高的生产力和简单性。

缺点

另一方面,我们还发现 一些缺点 从这个虚拟内存中:

分配给辅助存储驱动器的虚拟内存将受该驱动器访问速度的限制。在 HDD 上速度较慢;在 SSD 上速度有所改善,但仍然比 RAM 慢。

它需要操作系统的软件支持来管理它,也需要硬件支持来执行地址转换。

虚拟内存的容量也会受到限制,因为辅助内存的容量也会受到限制。

如果没有足够的 RAM,滥用虚拟内存会导致系统运行速度变慢。

减少可分配给其他用途的硬盘空间量。

虚拟内存的类型:分页内存和分段内存

另一方面,重要的是要知道 虚拟内存的类型 现有的。首先,我们之前提到的内存管理单元(MMU)通常集成在现代处理器的CPU中。这将是地址转换和管理整个内存空间的重要组件。

此外,正如你所知,CPU 还包含几个级别的 缓存,它是集成在 CPU 中的内存,速度甚至比 RAM 还要快。将来可能需要再次访问的数据和指令存储在那里,以便 CPU 能够更快地访问它们。

我的意思是,当 CPU 获取一条数据或指令时,它会首先在 L1 缓存中查找,如果 TLB 如果命中,则表明该数据位于此内存中,并且只需几个时钟周期即可快速访问。但是,如果发生缓存未命中,搜索将移至下一个更高级别,例如 L2。同样,如果命中,则会访问该数据,这比 L1 的情况要多花费几个时钟周期。如果未​​命中,则发生未命中,搜索将移至下一级,可能是 L3……当到达最后一个缓存级别或 LLC 并发生未命中时,CPU 将在 RAM 中搜索,如果也未命中,则会在辅助内存中搜索……确切地说,当 RAM 中的硬件发生故障时,操作系统内核将收到通知,并将进程上传到 RAM,我将在最后一节中解释这一点。

转接卡:它是什么,它有什么用途,以及什么可以连接到这种鲜为人知的卡上。系统内存通常可以分页或分段。这就是我们可以区分的地方。 两种类型的虚拟内存:

分页:将内存划分为称为“页”的部分。为了确定信息的位置,需要分配一个页表,这是一种分页内存的映射。这使我们能够转换操作系统使用的虚拟地址和硬件使用的物理地址。这样,我们就知道需要访问(读取或写入)的页面是在 RAM 中还是虚拟内存中。

分段虚拟内存并非使用页面来划分,而是被划分成段。这种方法的不同之处在于,我们可以拥有可变长度的段,而页面的大小是固定的。除此之外,进程的执行方式与分页类似。也就是说,分段和分页之间的区别仅仅在于内存模型,即内存空间的划分方式。

通过我上面附上的图片可以更好地理解这一切。

交换

最后,我不能忘记虚拟内存中一个非常重要的过程,它被称为 交换 操作系统执行的操作,即我们之前提到的 RAM 和辅助内存之间的进程交换。

如上图所示,RAM(橙色表示)始终加载操作系统内核,因为它在正常运行期间必须始终存在。此外,还预留了一部分空间用于用户空间进程(即程序)。另一方面,灰色表示辅助存储单元或硬盘,进程也驻留在该虚拟内存中。

那么,考虑到这一点,这个称为交换的过程已经 两个动作:

换入:将高优先级进程移至 RAM,以便 CPU 更快地访问。众所周知,正在运行的进程的优先级由操作系统的调度程序分配。因此,通过检查这些优先级,您可以确定哪些进程应该被抢占,哪些进程可以暂停。

换出:这是与上一个过程相反的过程,即通过将较低优先级的进程下载到虚拟内存来释放部分 RAM 内存,为较高优先级的进程腾出空间。

这些替换过程将使用操作系统在其内核中实现的算法来执行。其中一些算法可能包括 LRU、FIFO、LIFO 等,尽管也可以使用其他几种算法。所使用的算法可能因操作系统而异,具体使用哪种算法取决于具体情况。此外,正如您所知,有一些系统管理工具允许您更改正在运行的进程的优先级,例如 Linux 中的 nice 等。当然,这些分配的优先级也会被考虑在内。

在某些情况下,值得一提的是,一些进程可能不再“活跃”,但却占用了内存资源,无法释放给其他进程使用。例如,在 Linux 中,这种情况被称为僵尸进程。

我希望你现在对虚拟内存有了更好的理解……如果你有任何问题,请不要忘记评论……

相关推荐

「狸」字组词
365bet体育在线世界杯

「狸」字组词

📅 09-25 👁️ 5246
如何快速掌握甘特图怎么制作?详尽指南教你一步步实现项目管理
碳纤维膜怎么贴?解析碳纤维膜的贴膜技巧与应用
世界杯365软件

碳纤维膜怎么贴?解析碳纤维膜的贴膜技巧与应用

📅 07-04 👁️ 6489