虚拟内存效应及分页与分段的关系

virtual memory effects and relations between paging and segmentation

这是我的第一个 post。我想问一下虚拟内存和分页、分段有什么关系。我在互联网上搜索了几天,但仍然无法将这些信息整理成正确的顺序。这是我目前所知道的:

我们可以讨论内存中的地址(我们可以说它们是内存抽象级别):

所以我们来到了我不太理解的部分:

  1. 为什么在一些资料中逻辑地址和虚拟地址被描述为同义词?我是不是弄错了什么?

  2. 虚拟内存真的对进程起到保护作用吗?我的意思是,例如在分段中还检查进程是否不访问其他内存(如果访问会导致段错误),分页在页面 table 中也有一个保护位,所以保护不是来自简单地扩展逻辑级地址的抽象?如果 VM(虚拟内存)带来扩展保护功能,它们是什么以及它们如何工作?换句话说:是否为每个进程创建单独的地址space,带来扩展内存保护。如果是这样,没有VM就不能实现分页了?

  3. 分页分段与分段分页的真正区别。我知道这两者之间的区别在于地址的构造方式(页码、段号等),但我认为开发两种策略还不够。这个理由就像没有。我读到分段分页的弹性较低,这就是它很少被使用的原因。但为什么它的弹性较差?原因是,在程序中你只能有几个片段而不是很多页面。如果是这样的话,分页确实允许更好的 "granularity".

  4. 如果 VM 为每个进程创建单独的地址 space,这是否意味着,没有 VM 的分页使用来自 "one pool" 的逻辑地址(那么每个逻辑地址是否全局唯一案件?)。

如能提供有关该主题的任何帮助,我们将不胜感激。

编辑:#1
行。终于明白了,不按需分页也是一种虚拟内存。我只是发现一些说明有助于理解该主题。下面是 link 我制作的图像,用于可视化差异。感谢您的帮助。

differences between paging, demand paging and swapping

Why in some sources logical address and virtual addresses are described as synonymes? Do I get something wrong?

许多来源将逻辑和虚拟内存转换混为一谈。在过去,没有虚拟地址转换就不会发生逻辑地址转换,因此处理器文档将它们称为相同的。

现在我们有大内存系统,使用逻辑内存转换而不使用虚拟内存。

Is really virtual memory making protection to processes?

它是实现页面保护的逻辑内存翻译。

How really differ paged segmentation from segmented paging.

你真的可以忽略段。 1970 年后设计的合理设计的处理器架构都没有使用段,它们最终会消失。

If VM make separate address space for each process, does it mean, paging without VM use logic addresses from "one pool"

逻辑内存为每个进程创建单独的地址space。分页是虚拟内存。缺一不可。