Linux Kernel Setup GDT在哪里

问题描述 投票:3回答:1

我正在阅读Linux内核代码。我对Linux中的GDT(全局描述符表)有一些疑问。

我的[[问题是:

Where Linux Kernel Setup Large GDT? I know that in pm.c [http://lxr.free-electrons.com/source/arch/x86/boot/pm.c#L123] kernel call function setup_gdt() and it set up a small GDT with only three entries. Then jumps to protected mode code. Then where is the code to setup large GDT with 32 entries ( One specified in Understanding Linux Kernel https://books.google.co.in/books?id=h0lltXyJ8aIC&pg=PT59&lpg=PT59&dq=linux+kernel+file+gdt&source=bl&ots=gO0lH05fHX&sig=h4X1I6TP_P7JlEwzoCkQk3uztjw&hl=en&sa=X&ei=XFwPVM-WBbOBsQTtiIDIDw&redir_esc=y#v=onepage&q=linux%20kernel%20file%20gdt&f=false ) Kernel also defined constants for Large GDT set up in segment.h http://lxr.free-electrons.com/source/arch/x86/include/asm/segment.h#L46.
为什么内核使用两个步骤来设置GDT? 

如果我们将GRUB用作引导加载程序,则GRUB还在grub-core / kern / i386 / realmode.S中设置了一个GDT。为什么Linux重置此GDT?

memory-management linux-kernel operating-system kernel gdt
1个回答
0
投票
[似乎在line 91.的arch / x86 / include / asm / segment.h中定义了主要GDT的布局

初始化似乎在line 123.中的arch / x86 / kernel / cpu / common.c中]

但是我可能错了。而且不知道为什么内核使用两步两步设置GDT。

© www.soinside.com 2019 - 2024. All rights reserved.