Старые учебники часто описывают их как таковые, но стеки потоков в современных операционных системах не являются какими-то «особыми» компонентами адресного пространства процесса.Они являются отображениями памяти, как и любые другие отображения, созданные mmap
.
Первичный поток - первый поток в процессе - может получить свой стек особым образом, но остальные потоки распределяют его нормальнобиблиотекой потоков в пользовательском пространстве (часто с вызовом mmap
).Стек обычно может управляться пользовательским пространством, иногда даже полностью заменяется другим выделением памяти.
Большинство операционных систем даже не проверяют, что поток фактически использует стек, который, как он утверждает, использует - здесьописание недавно внедренной техники снижения безопасности, которая реализует такую проверку для защиты от эксплойтов.