能力值:
( LV2,RANK:10 )
|
-
-
2 楼
准确啊,他们所有进程共享一段空间,哪一段地址对他们来说都是一样的吧
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
应该是一样的---
所有进程 看到的高端2GB内核空间都是一样的 ----
它们都存在于 物理内存 的同一个 地方---
从虚拟地址找到的物理地址是一个
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这句话听着好别扭、、、、
反正就是内核不会发生切换就是了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
应该是一样的,虽然每个进程都有自己的逻辑地址空间,但所有的进程分享相同的4GB的物理地址空间,当然指向同一个物理地址
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
不准确,至少页表部分不同
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
虚拟的地址映射到物理地址是不一样的
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
物理地址在内存里当然不一样啊
虚拟地址是一样的映射到物理地址的
|
能力值:
( LV5,RANK:60 )
|
-
-
9 楼
32bit的一个指针,可以寻址范围0x00000000-0xFFFFFFFF,4GB大小。也就是说一个32bit的指针可以寻址整个4GB地址空间的每一个字节。一个页表项负责4K的地址空间和物理内存的映射,一个页表1024项,也就是负责1024*4k=4M的地址空间的映射。一个页目录项,对应一个页表。一个页目录有1024项,也就对应着1024个页表,每个页表负责4M地址空间的映射。1024个页表负责1024*4M=4G的地址空间映射。一个进程有一个页目录。所以以页为单位,页目录和页表可以保证4G的地址空间中的每页和物理内存的映射。
每个进程都有自己的4G地址空间,从0x00000000-0xFFFFFFFF。通过每个进程自己的一套页目录和页表来实现。由于每个进程有自己的页目录和页表,所以每个进程的地址空间映射的物理内存是不一样的。两个进程的同一个虚拟地址处(如果都有物理内存映射)的值一般是不同的,因为他们往往对应不同的物理页。
4G地址空间中低2G,0x00000000-0x7FFFFFFF是用户地址空间,4G地址空间中高2G,
0x80000000-0xFFFFFFFF 是系统地址空间。访问系统地址空间需要程序有ring0的权限。
用户空间是相互隔离的,通过分页实现。而系统空间的映射是一致的,即这部分的页表项内容是一样的。
可参看潘爱民的windows内核原理与实现或深入解析windows操作系统。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
这句话听着好别扭、、、、
反正就是内核不会发生切换就是了
|
能力值:
( LV6,RANK:90 )
|
-
-
11 楼
不准确,每个进程系统空间映射有两个地方不一样:
1)PAGETABLE_MAP
2)HYPERSPACE
看看CreateProcess->MmCopyMmInfo 拷贝页面表项的这个函数实现,就明白了
|
能力值:
( LV12,RANK:230 )
|
-
-
12 楼
不准,至少还有那64kb共享
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
同意9楼观点
|
能力值:
( LV6,RANK:90 )
|
-
-
14 楼
友情提示:真相在6楼和11楼
不明白的看windows内核情景分析第三章内存管理,求批
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
听起来真别扭!.........虚拟地址跟物理地址是不一样的,虽然是映射,数值一样的可能性很小,楼主这样问不会有其他理解吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
每一个任务有一个虚拟地址空间。为了避免多个并行任务的多个虚拟地址空间直接映射到同一个物理地址空间,采用线性地址空间隔离虚拟地址空间和物理地址空间。线性地址空间由一维的线性地址构成,线性地址空间和物理地址空间对等。线性地址32位长,线性地址空间容量为4G字节。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
越看越糊涂了
|
|
|