OS 基础教程

进程管理

同步

死锁

内存管理

文件管理

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/os-finding-optimal-page-size.html

查找最佳页面大小


我们已经看到,较大的页表会导致额外的开销,因为必须将该表分成页面,然后将其存储到主内存中。

我们担心的是执行进程而不是执行页表。 页表为执行过程提供了支持。 页面越大,开销越高。

例如,我们知道 -

页面大小=页面表中的页面条目数量一个页面条目的X大小
下面来看一个例子,
虚拟地址空间= 2 GB = 2 X 2 ^ 30字节
页面大小= 2 KB = 2 X 2 ^ 10字节
页表中的页数=(2 X 2 ^ 30)/(2 X 2 ^ 10)= 1 M页

将会有100万页这是相当大的数字。 但是,尝试使页面大小更大,例如:2MB。

然后,页表中的页数=(2 X 2 ^ 30)/(2 X 2 ^ 20)= 1K页。

如果比较两种情况,可以知道页面大小与页面大小成反比。

在分页中,最后一页总会有浪费。 如果虚拟地址空间不是页面大小的倍数,那么将剩余一些字节,并且必须将整个页面分配给那些许多字节。 这只是一个开销。

让我们考虑一下,

页面大小= 2 KB
虚拟地址空间= 17 KB
然后页数 = 17 KB / 2 KB

页数将为9,但第9页只包含1个字节,剩余的页面将被浪费。

一般来说,

如果页面大小= p个字节
项目大小= e字节
虚拟地址空间= S字节
然后,开销:O =(S / p)X e +(p / 2)

平均而言,虚拟空间中浪费的页面数量为p / 2(总页数的一半)。

因为,最小的开销,

∂O/∂p = 0   
-S/(p^2) + ½ = 0  
p = √ (2.S.e) bytes

因此,如果页面大小为√(2.S.e)字节,则开销将很小。