内存地址映射的 4GB 问题??????????
朋友们:
看很多书和资料都说内存地址映射的4GB的分配很重要,但是我不明白这4GB是怎么回事,哪儿有这4GB的空间啊,如果没有那他又是怎么来分配的啦。。。。。。实际中也没有这4GB的空间,如果是虚拟的,我的实际地址也没有4GB,那么它怎么对应到实际物理地址呢????????????????
希望大虾指点,谢谢!!!
欢迎朋友们共同讨论!!!
[解决办法]
http://server.zdnet.com.cn/server/2009/0105/1301428.shtml
[解决办法]
操作系统中内存管理有说吧 呵呵...
[解决办法]
#include <sys/types.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>int main(){ int status; pid_t pid_arr[10]; int i; void * xxx; for (i=0; i<10; i++) { pid_arr[i] = 0; } pid_arr[0] = fork(); if (pid_arr[0] == -1) { printf("fork failed\n"); exit(1); } pid_arr[1] = fork(); if (pid_arr[1] == -1) { printf("fork failed\n"); exit(1); } pid_arr[2] = fork(); if (pid_arr[2] == -1) { printf("fork failed\n"); exit(1); } pid_arr[3] = fork(); if (pid_arr[3] == -1) { printf("fork failed\n"); exit(1); } xxx = malloc(2*1024*1024*1000); if (xxx == NULL) printf("malloc failed\n"); sleep(10); for (i=0; i<10; i++) { if (pid_arr[i] != 0) { waitpid(pid_arr[i], &status, 0); } } printf("process exit!\n"); return 0;}
[解决办法]
2的32次方。
[解决办法]
地址空间是指CPU最大能寻址多少空间范围
不要把它与你的内存条大小混为一谈
它是通过MMU(采用页映射)来对应到实际内存上去的
在需要用到某一页中的地址范围时,就会将该页与内存确立映射 关系
[解决办法]
linux
[解决办法]
因为地址线是32根,所以逻辑寻址范围是4G BYTE,2的32次方。当然实际可能没有这么大就需要mmu。
具体的google之。