#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. Что вы подразумеваете под изменением адресного пространства?