【问题标题】:Paging or segmentation for virtual memory, which is better?虚拟内存的分页或分段,哪个更好?
【发布时间】:2011-09-07 03:41:40
【问题描述】:

大多数操作系统使用分页来获取虚拟内存。为什么是这样?为什么不使用分段?仅仅是因为硬件问题吗?在某些情况下,一种比另一种更好吗?基本上,如果你必须选择一个而不是另一个,你会使用哪一个?为什么?

为了论证,我们假设它是 x86。

【问题讨论】:

  • 定义“更好”。一般来说,开发(尤其是操作系统)是一个权衡取舍的案例研究。
  • 此外,这在很大程度上受到您希望操作系统所针对的系统架构的限制。例如,x86 架构中存在许多限制,这使得分页成为 更好的选择。
  • @Cody Gray - 让我们假设 x86。为什么分页会好得多?我对实际硬件知之甚少,无法更好地了解。谢谢!

标签: operating-system paging virtual-memory memory-segmentation


【解决方案1】:

Windows 和 Linux 等操作系统使用 segmentationpaging 的组合。进程的虚拟内存首先被划分为段,然后每个段由很多页组成。操作系统首先进入特定段,然后在该段中定位特定页面以访问地址

【讨论】:

  • 段是Linux中的整个地址空间。它是所有进程的同一个段表。
【解决方案2】:

摘自:galvin 的操作系统概念

其中一个问题..

分段允许进程的物理地址空间是非 连续的。分页是另一种提供此功能的内存管理方案 优势。然而,分页避免了外部碎片和压缩的需要,而分段则没有。

分段问题: 出现问题的原因是,当代码片段 或者驻留在主内存中的数据需要换出,必须找到空间 在后备商店。后备存储也有同样的碎片问题 但是访问速度要慢得多,因此无法进行压缩。

分页通过以下方式解决它:

实现分页的基本方法包括将物理内存分成称为帧的固定大小的块并将逻辑内存分成 大小相同的块称为页。后备存储分为固定大小的块,这些块与内存帧或多个帧的簇大小相同。

由于 pages-frames-backing store 都被划分为相同的大小,因此不会导致外部碎片。但可能有内部碎片。 所以必须正确选择pagesize

Operating Systems concepts

【讨论】:

    【解决方案3】:

    请注意,Single-Address-Space Operating Systems 有时会使用分段来隔离进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      相关资源
      最近更新 更多