GNU/Linux >> Linux の 問題 >  >> Linux

Global Descriptor および Local Descriptor テーブルのデータ構造が定義されているファイルは?

Linux カーネル ファイル gdt」という用語の Google 検索 " は、探している正確な結果をもたらします。これは、GDT と LDT が定義されている場所を説明するコンテンツを含む書籍の検索結果へのリンクです。

  • すべての GDT は cpu_gdt_table に保存されます

  • ソース コード インデックスを見ると、これらのシンボルがファイル arch/i386/kernel/head.S で定義されていることがわかります。 .ただ、ソースコード索引は単行本を持っていれば見れると思います。それにもかかわらず、GDT が定義されているファイルが提供されます。


最新のカーネルでは、GDT は少なくとも 3 つの個別のファイルで定義されているようです。

  • arch/x86/include/asm/desc_defs.h
  • arch/x86/include/asm/desc.h
  • arch/x86/include/asm/segment.h

メイン GDT のレイアウトは arch/x86/include/asm/segment.h で定義されているようです 91 行目あたり。この行の上にレイアウトに関するコメントがあります。

完成したテーブルは arch/x86/include/asm/desc.h でロードされます 関数 static inline void native_load_gdt(const struct desc_ptr *dtr) で アセンブリオペコード lgdt を呼び出すだけです .これは、古いカーネルがテーブルをプロセッサにロードする方法と一致しています。ここの 303 行を参照してください。ただし、コード ベースでこの関数の呼び出しが見つかりません。誰かがこれを理解するのを手伝ってください。

また、新しいカーネルの 479 行目のように、実際のテーブルの定数を定義するのと同等のものを見つけることができません。


Linux
  1. MySQL –InnoDBのテーブルごとのデータへの変換

  2. Linux用のどのファイル圧縮ソフトウェアが最大のサイズ縮小を提供しますか?

  3. .exrcと.vimrcの違いは?

  1. Ls -lがすべてのファイルの時間や年を表示しないのはなぜですか?

  2. ビッグデータの挑戦と約束

  3. Linuxファイル記述子0 1 2がstdin、stdout、およびstderrではない可能性はありますか?

  1. tcpdump でファイルに書き込み、標準出力に適切なデータを出力するにはどうすればよいですか?

  2. 「127.0.1.1:+xxxxx」を指すシンボリックリンクで、プラス文字は何のためのものですか?

  3. SSHのauthorized_keysファイルとknown_hostsファイルの違いは何ですか?