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

Переключение или изменение контекста — это операция, при которой многозадачная операционная система переключается между процессами управления . Необходимо сохранить текущее состояние ЦП, соответствующее текущему запущенному процессу, и восстановить состояние ЦП, чтобы продолжить второй процесс. В современных операционных системах это происходит много раз в секунду. На некоторых процессорах переключение контекста может занять много времени, поэтому операционные системы стараются его максимально оптимизировать. Переключение между потоками в одном процессе может быть проще . Какие действия выполняются при переключении контекста, зависит от процессора и операционной системы.

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

Мы также можем включить в контекст содержимое различных процессоров кеширования (например, кеш L1 или TLB ): они не сохраняются и не загружаются при переключении контекста, но их содержимое должно быть явно или неявно признано недействительным, чтобы заполнить их снова. Вот почему переключение контекста на современных процессорах так «дорого» (особенно отнимает много времени) — особенно если изменяется адресное пространство, как это происходит при переключении процессов, а не при переключении потоков.

Когда контекст переключается
Переключение контекста может происходить в трех ситуациях:

Многозадачность
Чаще всего происходит переключение контекста при планировании процессов , когда необходимо завершить один процесс и выбрать другой, которому впоследствии будет назначен процессор. В операционных системах с вытесняющей многозадачностью планировщик предоставляет каждой задаче процессор на период времени, называемый временным интервалом .

Если процесс не передает ЦП добровольно (например, вызывая операцию ввода-вывода ), его выполнение прерывается прерыванием от таймера, и операционная система может вместо этого запустить другой процесс, чтобы процессы, ожидающие выделения ЦП, выполнялись по очереди. В многопроцессорной системе один из процессоров может быть постоянно назначен вычислительно-интенсивному процессу, в то время как другие процессы, включая ядро операционной системы, используют другие процессоры.

Обработка прерываний
Некоторые архитектуры (например, архитектура IBM PC на базе процессоров x86 ) управляются прерываниями . Это означает, что если процессор запрашивает некоторые данные с диска , ему не нужно беспокоиться о ожидании завершения чтения, просто примените и продолжите другую операцию; когда чтение завершено, контроллер диска генерирует прерывание, которое запускает часть операционной системы в процессоре, называемую обработчиком прерывания .

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

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

Show Buttons
Hide Buttons