【问题标题】:Memory Management (Allocating Pages/Frames to Logical Addresses)内存管理(将页/帧分配给逻辑地址)
【发布时间】:2015-08-17 05:14:14
【问题描述】:

我是操作系统的新手,我正在阅读这本手册,以便更好地了解计算机的实际工作原理。然而,在偶然发现内存管理时,我发现在使用页表将页面和帧分配到虚拟内存位置时有点令人困惑。
假设页面/帧大小为 4K,系统为 32 位(它处理 4 字节长的地址,页面条目也是 4 字节长)。
如果同一个进程为了它的需要引用了两个不同的内存位置,比如 Virtual_MemoryLocation_A 是 222,Virtual_MemoryLocation_B 是 999,这些内存请求是否会被固定到同一个页面 0(页面表中的第一页),因为两者都没有超出框架大小范围4096 字节并被操作系统授予同一帧 X 的内存?

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为它不是编码或设计问题。它读起来更像是一个不费吹灰之力的家庭作业问题。

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


【解决方案1】:

如果你的页面大小为 4096,那么

page number = address DIV 4096
page offset = address MOD 4096

这两个值唯一标识逻辑内存位置。

两个地址可以在同一个框架中。如果不是这种情况,那么有页面就没有意义了。从 0 .. 4095 开始的所有内存位置都在同一个第零页中。

【讨论】:

  • 我在这里发现了一些基本的误解。一旦页表定义了逻辑到物理的映射,它往往会保留在原处。在某些情况下(例如,共享内存、系统内存),多个进程可以共享同一帧。
  • 我的错,我刚刚记得内部碎片是不可避免的,并且由于逻辑地址从 0 开始,一些或一些帧碰巧大部分是空的。很奇怪,我的教科书没有显示一个页表,其中同一页的多个逻辑地址映射到同一帧号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多