虚拟内存和物理内存

时间:2015-07-20 19:09:29

标签: process operating-system paging memory-address virtual-memory

我正在从Abraham Silberschatz和Galvin的书“操作系统概念”一书中研究内存管理单元(MMU)的概念。虽然第8章之前情况还算不错。但是从第9章开始,事情就开始搞乱了。

我不清楚我的虚拟内存是什么?此外,物理和逻辑地址现在似乎令人困惑?它(虚拟内存)是否存在? 根据我现在的理解,我的系统的RAM就是我称之为物理(或主要)内存。我有8GB RAM和64位操作系统。因此,我的RAM可以容纳2 ^ 64-1个地址。这就是我所说的物理地址空间吗?另外,逻辑地址空间究竟是什么?

每个进程必须在主内存中执行,否则它驻留在硬盘上。给我的代码指令驻留在硬盘上的地址是我称之为逻辑地址的吗?当它被加载到RAM中时,因为位置不是固定的,因此代码可以在任何地方加载,这里分配的地址(RAM)称为物理地址?我认为这种映射称为逻辑 - 物理地址映射。

现在,由于我的代码或进程的大小可能大于可用RAM的大小,因此使用虚拟内存。据我所知,这是一个抽象,给程序员一个视图,他在系统上有无限的可用内存。它基本上是一个硬盘区域,其中一些来自RAM的进程(很少使用)被换出。同时将所需页面放入主存储器中。是这样吗?那么是什么决定了硬盘上这个区域的大小?此外,RAM很便宜,为什么我们需要这样的机制?我们不能增加我们的RAM大小而不是包括交换的开销吗?

我在网上搜索了很多但没有找到这些术语之间的确切定义和区别。请帮忙!

由于

2 个答案:

答案 0 :(得分:3)

  

据我所知,这是一个抽象,给程序员一个视图,他在系统上有无限的可用内存。

基本上是正确的。

  

它基本上是一个硬盘区域,一些来自RAM的进程(很少使用)被换出。

不,这是分页或交换,几乎与虚拟内存无关。您可以在没有虚拟内存的情况下进行交换和分页(事实上,交换首先出现在历史上)。您可以在没有分页或交换的情况下拥有虚拟内存(就像许多嵌入式设备一样)。

虽然许多现代操作系统使用虚拟内存来实现分页/交换,但虚拟内存 与分页或交换无关。

  

另外,RAM很便宜,为什么我们需要这样的机制呢?我们不能增加我们的RAM大小而不是包括交换的开销吗?

RAM不是那么便宜,我们想浪费它来保存可能永远不会被访问的数据。例如,考虑一下您的操作系统启动时启动的计算机上的所有服务。每个服务都会将一些代码加载到内存中并占用一些RAM来保存其结构。如果有的话,其中许多服务将无法运行数天。你真的希望所有那些东西永远混乱RAM吗?

答案 1 :(得分:1)

  

我正在从名为"操作系统概念"的书中研究内存管理单元(MMU)的概念。 - Abraham Silberschatz和Galvin。虽然第8章之前情况还不错。

如果你在第8章读到这本书之前感到困惑,我向你致敬!

物理:系统上的实际硬件内存。

逻辑:线性内存地址到物理内存的映射是否与物理内存地址无关。

逻辑内存为系统提供基本安全性。每个进程都有自己的逻辑地址空间。这通常分为用户空间和系统空间。在用户空间中,相同的逻辑地址通常映射到不同的物理地址。在系统空间中,相同的逻辑地址映射到相同的物理地址。

  

因此,我的RAM可以容纳2 ^ 64-1个地址。这就是我所说的物理地址空间吗?另外,逻辑地址空间究竟是什么?

这是逻辑地址空间。虚拟地址可以与逻辑地址空间相同,但操作系统通过系统参数或进程配额通常会限制较小。

虚拟内存:逻辑到物理内存映射是在软件中模拟的。逻辑内存的每一页都映射到磁盘空间块。逻辑地址可能是也可能不是指实际的物理内存地址。

  

每个进程必须在主内存中执行,否则它驻留在硬盘上。给我的代码指令驻留在硬盘上的地址是我称之为逻辑地址的吗?

有点儿。当您访问逻辑内存地址并且尚未映射到内存时,它会触发页面错误(可重新启动的指令)。调用操作系统的故障处理程序(通常使用相同的方法将除以零或中断)。该处理程序尝试从磁盘加载内存。

当程序启动时,页面错误就像疯了一样,然后通常会关闭。

  

当它被加载到RAM中时,由于位置不固定,因此代码可以加载到任何地方,这里分配的地址(RAM)称为物理地址?

当页面加载时,它是一个物理地址。操作系统设置进程页表,以便将逻辑地址映射到正确的物理地址。

  

它(虚拟内存)是否存在?

是。尝试运行具有8GB内存和4GB专用于Windoze仿真器的Mac。您将快速耗尽物理内存。

  

另外,RAM很便宜,为什么我们需要这样的机制呢?我们不能增加RAM大小而不是包括交换的开销吗?

在32个虚拟内存和8MB物理内存的日子里,虚拟内存至关重要。在1980年代早期,8MB的内存需要一个冰箱大小的内阁。在未来,虚拟内存很可能会完全消失,因为正如你所说,内存是(或将会)便宜。

我希望当我们开始在基于TB磁盘的操作系统(例如,太监和Windoze)中看到内存时,就像渡渡鸟一样。

  

据我所知,它是一种抽象,可以让程序员看到他在系统上有无限的内存。

那是非常合乎逻辑的记忆。虚拟内存是模拟逻辑地址空间的某些部分。在32位系统上,用户空间可能有2 ^ 31个逻辑地址。但是,系统可能会将您限制为2 ^ 20(选择一个数字)虚拟地址。

  

它基本上是一个硬盘区域,其中一些来自RAM的进程(很少使用)被换出。

没有。所有进程必须具有所有内存的磁盘备份。磁盘空间(页面文件,交换分区)的大小限制了可用的虚拟内存量。

  

然后是什么决定了硬盘上这个区域的大小?

通常必须有与虚拟内存一样多的磁盘空间。