Переключение контекста между потоками требует, чтобы изменились контексты как режима ядра, так и режима пользователя. Для упрощения этого изменения система обеспечивает размещение всего состояния потока режима пользователя в одной структуре данных: структуре потока (большая часть состояния ядра хранится в другом месте). К этому размещению применяются следующие соглашения.
Аппаратное состояние при выполнении в режиме ядра: переключение контекста может иметь место лишь в режиме ядра. Состояние аппаратного выполнения ядра определяется содержанием ТСВ, который расположен в структуре потока.
Аппаратное состояние при выполнении в режиме пользователя: при выполнении в режиме ядра состояние режима пользователя потока (такое, как копии счетчика команд, указатель стека и общие регистры) всегда находится в стеке выполнения ядра, который расположен в структуре потока. Ядро гарантирует такое размещение состояния режима пользователя, требуя от системных вызовов и обработчиков исключений, чтобы они каждый раз при входе в ядро сохраняли содержимое контекста выполнения режима пользователя.
Структура процесса: структура процесса всегда остается в памяти.
Ресурсы памяти: ресурсы памяти процесса фактически описываются содержанием регистров управления памятью, расположенных в ТСВ, и значениями, присутствующими в структурах процесса и потока. Пока процесс остается в памяти, эти значения будут действительными и переключения контекста можно делать без сохранения и восстановления соответствующих таблиц страниц. Однако эти значения необходимо вычислить заново, когда процесс возвращается в основную память после подкачки из вторичного хранилища.
- 16/09/2010 17:09 - Блокировки менеджера блокировок
- 14/09/2010 12:02 - Синхронизация с помощью мьютекса
- 13/09/2010 12:25 - Синхронизация
- 11/09/2010 16:42 - Добровольное переключение контекста
- 08/09/2010 09:38 - Переключение контекста на низком уровне
- 01/09/2010 05:13 - Переключение контекста
- 27/08/2010 20:18 - Структура процесса
- 17/08/2010 04:52 - Планирование
- 17/08/2010 04:44 - Многозадачное программирование
- 14/08/2010 01:10 - Введение в управление процессами