当前位置:  技术问答>linux和unix

一个关于GDT初始化的问题

    来源: 互联网  发布时间:2016-01-21

    本文导语:  为什么要对GDT或LDT进行初始化??什么类型的GDT或LDT不用初始化??    因为我看到有些GDT在进入保护模式前并没有进行初始化就直接用他的选择子了,比如:我看到一段程序,没有进行初始化就直接从实模式下跳到用...

为什么要对GDT或LDT进行初始化??什么类型的GDT或LDT不用初始化??
   因为我看到有些GDT在进入保护模式前并没有进行初始化就直接用他的选择子了,比如:我看到一段程序,没有进行初始化就直接从实模式下跳到用于开启分页机制的GDT选择子下了

|
首先,保护模式下使用的是gdtr寄存器,该寄存器中存放的是gdt的起始地址和界限,而gdt本身,只是一个内存中的数据结构,每个gdt表项对应一个段。
所以,gdt在定义时可以初始化部分或者全部数据,但有些不好确定的可以放到后面再定义。当使用lgdt指令加载gdtr寄存器时,只是确定了内存中gdt这个数据结构的起始位置和界限。而并没有保证里面所有值都是正确的。所以在加载gdt后仍然可以修改gdt这个数据结构中的内容

ldt同理

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux GDT、 LDT
  • 天看linux得源代码有这样一段,不甚明白,ENTRY(gdt_table)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3