Abo (06.07.2005 10:53, просмотров: 1) ответил Mahagam на а по мне так
Ответ: Позвольте с вами не согласиться. Цитирую:"вэйт только для того что бы уменьшить загрузку процессора конкретной задачей.." - то есть предоставить его другим задачам. Вы это хотели сказать?.
Предположим, в системе существуют четыре задачи - одна с высшим приоритетом, две со средним, одна с низшим. Предположим также, что в данный момент работает одна из задач со средним приоритетом.
Рассмотрим такие ситуации:
1. Если сложились условия для запуска задачи с высшим приоритетом, планировщик запускает ее. Она выполняет свою функцию и опять переходит в состояние ожидания. Снова возобновляется выполнение прерввнной задачи со средним приоритетом.
2. Работающая задача со средним приоритетом переходит в состояние ожидания. Планировщик смотрит за готовностью остальных задач и запускает готовую к выполнению задачу с наиболее высоким приоритетом. Если ни одна из задач не готова - возобновляется выполнение фонового процесса.
3. Работающая задача со средним приоритетом не переходит в состояние ожидания по собственной инициативе (например while(1)) - при этом задачи с высшим приоритетом прекрасно запускаются. но все остальные (с равным или низшим приоритетом) не получат управление никогда. И в самом деле по каким критериям планировщик сможет запустить другую задачу? Ведь приоритет текущей задачи достаточно высок по сравнению с ними. Здесь возможен вариант пропорционального распределения процессорного времени между задачами с равным приоритетом, но он уже никак не соотносится с системами реального времени, поскольку в этом случае невозможно гарантировать заданное время реакции, да и что делать с задачами более низкого приоритета?
Попробуйте рассмотреть 3 вариант с точки зрения планировщика задач.