经常看到有些Linux(国内汉化版)安装手册上有这样的说明:Swap空间不能超过128M。为什么会有这种说法?在说明“128M”这个数字的来历之前,先给问题一个回答:现在根本不存在128M的限制!现在的限制是2G!
Swap空间是分页的,每一页的大小和内存页的大小一样,方便Swap空间和内存之间的数据交换。旧版本的Linux实现Swap空间时,用Swap空间的***页作为所有Swap空间页的一个“位映射”(Bit map)。这就是说***页的每一位,都对应着一页Swap空间。如果这一位是1,表示此页Swap可用;如果是0,表示此页是坏块,不能使用。
这么说来,***个Swap映射位应该是0,因为,***页Swap是映射页。另外,***10个映射位也被占用,用来表示Swap的版本(原来的版本是Swap_space ,现在的版本是swapspace2)。
那么,如果说一页的大小为s,这种Swap的实现方法共能管理“8 * ( s - 10 ) - 1”个Swap页。对于i386系统来说s=4096,则空间大小共为133890048,如果认为1 MB=2^20 Byte的话,大小正好为128M。
之所以这样来实现Swap空间的管理,是要防止Swap空间中有坏块。如果系统检查到Swap中有坏块,则在相应的位映射上标记上0,表示此页不可用。这样在使用Swap时,不至于用到坏块,而使系统产生错误。
现在的系统设计者认为:
1.现在硬盘质量很好,坏块很少。
2.就算有,也不多,只需要将坏块罗列出来,而不需要为每一页建立映射。
3.如果有很多坏块,就不应该将此硬盘作为Swap空间使用。 于是,现在的Linux取消了位映射的方法,也就取消了128M的限制。直接用地址访问,限制为2G。
【编辑推荐】