Hallo,
Wenn es in Ring 3 ginge, könntest du den ganzen Speicherschutz vergessen, weil der Userspace sich selber definieren dürfte, was er benutzen darf und was nicht...
Da der LLDT nur einen Selector für die GDT lädt und nicht selber eine beliebige (selbst erstellte) LDT laden kann ist das eventuell nicht ganz so drastisch, trotzdem besteht natürlich das Risiko das ein Prozess so die LDT eines anderen Prozesses laden könnte und damit wäre der Speicherschutz (zwischen den Prozessen) auf jeden Fall komplett ausgehebelt.
Rein vom Bauchgefühl her würde ich sagen LLDT ist Ring 0 only, alles andere macht auch keinen Sinn.
Da hier meines Wissens nach noch niemand den Befehl LLDT benutzt hat dürfte diese Lücke im Wiki auch verständlich sein. Bei solchen exotischen Spezialdingen dürfte nur ein Blick ins Manual 100% Gewissheit geben, nebst dessen das bei so unüblichen Dingen das Wiki auch keinen Anspruch auf Vollständigkeit erheben muss.
Der Kontext aus dem ich das schreibe sind meine Recherchen zu Speicherschutz für Threads - LDTs würden sich als geeigneter Mechanismus anbieten
Du möchtest die erreichbaren Adressräume von Threads aus einem Prozess individuell einschränken können? Dass das dem üblichen Programmiermodel für Threads widerspricht ist Dir bewusst?
Die LDT wirkt nur auf Segmente (das drunter liegende Paging wird davon nicht beeinflusst), wenn man damit Speicherschutz machen will dann geht das nur wenn die Programme auch in einem segmentiertem Speichermodel arbeiten.
Das es im x86-Long-Mode (64Bit-Mode) keine LDT mehr gibt (und auf allen anderen CPUs auch nie gab) ist sicher auch bewusst, oder?
Trotzdem würde mich dazu ein klein wenig mehr interessieren. Was genau hast Du denn vor?
Eventuell gibt es für Dein Vorhaben noch andere Wege ohne die LDT.
... wenn sie denn aus dem Userspace heraus manipulierbar wären. Sind sie aber nicht...
Wenn die LDT aus dem User-Mode heraus änderbar/wechselbar wäre würde sie grundsätzlich keinen wirksamen Speicherschutz darstellen. Speicherschutz ist immer nur dann wirksam wenn seine Mechanismen ausschließlich nur vom Kernel manipulierbar sind.
Grüße
Erik