Память стека потоков POSIX - могут ли у нас быть разные размеры стеков и проблемы безопасности? - PullRequest
4 голосов
/ 06 марта 2012

У меня есть пара вопросов относительно размера стека потоков POSIX и их проблем безопасности:

A) Можем ли мы иметь различные размеры стека (для каждого набора потоков, используя: pthread_attr_getstacksize )?

B) Когда поток умирает (отсоединяется / выходит), операционная система восстановит свои страницы памяти?

C) Может ли поток продолжать запись в другой сегмент стека потоков, если он окажется смежным сдруг друга в отображении виртуальной памяти?

1 Ответ

3 голосов
/ 06 марта 2012

A) Да, конечно, это цель pthread_attr_setstacksize.

B) Да, вызов pthread_detach или pthread_join заставляет ресурсы потока быть восстановленными после завершения.

C) Теоретически да, но поскольку в большинстве систем стек растет назад (от высокого к низкому адресу), вам необходимо выполнить какое-то переполнение буфера, чтобы выйти из текущего пространства стека.

...