操作系统学习中遇到的几个问题
1.GDT(全局描述符表)和LDT(局部描述符表)分别是在什么时候生成的?是根据什么生成的(是不是根据PE文件中的内容生成的),是在程序被加载到内存时生成还是在源程序编译...
1.GDT(全局描述符表)和LDT(局部描述符表)分别是在什么时候生成的?是根据什么生成的(是不是根据PE文件中的内容生成的),是在程序被加载到内存时生成还是在源程序编译成目标代码时生成并保存在PE文件中,以后每次加载程序时加载进内存。
2、页表中线形地址空间中的页和物理地址空间中的页之间的映射关系是根据什么算法建
立的?
3、一个源程序的编译过程具体是怎样进行的,是不是在内存中生成目标程序(相当于加载一次)然后再把内存中目标代码的内存映像写成一个PE文件存到硬盘上。
4、一个PE文件在最初加载到内存时往往只加载一部分,那最初被加载的这部分内容都包括哪些内容呢?
谢谢anuiz的回答,不过我有点不明白:LDT每个进程都应该有一个,所以我感觉LDT应该是在系统进入保护模式之后才建立的,而且是每当新建立一个进程时就为它建立一个LDT(局部描述符表),我说的对吗? 展开
2、页表中线形地址空间中的页和物理地址空间中的页之间的映射关系是根据什么算法建
立的?
3、一个源程序的编译过程具体是怎样进行的,是不是在内存中生成目标程序(相当于加载一次)然后再把内存中目标代码的内存映像写成一个PE文件存到硬盘上。
4、一个PE文件在最初加载到内存时往往只加载一部分,那最初被加载的这部分内容都包括哪些内容呢?
谢谢anuiz的回答,不过我有点不明白:LDT每个进程都应该有一个,所以我感觉LDT应该是在系统进入保护模式之后才建立的,而且是每当新建立一个进程时就为它建立一个LDT(局部描述符表),我说的对吗? 展开
1个回答
展开全部
1,gdt和ldt是在操作系统初始化的时候生成并载入的.因为系统需要从实模式切换到保护模式,而保护模式下内存寻址需要用到gdt和ldt.
GDT和LDT是由操作系统的特性来决定的.PE文件头中并没有LDT的内容啊.在加载一个程序的时候操作系统会根据内存情况来添加或修改GDT和LDT的内容.
2,根据页表中对应的基地址+逻辑线形地址=物理地址
3,不同的编译程序有不同的工作方式,但是你所表达的意思好象不是很正确.相当于加载一次是不对的哦.你可以看一下各大学的<<编译原理>>
4,当然是先打开文件头这部分,读取相关信息……最先被用到的部分最先被加载到内存。在WINDOWS系统下采用了FILEMAP的方式。
从你的问题来看,好象你的学习过程并不够系统。建议你找基本教程系统的学习一下。
附:有本书,大约叫《MFC深入引导》,很厚的一本,内容的后半部分对WINDOWS操作系统进行了很详细的说明,你可以找找看哦。还有如果你还是想知道GDT,LDT更详细的内容的话,建议你看一下 X86保护模式下的汇编 那本书。
GDT和LDT是由操作系统的特性来决定的.PE文件头中并没有LDT的内容啊.在加载一个程序的时候操作系统会根据内存情况来添加或修改GDT和LDT的内容.
2,根据页表中对应的基地址+逻辑线形地址=物理地址
3,不同的编译程序有不同的工作方式,但是你所表达的意思好象不是很正确.相当于加载一次是不对的哦.你可以看一下各大学的<<编译原理>>
4,当然是先打开文件头这部分,读取相关信息……最先被用到的部分最先被加载到内存。在WINDOWS系统下采用了FILEMAP的方式。
从你的问题来看,好象你的学习过程并不够系统。建议你找基本教程系统的学习一下。
附:有本书,大约叫《MFC深入引导》,很厚的一本,内容的后半部分对WINDOWS操作系统进行了很详细的说明,你可以找找看哦。还有如果你还是想知道GDT,LDT更详细的内容的话,建议你看一下 X86保护模式下的汇编 那本书。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询