GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Datei, in der die Datenstruktur für Global Descriptor und Local Descriptor Table definiert ist?

Eine Google-Suche nach dem Begriff „Linux Kernel file gdt " liefert genau die Ergebnisse, nach denen Sie suchen. Dies ist der Link zum Suchergebnis des Buchs mit den Inhalten, die beschreiben, wo GDT und LDT definiert sind.

  • Alle GDTs werden in der cpu_gdt_table gespeichert Array.

  • Wenn Sie im Quellcode-Index nachsehen, können Sie sehen, dass diese Symbole in der Datei arch/i386/kernel/head.S definiert sind . Ich denke jedoch, dass der Quellcodeindex eingesehen werden kann, wenn Sie eine Kopie des Buches haben. Trotzdem wird die Datei angegeben, in der GDT definiert ist.


Für den neuesten Kernel scheint die GDT in mindestens 3 separaten Dateien definiert zu sein.

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

Das Layout der Haupt-GDT scheint in arch/x86/include/asm/segment.h definiert zu sein etwa Zeile 91. Es gibt Kommentare zum Layout oberhalb dieser Zeile.

Die fertige Tabelle wird in arch/x86/include/asm/desc.h geladen mit der Funktion static inline void native_load_gdt(const struct desc_ptr *dtr) die nur den Assembly-Opcode lgdt aufruft . Dies steht im Einklang mit der Art und Weise, wie ältere Kernel die Tabelle in den Prozessor laden. Siehe Zeile 303 hier. Ich kann jedoch keine Aufrufe dieser Funktion in der Codebasis finden. Bitte hilf jemandem, das herauszufinden.

Außerdem kann ich in neueren Kernels kein Äquivalent zum Definieren der Konstanten der aktuellen Tabelle wie in Zeile 479 finden.


Linux
  1. Gibt es ein Befehlszeilentool für die Datenvisualisierung und -analyse?

  2. Ist es möglich, dass der Linux-Dateideskriptor 0 1 2 nicht für stdin, stdout und stderr gilt?

  3. Wie kann ich tcpdump in eine Datei schreiben und die entsprechenden Daten standardmäßig ausgeben lassen?

  4. Hängen Sie bei der Auswahl zwischen ext4 und ext3 für das Dateisystem fest

  5. Wofür ist das Pluszeichen in einem Symlink, der auf „127.0.1.1:+xxxxx“ zeigt?

Warum zeigt Ls -l nicht die Uhrzeit und/oder das Jahr für jede Datei an?

Die Herausforderung und das Versprechen von Big Data

Berechtigungstabelle für Datei-/Verzeichnis- und Dateisystem-Benutzertypen

Die 15 besten ökonometrischen und statistischen Software für Linux-Systeme

Was ist effizienter - tar- oder zip-Komprimierung? Was ist der Unterschied zwischen tar und zip?

Was ist der Unterschied zwischen der Datei „authorized_keys“ und „known_hosts“ für SSH?