能力值:
( LV7,RANK:100 )
|
-
-
2 楼
windows只靠分页来隔离的
windows下虚拟地址=线性地址
windows下的CS,DS对应的段描述符实际指向的是同一个段(就一个4G的平坦段),只是使用了别名技术,顺便规定了访问权限
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我建了驱动开发群,群号--67181435
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
的确如better同学所说的虚拟地址=线性地址,我调试windows时也发现ring3下cs对应的段基址为0,表明ring3下虚拟地址跟线性地址数值上是相等的,这样我就混乱了。。。但是现在cs值固定,段基址不是都是0,如果有两个进程同时运行,那同样虚拟地址,岂不是都对应同样的线性地址,也就是说对应同样的物理地址,这样不会发生相互干扰吗。。。。
分页怎么隔离,是不是每个进程都有自己的cr3,然后定出不同的页目录,页表,以实现相同的虚拟地址也能定位到不同的物理地址??。。。。cr3是每个进程独有一份吗??,如果这样的话,貌似还可以实现隔离。。。。
|
能力值:
( LV7,RANK:100 )
|
-
-
5 楼
分页怎么隔离,是不是每个进程都有自己的cr3,然后定出不同的页目录,页表,以实现相同的虚拟地址也能定位到不同的物理地址??。。。。cr3是每个进程独有一份吗??,如果这样的话,貌似还可以实现隔离。。。。
that's right!!
|
能力值:
( LV9,RANK:610 )
|
-
-
6 楼
你说对了,每个进程都有自己的PDE,KeAttachProcess的主要工作也就是切换cr3
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
不需要去乱理解,进程A有4G可见内存地址,和物理地址有个对应关系,我们使用时 使用的是可见的内存地址,比如00400000,另一个进程B内也有00400000内存地址,进程A访问00400000,不会跑到B的00400000,各进程之间地址是独立的,不能互相访问的,只对当前进程可见,我们无法直接的访问物理地址,新手能真正的理解到这个简单的问题就不会感到莫名其妙的困惑了,我之前也困惑过。想研究内核和换页机制的sys kernel design的问题,以后再学咯!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
哦。。。谢谢ls几位大大的帮忙。。。昨晚想这个问题想了一个晚上,头脑混乱滴不行。。今天终于解决了。。。真开心。。
|
|
|