Произошло ли переключение контекста в системе, чья очередь готовности имеет только один процесс и которая использует циклическое планирование?
Предположим, что текущий пакет ЦП одиночного процесса охватывает более одного временного интервалаалгоритм циклического перебора.
Мои рассуждения такие, как показано ниже
Шаги, которые могут иметь место, когда в типичном случае происходит прерывание по таймеру:
- Возникает прерывание.Переключение в режим ядра
- ОС сохраняет текущий контекст в печатной плате (сохраняет регистры, состояние процесса и информацию об управлении памятью текущего процесса)
- Выполняет множество специфических для архитектуры операций, включая сброс данных и кэшей инструкцийи TLB.
- Поместить текущий процесс в очередь готовности
- Выбрать новый процесс для выполнения
- Загрузить контекст с печатной платы этого процесса
- Переключиться в режим пользователя.Начните выполнение нового процесса
Теперь я думаю, что ОС может также сначала проверить очередь готовности и проверить, есть ли другие процессы.Если их нет, переключение контекста не требуется.Таким образом, обработка прерывания таймера повлечет за собой переключение между пользовательским режимом и режимом ядра, проверку готовности Q и переключение обратно в пользовательский режим для возобновления выполнения процесса.
Это то, что происходит?Или же происходит правильное переключение контекста, связанное с ненужным сохранением текущего состояния одиночного процесса и восстановлением того же самого?
Если позднее происходит, есть ли особая причина?
Эта путаница возникла из-за вопроса в экзаменационной работе, касающегося расчета времени, затрачиваемого на переключение контекста в такой ситуации.Данный ответ подразумевает, что переключение контекста действительно происходит.
Я надеюсь, что люди, изучившие код ядра, смогут пролить свет на это.Таким образом, этот вопрос о stackoverflow.