阅读:2036回复:7
获得gdt地址的问题
我的机器是intel双核,操作系统是xp sp2.
我用如下方式获得gdt typedef struct _GDTR { USHORT limit; ULONG base; }GDTR,*PGDTR; void main() { GDTR gdtr; __asm sgdt gdtr; printf("%x\n",gdtr.base); } 我获得的值在两个值之间变化,ccccf772和cccc8003 听说是因为双核的原因,那怎么解决呢,我想通过调用门进入内核. 我又把几乎相同的代码放在内核下运行,得到的也是两个值,但是和用户态下得到的又不相同 f78ef772和f78e8003,这又是为何啊? |
|
沙发#
发布于:2008-01-20 22:55
我也遇到同样的问题啊 盼望解答
|
|
板凳#
发布于:2008-01-23 14:16
今后的计算机都是多核了,我们还怎么编程呀
盼望高手救命啊! |
|
地板#
发布于:2008-01-23 14:18
大家都来看看呀,看看你们有没有遇到同样的问题~~~~
|
|
地下室#
发布于:2008-01-24 14:00
是不是可以设置线程的亲缘性,只定在某个CPU上执行,具体函数忘了。
|
|
5楼#
发布于:2008-03-13 09:50
我的双核很正常......
但sgdt在虚拟机中执行就不正常....... 不管几核还几CPU,只要使用的是同一块内存,(99.99%机器都是这样的) 所有的GDT就应该是一样的! 不会出现每个cpu有不同的gdt |
|
6楼#
发布于:2008-03-13 14:07
typedef struct _GDTR
{ USHORT limit; ULONG base; }GDTR,*PGDTR; 结构要按字节对齐. |
|
|
7楼#
发布于:2008-03-15 10:54
s或Re:获得gdt地址的问题
对不起,我说错了!我道歉双核CPU有2个不同的GDTR......但里面的描述是一样的 |
|