Введение в планирование

Если вернуться к прежним временам пакетных систем, где ввод данных осуществлялся в форме образов перфокарт, перенесенных на магнитную ленту, то алгоритм планирования был довольно прост: требовалось всего лишь запустить следующее задание.
С появлением многозадачных систем алгоритм планирования усложнился, поскольку в этом случае обычно фигурировали сразу несколько пользователей, ожидавших обслуживания. На некоторых универсальных машинах до сих пор пакетные задачи сочетаются с задачами в режиме разделения времени, и планировщику нужно решать, какой должна быть очередная работа: выполнение пакетного задания или обеспечение интерактивного общения с пользователем, сидящим за терминалом. (Между прочим, в пакетном задании мог содержаться запрос на последовательный запуск нескольких программ, но в данном разделе мы будем придерживаться предположения, что запрос касается запуска только одной программы.) Поскольку на таких машинах процессорное время является дефицитным ресурсом, хороший планировщик может существенно повлиять на ощущаемую производительность машины и удовлетворенность пользователя. Поэтому на изобретение искусного и эффективного алгоритма планирования было потрачено немало усилий.

С появлением персональных компьютеров ситуация изменилась в двух направлениях. Во-первых, основная часть времени отводилась лишь одному активному процессу. Вряд ли случалось такое, что пользователь, вводивший документ в текстовый процессор, одновременно с этим компилировал программу в фоновом режиме. Когда пользователь набирал команду для текстового процессора, планировщику не приходилось напрягаться, определяя, какой процесс нужно запустить, — текстовый процессор был единственным кандидатом.

Во-вторых, с годами компьютеры стали работать настолько быстрее, что центральный процессор практически перестал быть дефицитным ресурсом. Большинство программ для персонального компьютера ограничены скоростью предоставления пользователем входящей информации (путем набора текста или щелчками мыши), а не скоростью, с которой центральный процессор способен ее обработать. Даже задачи компиляции программ, в прошлом главный потребитель процессорного времени, теперь в большинстве случаев занимают всего несколько секунд. Даже при одновременной работе двух программ, например текстового процессора и электронной таблицы, вряд ли имеет значение, которую из них нужно пропустить вперед, поскольку пользователь, скорее всего, ждет результатов от обеих. Поэтому на простых персональных компьютерах планирование не играет особой роли.

Конечно, существуют приложения, которые поглощают практически все ресурсы центрального процессора: например, визуализация одночасового видео высокого разрешения при корректировке цветовой гаммы каждого из 107 892 кадров (в NTSC) или 90 000 кадров (в PAL) требует вычислительной мощности промышленной компьютерной системы, но подобные приложения скорее являются исключением из правил.

Когда же дело касается сетевых служб, ситуация существенно изменяется. Здесь в конкурентную борьбу за процессорное время вступают уже несколько процессов, поэтому планирование снова приобретает значение. Например, когда центральному процессору нужно выбирать между запущенным процессом, собирающим ежедневную статистику, и одним из процессов, обслуживающих запросы пользователя, если приоритет будет сразу же отдан последнему из процессов, пользователь будет чувствовать себя намного лучше. Многие мобильные устройства, такие как смартфоны (за исключением разве что самых мощных моделей), и узлы сенсорных сетей «обилием ресурсов» также похвастаться не могут. У них все еще может быть маломощный центральный процессор и небольшой объем памяти. Более того, поскольку одним из наиболее важных ограничений на этих устройствах является ресурс аккумуляторов, некоторые планировщики стараются оптимизировать потребление электроэнергии.

Планировщик наряду с выбором «правильного» процесса должен заботиться также об эффективной загрузке центрального процессора, поскольку переключение процессов является весьма дорогостоящим занятием. Сначала должно произойти переключение из пользовательского режима в режим ядра, затем сохранено состояние текущего процесса, включая сохранение его регистров в таблице процессов для их последующей повторной загрузки. На некоторых системах должна быть сохранена также карта памяти (например, признаки обращения к страницам памяти). После этого запускается алгоритм планирования для выбора следующего процесса. Затем в соответствии с картой памяти нового процесса должен быть перезагружен блок управления памятью. И наконец, новый процесс должен быть запущен. Вдобавок ко всему перечисленному переключение процессов обесценивает весь кэш памяти, заставляя его дважды динамически перезагружаться из оперативной памяти (после входа в ядро и после выхода из него). В итоге слишком частое переключение может поглотить существенную долю процессорного времени, что наводит на мысль: этого нужно избегать.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Введение в планирование:

  1. Планирование телепередач
  2. Планирование, а не планы
  3. 11. КРИМИНАЛИСТИЧЕСКИЕ ВЕРСИИ И ПЛАНИРОВАНИЕ РАССЛЕДОВАНИЯ
  4. § 2. ПЛАНИРОВАНИЕ И СОДЕРЖАНИЕ НАБЛЮДЕНИЯ
  5. 10.2. Планирование и организация следственных действий
  6. 5.4. Планирование упражнений
  7. Искусство планирования спонтанного
  8. 5.9. Планирование социальных контактов
  9. 5.2.9. Планирование сроков достижения уже определённой цели
  10. Статья 437. Планирование, подготовка, развязывание и ведение агрессивной войны
  11. 11.3. Понятие и основные принципы планирования расследования в зависимости от исходной информации (следственной ситуации)