Pthread сегменты регистров - PullRequest
1 голос
/ 13 июля 2011

Признаюсь, я провел минимальное исследование по этому вопросу (всего несколько мелких поисков в Google).Сохраняют ли потоки пакетов (в частности, pthreads, но мой вопрос относится ко всем библиотекам пользовательских потоков x86 unix) сохранять регистры сегментов (fs, cs, ds и т. Д.) Для каждого потока?Другими словами, у каждого потока есть своя собственная копия регистров сегмента?

1 Ответ

3 голосов
/ 28 июля 2011

В большинстве современных ОС регистры сегментов имеют определенные значения, определяемые ОС.Библиотеки потоков ОС обеспечат правильную настройку регистров для каждого потока.например, в Windows регистр FS указывает на сегмент со специфичными для потока данными, который, таким образом, обновляется при каждом переключении потока, тогда как регистр DS ссылается на сегмент, относящийся к процессу, поэтому он одинаков для всех потоков внутри процесса.

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

В целом, я ожидал бы сегментрегистры, которые должны быть сохранены, потому что это легче, чем искать то, что они «должны» быть, и приводит к наименьшей вероятности неожиданности.

...