Протоколы Internet


Краткий справочник по командам UNIX - часть 11


Распределение ресурсов процессора осуществляется планировщиком, который выделяет кванты времени каждому из активных процессов. Здесь приложения делятся на три класса:

  1. Интерактивные
  2. Фоновые
  3. Реального времени

Каждый процесс в UNIX имеет свой контекст (контекст сохраняется при прерывании процесса). Контекст определяется следующими составляющими:

  • Адресное пространство процесса в режиме user
  • Управляющая информация (proc и user).
  • Окружение процесса (в виде пар переменная=значение).
  • Аппаратный контекст (регистры процессора)

Работа планировщика UNIX основана на использовании приоритетов процессов. Если процесс имеет наивысший приоритет и готов к работе, планировщик прервет работу текущего процесса, если у него более низкий приоритет, даже при условии, что он не выбрал до конца свой квант времени. Работа программы ядра обычно не прерывается. Это касается и процессов user, если они в данный момент осуществляют системный вызов.

Каждый процесс имеет два атрибута приоритета – текущий и относительный (nice). Первый служит для реализации планирования, второй присваивается при порождении процесса и воздействует на значение текущего приоритета. Текущий приоритет может характеризоваться кодами 0 (низший) – 127 (высший). Для режима user используются коды приоритета 0-65, а для ядра – 66-94 (системный диапазон).

Процессы с кодами 96-127 имеют фиксированный приоритет, который не может изменить ОС (обычно служат для процессов реального времени).

Процессу, ожидающему освобождения какого-то ресурса, система присваивает значение кода приоритета сна, выбираемое из диапазона системных приоритетов (в версии BSD большему коду соответствует меньший приоритет). Процессы типа “ожидание ввода с клавиатуры” имеют высокий приоритет сна и им сразу предоставляется ресурс процессора. Фоновые же процессы, забирающие много времени ЦПУ, получают относительно низкий приоритет.

Каждую секунду ядро пересчитывает текущие значения кодов приоритета для процессов, ожидающих запуска (коды<65), повышая вероятность получения ими требуемого ресурса. Так 4.3BSD использует для расчета приоритета процесса следующую формулу:




Начало  Назад  Вперед