Переключение контекста процесса и изменения памяти

#memory #process #operating-system #switch-statement #context-switch

#память #процесс #операционная система #switch-инструкция #переключение контекста

Вопрос:

Я не понимаю полных операций переключения контекста.

Когда запущенный процесс A переходит в состояние готовности / заблокирован в пользу другого процесса B из-за планировщика, диспетчер сохраняет PSW и GPR A в своей печатной плате и сохраняет PSW и GPR B в CPU. Таким образом, очереди печатной платы обновляются.

Как насчет фреймов, используемых процессом A (код /данные / стек)? Они перемещаются в область подкачки или остаются в памяти?

Таблица страниц A все еще находится в памяти? Сохраняется ли таблица страниц процесса в памяти при создании процесса? Или когда он переходит в состояние выполнения?

Как насчет таблицы открытых файлов A?

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

Ответ №1:

Это все зависит от системы. На аппаратном уровне a переключение контекста обычно просто сохраняет регистры в контекстном блоке и считывает регистры из другого контекстного блока.

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

Комментарии:

1. Как я уже говорил …. и каковы дополнительные операции, выполняемые переключением контекста процессов по сравнению с потоками?

2. Переключение контекста потока обычно требует просто сохранения / изменения общих регистров. Переключение контекста процесса требует изменения адресного пространства (не требуется для переключения потоков).

3. Что вы подразумеваете под изменением адресного пространства?