好的,所以我在 Stack 上进行了一些搜索,但找不到这个问题的答案。这是课堂上提到的东西,但教授没有具体说明如何解决这个问题。
如果我们假设一个系统是 64 位的,并且有 128GB 的物理内存,但我们希望进程以 256GB 的方式运行,我如何计算逻辑地址所需的位?
到目前为止,我所做的所有研究都涉及 2-4GB 的物理内存,我终生无法弄清楚如何计算它。我需要知道这一点才能理解页面的位移和条目......
好的,所以我在 Stack 上进行了一些搜索,但找不到这个问题的答案。这是课堂上提到的东西,但教授没有具体说明如何解决这个问题。
如果我们假设一个系统是 64 位的,并且有 128GB 的物理内存,但我们希望进程以 256GB 的方式运行,我如何计算逻辑地址所需的位?
到目前为止,我所做的所有研究都涉及 2-4GB 的物理内存,我终生无法弄清楚如何计算它。我需要知道这一点才能理解页面的位移和条目......
所需的位数不仅取决于进程的大小,还取决于每个地址指向的字节数。
一般公式为:
num_of_bits = ceiling(log_2(size_of_process_in_bytes / bytes_pointed_by_an_address))
也许这会有所帮助。给定一个 32 位,我们有: 2 的 32 次方 = 4 294 967 296 => 4GB 32 位字长可访问的最大地址空间。
对于 64 位系统,我们有: 2 的 64 次方 = 18 446 744 073 709 551 616 => 16EB (EB = exbibytes) 64 位字长可访问的最大地址空间,实际上是无限的,但我们是受硬件限制(例如,我的主板最多只支持 24GB)。
希望这可以帮助!