Hallo TS,
Wenn man es richtig™ machen will, muss für static variables ein eigener Descriptor in der local descritor table angelegt werden mit dem passenden Attribut, wer ihn benutzen darf.
Das macht aber der Compiler für dich. Du kannst das nur beeinflussen, wenn Du Low-Level-Assembler programmiers
Oha. Bist Du da im Schweinsgalopp in den Wald geritten? Oder ist meine Erinnerung total daneben?
GDT und LDT sind Mechanismen des Intel 286, um den Speicher zu verwalten. Ein Prozess bekommt eine eigene LDT, und das OS vermerkt darin die Speichersegmente, die ihm gehören. Das OS, nicht der Compiler! Compiler und Linker bestellen lediglich die Segmente mittels Einträgen im EXE. Wieviele Code- und Datensegmente bestellt werden, ist eine Frage des Speichermodells (tiny, small, compact, medium, large, huge). Benutzungsrechte für Segmente innerhalb eines Prozesses werden durch die LDT meines Wissens überhaupt nicht festgelegt. Man kann Segmente höchstens schreibschützen, damit Code nicht überschrieben werden kann.
Das ist aber ein Relikt aus der 16 Bit Welt. In der 32- und 64-Bit Welt befindet sich ein Programm normalerweise in einem einzigen Segment, und Dinge wie Schreibschutz von Code oder Datenausführungsverhinderung werden eine Ebene tiefer, in der page table, abgehandelt.
Rolf
sumpsi - posui - clusi