Linuxカーネルコードを読んでいます。Linux の GDT (Global Descriptor Table) について疑問があります。
私の質問は次のとおりです。
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 をセットアップするために 2 つのステップを使用するのはなぜですか?
GRUB をブートローダーとして使用している場合、GRUB は grub-core/kern/i386/realmode.S に 1 つの GDT もセットアップします。Linux がこの GDT をリセットするのはなぜですか?