В общем случае планирование (на любом уровне) может быть представлена как система массового обслуживания (СМО). Применительно к планированию процессорного времени компоненты этой СМО могут быть интерпретированы следующим образом: заявкой является процесс, обслуживающим прибором - центральный процессор (ЦП), очередь заявок - это очередь готовых процессов. Процессы-заявки поступают в очередь, при освобождении ЦП один процесс выбирается из очереди и обслуживается на ЦП. Обслуживание может быть прервано по следующим причинам:
- выполнение процесса завершилось;
- процесс запросил выполнение операции, требующей ожидания
какого-либо другого ресурса;
- выполнение прервано системой.
Первые два случая с точки зрения СМО одинаковы: в любом случае процесс выходит из данной СМО. Если процесс не завершился, то после получения запрошенного ресурса процесс вновь поступит во входную очередь. В случае прерывания процесса по инициативе системы прерванный (вытесненный) процесс поступает во входную очередь сразу же. Порядок обслуживания входной очереди, очередность выбора из нее заявок на обслуживания и составляет дисциплину или
стратегию планирования. Для оценки эффективности функционирования данной СМО могут
быть применены количественные показатели. Обозначим через t - процессорное время, необходимое процессу для выполнения, мы будем его называть длительностью процесса. Обозначим через T - общее время пребывания процесса в системе. Эту величину также называют
иногда временем реакции процесса - интервал между моментом вводом процесса в систему и моментом получения результатов. Наряду с временем реакции могут быть полезны также и другие показатели. Потерянное время: M = T - t;
определяет время, в течение которого процесс находился в системе, но не выполнялся.
Отношение реактивности: R = t / T;
показывает долю процессорного времени (времени выполнения) или долю потерянного времени в общем времени реакции. Штрафное отношение: P = T / t;
показывает, во сколько раз общее время выполнения процесса превышает необходимое процессорное время.
Различают приоритеты:
- внешние - назначаемые администратором системы или пользователем в соответствии с классом пользователя и/или произведенной пользователем оплатой;
- статические - вычисляемые планировщиком при поступлении процесса в систему и не изменяемые впоследствии;
- динамические - перевычисляемые планировщиком периодически или/и при событиях, влияющих на планирование процессов;
- комплексные - динамически вычисляемые приоритеты, учитывающие внешний приоритет процесса, его статические характеристики, а также ход выполнения процесса, текущее состояние очереди готовых процессов и, возможно, состояние других системных ресурсов.
К ОС, обеспечивающим режим клиент/сервер, применяют дисциплины, отдающие предпочтение обменным процессам. Для таких ОС достаточно типичной можно считать такую макросхему определения приоритетов процессов в очереди к ЦП. Наивысший абсолютный приоритет имеют
системные процессы, которые не могут вытесняться. Далее - системные процессы, которые могут быть вытеснены. Наконец, низший приоритет имеют пользовательские процессы. Пользовательские процессы в свою очередь могут делиться на классы. Типовое деление (например, OS/2) включает в себя три класса:
- с высоким приоритетом - процессы реального времени;
- с нормальным приоритетом - интерактивные процессы;
- с низким приоритетом - счетные (пакетные) процессы.
Внутри каждого класса предусматривается еще несколько градаций приоритета, которые могут назначаться пользователем. Наконец, ОС может формировать еще динамическую добавку к приоритету, зависящую от истории выполнения процесса, текущего состояния ресурсов и
т.Д. Эта добавка может повышать или снижать приоритет процесса внутри класса, но никогда не выводит процесс за пределы назначенного ему класса. Динамическая составляющая совершенно необходима для процессов класса с нормальным приоритетом (интерактивных), так как их поведение во время выполнения наиболее труднопредсказуемо. Процессы других классов ОС может планировать и по статическим приоритетам. Общие закономерности в динамическом вычислении приоритетов можно свести к следующим:
- приоритет процесса, долгое время находящегося в состоянии ожидания, повышается;
- приоритет процесса, часто выполняющего операции ввода-вывода, повышается;
- приоритет процесса, чаще получающего внешние сообщения и прерывания, повышается;
- если приоритет процесса не повышается, он убывает.