Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Многозадачность - Проблемные ситуации в многозадачных системах22 января 2011Оглавление: 1. Многозадачность 2. Трудности реализации многозадачной среды 3. Типы псевдопараллельной многозадачности 4. Проблемные ситуации в многозадачных системах ГолоданиеЗадержка времени от пробуждения потока до его вызова на процессор, в течение которой он находится в списке потоков, готовых к исполнению. Возникает по причине присутствия потоков с большими или равными приоритетами, которые исполняются все это время. Негативный эффект заключается в том, что возникает задержка времени от пробуждения потока до исполнения им следующей важной операции, что задерживает исполнение этой операции, а следом за ней и работу многих других компонентов. Голодание создаёт узкое место в системе и не дает выжать из неё максимальную производительность, ограничиваемую только аппаратно обусловленными узкими местами. Любое голодание вне 100 % загрузки процессора может быть устранено повышением приоритета голодающей нити, возможно временным. Как правило, для предотвращения голодания ОС автоматически вызывает на исполнение готовые к нему низкоприоритетные потоки даже при наличии высокоприоритетных, при условии, что поток не исполнялся в течение долгого времени. Визуально эта картина хорошо знакома большинству пользователей Windows если в одной из программ поток зациклился до бесконечности, то переднее окно работает нормально несмотря на это потоку, связанному с передним окном, Windows повышает приоритет. Остальные же окна перерисовываются с большими задержками, по порции в секунду, ибо их отрисовка в данной ситуации работает только за счет механизма предотвращения голодания. ГонкаНедетерминированный порядок исполнения двух путей кода, работающих с одними и теми же данными и исполняемыми в двух различных нитях. Приводит к зависимости порядка и правильности исполнения от случайных факторов. Устраняется добавлением необходимых блокировок и примитивов синхронизации. Обычно является легко устраняемым дефектом. Инверсия приоритетаПоток L имеет низкий приоритет, поток M средний, поток H высокий. Поток L захватывает mutex, и, выполняясь с удержанием mutex’а, преемптивно прерывается потоком M, который пробудился по какой-то причине, и имеет более высокий приоритет. Поток H пытается захватить mutex. В полученной ситуации поток H ожидает завершения текущей работы потоком M, ибо, пока поток M исполняется, низкоприоритетный поток L не получает управления и не может освободить mutex. Устраняется повышением приоритета всех нитей, захватывающих данный mutex, до одного и того же высокого значения на период удержания mutexa. Некоторые реализации mutex’ов делают это автоматически. Просмотров: 5854
|