阅读:1850回复:11
用户态切到核心态时,选择符会变么?用户被禁言,该主题自动屏蔽! |
|
最新喜欢:jmzz00... |
沙发#
发布于:2002-02-01 10:46
低手一问:选择符是什么意思?
|
|
|
板凳#
发布于:2002-02-01 13:08
只有请xzjfile将选择符、段等等用English标注一下,我猜了半天也不明白。
|
|
地板#
发布于:2002-02-01 19:47
用户被禁言,该主题自动屏蔽! |
|
地下室#
发布于:2002-02-01 21:19
从用户态切换到核心态,选择符肯定是变的,因为他们的级别不一样,用户态是RING3而核心态是RING0,所以核心态的选择符的低三位一般都是0,并且在核心态程序的IP值最高位为一
|
|
5楼#
发布于:2002-02-01 21:23
如果想搞清楚这些东西,建议学一学汇编语言,极其保护模式
|
|
6楼#
发布于:2002-02-04 21:22
尤其在win98下用softice可以看得很清楚
核心态和用户态得选择子是不一样得 |
|
7楼#
发布于:2002-02-05 12:43
核心程序运行在ring0级,用户程序运行在ring3级;当程序由ring3进入ring0,其选择符肯定要变,因为在选择子里有相当的位来限制其该段的访问级别;即是说,在GDT、IDT or LDT中的描述符,有64位(8个字节),在描述符里提供段基地址(32位),还有几位是专门用来限定大小和权限等,建议看一点关于保护模式方面的资料
|
|
8楼#
发布于:2002-02-05 20:30
用户被禁言,该主题自动屏蔽! |
|
9楼#
发布于:2002-02-11 10:25
两个选择符选中的那个内存区是一样的
|
|
10楼#
发布于:2002-02-20 09:00
不知你注意到没,ring0级的代码段只有0028,其数据段为0030,系统只使用这两个段;而ring3级级为其他段。ring3切换到ring0就是将其段改为0028或0030(相应的权限也改),是系统映射的。反之亦然。所以两者不可能有同一内存区。即使它们对应于同一物理地址,在ring0和ring3中其段名也不一样,访问的权限也不一样。
|
|
|
11楼#
发布于:2002-02-20 23:54
In user mode:
CS=0x1b, DS=SS=0x23, FS=0x3b In kernel mode: CS=0x8, DS=0x23, SS=0x10, FS=0x30 They share the same DS... |
|
|