guasan 发表于 2004-11-30 19:17:36

关于页面对齐

给出I386处理器家族的页面定义:
#define PAGE_SIZE 12 //物理页面的大小:4K
#define PAGE_MASK (~(PAGE_SIZE-1))

现有代码:
address&=PAGE_MASK;

此处,address被按页面大小对齐了,请问这个算法怎么算的?高手执教,谢谢

crquan 发表于 2004-11-30 23:12:57

你抄错了吧,我记得内核通常的定义方式:

#define PAGE_OFFSET 12
#define PAGE_SIZE (1<<PAGE_OFFSET)
#define PAGE_MASK (~(PAGE_SIZE-1))

address &= PAGE_MASK;    // now addresss page aligned

即 OFFSET, SIZE, MASK 几个一起定义

PAGE_SIZE = 0x00001000
PAGE_MASK = 0xfffff000

这样就很明显了。

guasan 发表于 2004-12-2 15:28:55

还是看不太懂,能不能把算法说一说?

guasan 发表于 2004-12-2 15:41:05

谢谢,我想明白了,谢谢你。
页: [1]
查看完整版本: 关于页面对齐