Sunday, Feb 05th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Службы ядра Состояние потока

Состояние потока

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

Аппаратное состояние при выполнении в режиме ядра: переключение контекста может иметь место лишь в режиме ядра. Состояние аппаратного выполнения ядра определяется содержанием ТСВ, который расположен в структуре потока.

Аппаратное состояние при выполнении в режиме пользователя: при выполнении в режиме ядра состояние режима пользователя потока (такое, как копии счетчика команд, указатель стека и общие регистры) всегда находится в стеке выполнения ядра, который расположен в структуре потока. Ядро гарантирует такое размещение состояния режима пользователя, требуя от системных вызовов и обработчиков исключений, чтобы они каждый раз при входе в ядро сохраняли содержимое контекста выполнения режима пользователя.

Структура процесса: структура процесса всегда остается в памяти.

Ресурсы памяти: ресурсы памяти процесса фактически описываются содержанием регистров управления памятью, расположенных в ТСВ, и значениями, присутствующими в структурах процесса и потока. Пока процесс остается в памяти, эти значения будут действительными и переключения контекста можно делать без сохранения и восстановления соответствующих таблиц страниц. Однако эти значения необходимо вычислить заново, когда процесс возвращается в основную память после подкачки из вторичного хранилища.


Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 24 гостей онлайн

Реклама на сайте: