Quindi ho scoperto che un uso interessante della segmentazione nei pacchetti di thread (non dicendo che questo viene effettivamente fatto ovunque, ma è almeno un potenziale utilizzo) è manipolare il segmento dello stack in modo che i thread all'interno di un singolo processo possano condividere un indirizzo spazio, ma non si scontrano sullo stesso stack. Ogni thread ha il proprio stack, ma il codice in esecuzione nel thread non deve sapere dove si trova il suo stack - se non tenta di manipolare il proprio registro del segmento stack, il registro verrà impostato quando inizierà a puntare ad una voce nel LDT, che la conduce ad un pacco designato specificamente per esso nello spazio di indirizzamento del processo.
Questo è simile al modo in cui immagino che i kernel funzionino quando vengono eseguiti su un sistema con più core. Quando si verifica un'interruzione o un'eccezione su un core, roba viene spinto dallo stack del kernel dall'hardware, ma questo potrebbe rovinare lo stack se il kernel è in esecuzione anche su altri core nel momento in cui si verifica l'eccezione / l'interruzione. Invece, il kernel di ogni core potrebbe avere uno stack separato, designato da voci nell'IDT e GDT.