进程的地址空间和寻址空间一样吗?
发布网友
发布时间:2022-05-25 11:46
我来回答
共3个回答
热心网友
时间:2023-10-09 16:39
地址空间就是程序可以使用的地址的集合,是一个集合。你就把地址想象成电话号码,而一系列的号码组成了一个电话号码空间。
现在的操作系统都是比较先进的,用户程序不能直接使用物理地址空间(为了安全),所以操作系统为每个进程创建了一个地址空间,称为虚拟地址空间.(注意是每个进程有一个虚拟地址空间),对应的地址是虚拟地址。
如果程序要从内存中读写一个字节的话,首先使用的是虚拟地址空间的地址进行读写,CPU执行这条指令(包含虚拟地址空间的地址),然后将这条指令发送出去,在半路上被一个称为MMU的强盗拦截了,然后这个强盗将虚拟地址替换成了物理地址,然后将这个地址传送到内存。
每个进程都是0x00000000到0xffffffff的寻址空间,4个g。 这里的“0x00000000到0xffffffff”指的是虚拟地址。
比如说进程A的寻址空间是0x00000000到0xffffffff,进程B也是这个,那岂不是这两个进程的地址空间是一样的?
这两个进程的地址空间是不一样的。打个比方,每个进程的地址空间就好像是不同地区的固定电话号码空间,不同地区的电话号码可以重叠,但是不会互相影响,是不同的东西。
不知道我又没有说清楚!!!!!
总之每个进程被分配一个地址空间(称为虚拟地址空间),进程中的程序使用的地址就是这个地址空间的地址(称为虚拟地址),而实际进行的内存读写使用的是内存条的物理地址,在程序进行内存读写时,有一个称为内存管理单元的硬件(MMU)将虚拟地址映射到物理地址进行读写。
热心网友
时间:2023-10-09 16:39
通常人们认为,内存容量越大,处理数据的能力也就越强,但内存容量不可能无限的大,它要受到系统结构、硬件设计、制造成本等多方面因素的制约,一个最直接的因素取决于系统的地址总线的地址寄存器的宽度(位数)。 计算机的寻找范围由总线宽度(处理器的地址总线的位数)决定的,也可以理解为cpu寄存器位数,这二者一般是匹配的。
热心网友
时间:2023-10-09 16:40
绝对是、肯定是一样的追问两个进程的地址空间不是说不能一样的吗?
追答应该可以。