Когда приложения на основе задач переключают контекст? - PullRequest
0 голосов
/ 17 апреля 2020

Допустим, у вас было две задачи. Каждый из них имеет свои сложные модули, работающие по системам, основанным на расписании, и системы, основанные на событиях. Размышляя о переключении контекста, когда и как планировщик задач решает, когда переключать задачи, и в какой-то момент он может это сделать? Будет ли задача переключаться во время выполнения блока кода? Прямо в середине функции?

Для справки я работаю в среде vxworks.

1 Ответ

1 голос
/ 17 апреля 2020

Как правило, расписания операционной системы не имеют отношения к блокам кода C. Они переключаются при возникновении различных событий, в том числе:

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

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

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

...