|
|
Компьютеры - Переключение контекста - Переключение контекста и ОС23 января 2011
Оглавление: 1. Переключение контекста 2. Переключение контекста и производительность 3. Переключение контекста и ОС 4. Особенности процедуры шедулинга
С точки зрения прикладного уровня можно разделить voluntary и non-voluntary context switches: Выполняющийся процесс/поток может сам передать управление другому потоку либо ядро само может отобрать управление.
- Ядро ОС может отобрать управление у выполняющегося процесса/потока при истечении кванта времени выделенного на выполнение. С точки зрения программиста это означает что управление могло уйти от потока в «самый неподходящий» момент времени когда структуры данных могут находиться в противоречивом состоянии из-за того, что их изменение не было завершено.
- Выполнение блокирующего системного вызова. Когда приложение производит ввод-вывод, ядро может решить, что можно отдать управление другому потоку/процессу в ожидании, пока запрошенный данным потоком дисковый либо сетевой ввод-вывод будет выполнен. С точки зрения общей производительности системы, это самый «лучший» вариант.
- Синхронизирующие примитивы ядра. Мьютексы, Семафоры и т. д. Это и есть основной источник проблем с производительностью. Недостаточно продуманная работа с синхронизирующими примитивами может в «плохих случаях» приводить к десяткам тысяч, а при плохом проектировании и сотням тысяч переключений контекста в секунду.
- Системный вызов явно ожидающий наступления события либо момента времени. С точки зрения производительности это хороший вариант, ядро ОС всегда знает, кто ждет и чего ждет.
Просмотров: 3534
|