我们已经看到,较大的页表会导致额外的开销,因为必须将该表分成页面,然后将其存储到主内存中。
我们担心的是执行进程而不是执行页表。 页表为执行过程提供了支持。 页面越大,开销越高。
例如,我们知道 -
页面大小=页面表中的页面条目数量一个页面条目的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)字节,则开销将很小。