Состояние виртуальной памяти потока

Как мы все знаем, в случае нескольких потоков каждый поток поддерживает свой отдельный стек и состояние регистра.

они также поддерживают отдельное состояние виртуальной памяти или оно может использоваться совместно?

Я не думаю, что должны быть какие-либо проблемы в разделении состояния виртуальной памяти между процессами.

РЕДАКТИРОВАТЬ:

Если поток не поддерживает состояние, то почему третий вариант вопроса 1 по ссылке ( http://www.geeksforgeeks.org/archives/19913) не соответствует действительности?

3 ответа

Решение

Каждый процесс имеет свое собственное адресное пространство, то есть диапазон виртуальных адресов, к которым процесс может получить доступ. Каждый процесс может иметь несколько потоков. Итак, да, все потоки в процессе имеют одинаковое адресное пространство. Обратите внимание, что это основная причина, по которой переменные могут совместно использоваться несколькими потоками одного процесса без какого-либо специального механизма.
С другой стороны, нельзя разделять переменные между двумя отдельными процессами без использования специальных механизмов, таких как межпроцессное взаимодействие, потому что каждый процесс имеет свое собственное адресное пространство.

Они неизменно делятся памятью. И это может и действительно вызывает много проблем.

(Для начала проверьте тег "многопоточность".) Но несколько потоков позволяют вам прослушивать множество разных входных данных и позволяют всем этим ядрам ЦП заработать свою поддержку.

Правильно, два потока могут совместно использовать одно и то же пространство виртуальной памяти. Это по сути (очень поверхностно) определение потоков, поскольку они относятся к процессам.

Другие вопросы по тегам