digital-garden/knowledge/dev/pc/Переключение контекста.md

42 lines
4.2 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
aliases:
- context switch
- переключению контекстов
- переключение контекстов
- переключения контекста
- переключению контекста
tags:
- зрелость/🌱
date:
- - 2024-01-28
zero-link:
- "[[00 Разработка]]"
parents:
- "[[Многозадачность ЦПУ]]"
linked:
---
Переключение контекстов происходит, когда операционная система останавливает выполнение одной задачи и начинает выполнение другой. Этот процесс включает в себя сохранение текущего состояния задачи (контекста), включая значения регистров процессора, указатель инструкций и другие связанные с задачей данные, чтобы впоследствии можно было возобновить выполнение задачи с того места, где она была остановлена.
Этот процесс происходит настолько быстро и эффективно, что пользователи и приложения воспринимают систему как способную выполнять множество операций одновременно, несмотря на то, что физически одно ядро процессора в данный момент может выполнять только один поток.
В настоящее время все программы запускаются в так называемом "защищенном режиме", когда одна программа не имеет доступа к данным другой программы. В этом режиме указатели программы содержать не настоящий адрес на область памяти, а виртуальный, который маппится на настоящий, таким образом в двух разных программах может использоваться один и тот же адрес памяти, но на самом деле это будут разные области памяти.
В защищенном режиме каждая программа считает, что выполняется только она, про другие программы она не знает.
Когда программа не может дальше выполняться, то она сохраняет свое состояние и уступает ресурсы ЦПУ другой программе.
- Сохранение регистров процессора
- Сохранение общей информации: pid, tid, uid. gid, euid, egid и т.д.
- Сохранение состояния процессора/потока
- Сохранение прав доступа
- Сохранение используемых потоком ресурсов и блокировок
- Сохранение счетчиков использования ресурсов
- Сохранение регионов памяти, выделенных процессору
- Очистка конвейера команд и данных процессора
- Очистка TLB, отвечающая за страничное отображение линейных адресов на физические
Переключение контекста занимает какое-то время (~1 мкс). Для примера выполнение одной строчки кода занимает ~0.5 нс. Переключение контекста может происходить как у процессов, так и у потоков.
![](Pasted%20image%2020240128143015.png)
Чем больше [процессов](Процесс%20ОС.md), тем больше будет переключений. Время на процессы и паузы будут не изменны, но пауз станет больше.