内存管理(分配 Pages/Frames 到逻辑地址)
Memory Management (Allocating Pages/Frames to Logical Addresses)
我是操作系统的新手,我正在阅读这本手册,以便更好地了解计算机的实际工作原理。然而,在偶然发现内存管理后,我发现在使用页面 tables 将页面和框架分配给虚拟内存位置时有些混乱。
说 Page/Frame 大小是 4K,系统是 32 位(它处理 4 字节长的地址,页面条目也是 4 字节长)。
如果同一个进程根据需要引用两个不同的内存位置,比如 Virtual_MemoryLocation_A 是 222 而 Virtual_MemoryLocation_B 是 999,这些内存请求是否会被固定到同一个页面 0(页面 table 中的第一页) 因为两者都没有超出 4096 字节的帧大小范围并且被 OS 授予同一个帧 X?
内存
如果您的页面大小为 4096,则
page number = address DIV 4096
page offset = address MOD 4096
这两个值唯一标识逻辑内存位置。
两个地址可以在同一个帧中。如果不是这样,那么页面就没有意义了。从 0 .. 4095 开始的所有内存位置都在同一个第零页中。
我是操作系统的新手,我正在阅读这本手册,以便更好地了解计算机的实际工作原理。然而,在偶然发现内存管理后,我发现在使用页面 tables 将页面和框架分配给虚拟内存位置时有些混乱。
说 Page/Frame 大小是 4K,系统是 32 位(它处理 4 字节长的地址,页面条目也是 4 字节长)。
如果同一个进程根据需要引用两个不同的内存位置,比如 Virtual_MemoryLocation_A 是 222 而 Virtual_MemoryLocation_B 是 999,这些内存请求是否会被固定到同一个页面 0(页面 table 中的第一页) 因为两者都没有超出 4096 字节的帧大小范围并且被 OS 授予同一个帧 X?
如果您的页面大小为 4096,则
page number = address DIV 4096
page offset = address MOD 4096
这两个值唯一标识逻辑内存位置。
两个地址可以在同一个帧中。如果不是这样,那么页面就没有意义了。从 0 .. 4095 开始的所有内存位置都在同一个第零页中。