digital-garden/dev/fundamental/Переключение контекста.md
Struchkov Mark be8fd578f3
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-10-09 09:23:45 +03:00

5.2 KiB
Raw Blame History

aliases tags date zero-link parents linked
context switch
переключению контекстов
переключение контекстов
переключения контекста
переключению контекста
Контекстные переключения
переключение между потоками
контекстных переключений
maturity/🌱
2024-01-28
../../meta/zero/00 Разработка
Многозадачность

Переключение контекстов происходит, когда ../../../../knowledge/dev/pc/Операционная система останавливает выполнение одной задачи и начинает выполнение другой (Concurrency). Этот процесс включает в себя сохранение текущего состояния задачи (контекста), включая значения регистров процессора, указатель инструкций и другие связанные с задачей данные, чтобы впоследствии можно было возобновить выполнение задачи с того места, где она была остановлена.

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

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

В защищенном режиме каждая программа считает, что выполняется только она, про другие программы она не знает.

Когда программа не может дальше выполняться, то она сохраняет свое состояние и уступает ресурсы Центральный процессор другой программе.

  • Сохранение регистров процессора
  • Сохранение общей информации: pid, tid, uid. gid, euid, egid и т.д.
  • Сохранение состояния процессора/потока
  • Сохранение прав доступа
  • Сохранение используемых потоком ресурсов и блокировок
  • Сохранение счетчиков использования ресурсов
  • Сохранение регионов памяти, выделенных процессору
  • Очистка конвейера команд и данных процессора
  • Очистка TLB, отвечающая за страничное отображение линейных адресов на физические

Переключение контекста занимает какое-то время (~1 мкс). Для примера выполнение одной строчки кода занимает ~0.5 нс. Переключение контекста может происходить как у процессов, так и у потоков.

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


Мета информация

Область:: ../../meta/zero/00 Разработка Родитель:: Многозадачность Источник:: Автор:: Создана:: 2024-01-28

Дополнительные материалы

Дочерние заметки