Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Operating system 32位处理器如何处理4G内存_Operating System - Fatal编程技术网

Operating system 32位处理器如何处理4G内存

Operating system 32位处理器如何处理4G内存,operating-system,Operating System,我不明白这一点,因为2^32是4G位,不是字节,对吗?因为2^2*1024*1024*1024位对吗?我错了吗?内存中最小的可单独寻址单元是一个字节。比特没有地址。您必须读取一个或多个字节,然后进行位屏蔽等操作,才能获取各个位。不,它是千兆字节。一个字节有8位,所以你必须将结果数字乘以8才能得到这些位。正如约翰在他的回答中所说,你不能处理单个比特,你必须进行比特移位和掩蔽才能处理单个比特。就我大学时代的记忆而言,就是这样 如果32=地址总线的大小,那么可以寻址的内存地址总数=2^32=42949

我不明白这一点,因为2^32是4G位,不是字节,对吗?因为2^2*1024*1024*1024位对吗?我错了吗?

内存中最小的可单独寻址单元是一个字节。比特没有地址。您必须读取一个或多个字节,然后进行位屏蔽等操作,才能获取各个位。

不,它是千兆字节。一个字节有8位,所以你必须将结果数字乘以8才能得到这些位。正如约翰在他的回答中所说,你不能处理单个比特,你必须进行比特移位和掩蔽才能处理单个比特。

就我大学时代的记忆而言,就是这样

如果32=地址总线的大小,那么可以寻址的内存地址总数=2^32=4294967296

但是,这些是内存位置的4294967296地址。由于每个内存位置本身=1个字节,因此这为我们提供了可以寻址的4294967296个字节


因此可以寻址4GB内存。

上述答案解决了这个问题,如果您希望寻址超过4GB的内存,则可以使用偏移内存寄存器,这可以帮助您寻址更宽的范围

在旧的游戏机时代,SNE和Megadrive游戏是以兆比特为单位的,因为根据定义,8兆比特的游戏听起来比1MB的游戏大。最后大多数人都说8Megs,所以这种混乱再次给大多数人留下了8Megabytes的印象。我不确定brett是否在谈论SNES或Megadrive编程,但请记住8兆字节=1兆字节。

所以我能访问的最小值是一个字节?我听说在32位机器上是4字节,64位机器上是8字节。我错了吗?@brett:在过去几十年的所有普通机器上都是8位(位,而不是字节)。。。。这就回答了“如何”的问题Dunno Brett没有说他在说什么平台,但对我来说,当一个人说兆比特时,它一定是指80/90sI的控制台,我猜你指的是PAE(页面地址扩展)?它只允许内核访问4GB以上的内存(并将4GB以上的内存映射到任务页面列表),但每个任务仍限于4GB虚拟地址空间。在32位x86上,无论您做什么,指针都只有32位:-)