wdl7770016 发表于 2011-7-29 19:16:48

请问“在x86系统中,每个内存页的大小是4K”这句话是什么意思呢?

本帖最后由 wdl7770016 于 2011-7-29 19:17 编辑

【在开始之前,我们先了解一下对齐的一些概念:文件区块有两种对齐值,一种是磁盘文件中的,另一种是内存中的。PE文件被映射到内存时,区块总是至少以一个页边界为开始,在x86系统中,每个内存页的大小是4K,也就是0x1000字节,所以在x86系统中,PE文件区块的内存对齐值一般等于0x1000,每个区块按0x1000之倍数内存偏移位置开始。另一种是磁盘对齐值,这个实例磁盘对齐值是0x1000,每个区块按0x1000之倍数的文件偏移位置开始。有时为了使磁盘文件更小些,你可以用0x200对齐值。】

这是原文。。。。
内存页的大小是固定的吗?
内存页的大小不是可以自己改变的吗?

bevin 发表于 2011-7-29 19:36:45

我也不清楚,期待高手解答。。。。

死亡请帖 发表于 2011-7-29 21:25:50

{:5_94:}还在学16位汇编的路过。。。

x8888k 发表于 2011-7-30 08:30:52

weixianlang 发表于 2011-7-30 11:54:39

比如我们有一张A4纸,相当于一块内存,我们把它分成四等分,这四个等分就是内存页面,然后我们在第一个页面画一个圆, 占用了一大半, 再想画一个圆的话,不可能再在第一个页面画了,因为位置不够,我们必须到第二个页面去把这个圆画出来,每个页面剩下了就由空白填充, 举个具体的例子有一个命令是jmp ****, 它的机器码是E9 ****X,E9只占用一个字节,而后面的地址占用4个字节,那么按常规的数据存储的话,这句命令会占用8个字节的长度,因为E9占用了一个字节,但是这个页面容不下接下来的地址,所以地址会被储存到下一个页面,E9自己就占了一个页面,即4个字节,如果我们不想他这样存储,可以用#pragma pack(1) , 即设置对其值为1字节,那么这句命令就会按一字节对其来储存,就只占用9个字节的空间了!

yulin3192 发表于 2011-7-30 13:01:04

谜糊啊:dizzy::dizzy:

wdl7770016 发表于 2011-7-30 19:06:21

x8888k 发表于 2011-7-30 08:30 static/image/common/back.gif
楼主去看计算机组成原理这本书吧,我一两句话也说不清

。。。。额。

wdl7770016 发表于 2011-7-30 19:11:45

weixianlang 发表于 2011-7-30 11:54 static/image/common/back.gif
比如我们有一张A4纸,相当于一块内存,我们把它分成四等分,这四个等分就是内存页面,然后我们在第一个页面画一 ...

貌似懂了点但我觉得你好像没回答到问题上啊- -   能再解释下是x86系统下固定内存页的大小为4kB吗?我感觉那原文中说的就好像是固定的啊?   还是说我们能改不好意思 因为没那么多时间看计算机组成原理    所以才来问 希望有看过的童鞋可以帮帮忙。。
页: [1]
查看完整版本: 请问“在x86系统中,每个内存页的大小是4K”这句话是什么意思呢?