Переключение контекста процесса и изменения памяти
Я не понимаю полные операции переключения контекста.
Когда запущенный процесс A переходит в состояние готовности / блокировки в пользу другого процесса B из-за планировщика, диспетчер сохраняет PSW и GPR A на своей печатной плате и сохраняет PSW и GPR B в CPU. Таким образом, очереди PCB обновляются.
Как насчет фреймов, используемых процессом A (код / данные / стек)? Они поменялись местами в области обмена или остались в памяти?
Таблица страниц А все еще находится в памяти? Сохраняется ли таблица страниц процесса в памяти при его создании? Или когда он перейдет в рабочее состояние?
А как насчет таблицы открытых файлов А?
Я хочу понять точные операции переключения контекста процесса, потому что важно видеть различия между переключением контекста скорости потоков и тяжелым процессом.
1 ответ
Это все зависит от системы. На аппаратном уровне переключатель контекста обычно просто сохраняет регистры в блок контекста и читает регистры из другого блока контекста.
Таблицы страниц для неактивного процесса могут остаться или не остаться в памяти. Все зависит от управления памятью операционной системы. Обычно операционная система оставляет их в физической памяти, пока эта память не понадобится для чего-то другого.