Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Контрольная по РОС

.pdf
Скачиваний:
1
Добавлен:
06.02.2022
Размер:
503.89 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Контрольная

по дисциплине «Распределенные операционные системы» Тема: «Введение в планирование, планирование в пакетных системах»

Выполнил: Кондратьев И.В.

студент 4 курса, группы ЗБСТ1851

Москва 2021

Введение

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

соответственно, производительность вычислительной системы. В данной работе проводится обзор основных концепций планирования и рассматриваются базовые алгоритмы планирования выполнения процессов.

Также, обсуждаются планирование в операционных системах пакетной обработки данных.

Основные термины

Планирование выполнения процессов - это задача выбора ожидающего исполнения процесса из очереди процессов и выделение ему процессора для исполнения.

Задача выбора очередного процесса из очереди готовых для исполнения процессов решается планировщиком. Функция непосредственной передачи управления процессором процессу, выбранному планировщиком, обычно реализуется в отдельном модуле операционной системы - диспетчере.

Функция диспетчера включает в себя смену контекста, переключение в пользовательский режим и передачу управления на адрес в процессе, с

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

2

Очередь процессов, готовых к исполнению, необязательно устроена по принципу «первым пришел — первым ушел». Однако, при любойреализации очереди все процессы в ней упорядочены и находятся в ожидании возможности выполниться на процессоре.

Задача планирования выполнения процессов может проявляться в следующих ситуациях:

1.процесс переходит из состояния исполнения в состояние ожидания

(например, в случае запроса ввода/вывода, или ожидания завершения одного из дочерних процессов);

2.процесс переходит из состояния исполнения в состояние готовности

(например, при возникновении прерывания);

3.процесс переходит из состояния ожидания в состояние готовности

(например, завершение ввода/вывода);

4.процесс завершается.

Концепции планирования

Планирование является фундаментальной функцией операционной системы. При использовании практически любых ресурсов вычислительной системы в том или ином виде возникает необходимость решения задачи планирования. Процессор является одним из основных ресурсов вычислительной системы, таким образом, именно планирование времени процессора занимает важную роль в основе архитектуры любойоперационной системы. В однопроцессорнойвычислительнойсистеме в каждыйконкретный момент времени центральныйпроцессор имеет возможность исполнять только один процесс. Естественным образом появляется необходимость в поддержке режима мультипрограммирования – способа организации вычислительного процесса, при котором на процессоре попеременно выполняются сразу

3

несколько процессов. В любоймомент времени процессор может быть занят выполнением одного из процессов, минимизируя время своего бездеиствия̆ .

Базовый принцип реализации механизма мультипрограммирования относительно прост: процесс исполняется до тех пор, пока ему не приходится по тем или иным причинам перейти в режим ожидания (вызванного,

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

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

общем случае исполнение процесса представляет собой циклическое

переключение между состояниями выполнения на процессоре и состояниями ожидания ввода/вывода.

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

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

4

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

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

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

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

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

Даже при одновременной работе двух программ, например текстового

5

процессора и электроннойтаблицы, вряд ли имеет значение, которую из них нужно пропустить вперед, поскольку пользователь, скорее всего, ждет результатов от обеих. Поэтому на простых персональных компьютерах планирование не играет особойроли.

Когда же дело касается сетевых служб, ситуация существенно изменяется. Здесь в конкурентную борьбу за процессорное время вступают уже несколько процессов, поэтому планирование снова приобретает значение.

Например, когда центральному процессору нужно выбирать между запущенным процессом, собирающим ежедневную статистику, и одним из процессов, обслуживающих запросы пользователя, если приоритет будет сразу же отдан последнему из процессов, пользователь будет чувствовать себя намного лучше. Сегодня и многие мобильные устроиствӑ могут похвастаться

«обилием ресурсов». Однако, поскольку одним из наиболее важных ограниченийна этих устроиствах̆ является ресурс аккумуляторов, некоторые планировщики стараются оптимизировать потребление электроэнергии.

Планировщик наряду с выбором «правильного» процесса должен заботиться также об эффективной загрузке центрального процессора,

поскольку переключение процессов является весьма дорогостоящим занятием. Сначала должно произоитй переключение из пользовательского режима в режим ядра, затем сохранено состояние текущего процесса, включая сохранение его регистров в таблице процессов для их последующейповторной загрузки. На некоторых системах должна быть сохранена также карта памяти

(например, признаки обращения к страницам памяти). После этого запускается алгоритм планирования для выбора следующего процесса. Затем в соответствии с картой памяти нового процесса должен быть перезагружен блок управления памятью. И наконец, новыйпроцесс должен быть запущен.

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

6

слишком частое переключение может поглотить существенную долю процессорного времени, что наводит на мысль: этого нужно избегать.

Категории алгоритмов планирования

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

предназначены для решения разных задач. Иными словами, предмет оптимизации для планировщика не может совпадать во всех системах. При этом стоит различать три среды:

пакетную;

интерактивную;

реального времени.

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

Всреде с пользователями, работающими в интерактивном режиме,

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

7

такого поведения необходимо использование приоритетного алгоритма. Под эту категорию подпадают и серверы, поскольку они, как правило,

обслуживают нескольких вечно спешащих (удаленных) пользователеи.̆

Пользователи компьютеров постоянно пребывают в состоянии дикойспешки.

В системах, ограниченных условиями реального времени, как ни странно, приоритетность иногда не требуется, поскольку процессы знают, что они могут запускаться только на непродолжительные периоды времени, и

зачастую выполняют свою работу довольно быстро, а затем блокируются.

В отличие от интерактивных систем в системах реального времени запускаются лишь те программы, которые предназначены для содеиствия̆ определенной прикладной задаче. Интерактивные системы имеют универсальный характер и могут запускать произвольные программы,

которые не выполняют совместную задачу или даже, возможно, вредят друг другу.

Планирование в пакетных системах

Наверное, наипростеишим̆ из всех алгоритмов планирования будет неприоритетныйалгоритм, принцип которого мы затрагивали в концепциях планирования, «первым пришел — первым обслужен». При исполь-

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

8

Сильнойсторонойэтого алгоритма является простота его понимания и такая же простота его программирования. Его справедливость сродни справедливости распределения дефицитных билетов на спортивные или концертные зрелища или, уже не актуальных, но все таки, мест в очереди на новые аифоны̆ тем людям, которые заняли очередь с двух часов ночи. При использовании этого алгоритма отслеживание готовых процессов осуществляется с помощью единого связанного списка. Выбор следующего выполняемого процесса сводится к извлечению одного процесса из начала очереди. Добавление нового задания или разблокированного процесса сводится к присоединению его к концу очереди. Что может быть проще для восприятия и реализации?

Ксожалению, принцип «первым пришел — первым обслужен» страдает

исущественными недостатками. Предположим, что используются один процесс, ограниченный скоростью вычислений, который всякий раз запускается на 1 с, и множество процессов, ограниченных скоростью работы устроиств̆ ввода-вывода, незначительно использующих время центрального процессора, но каждыйиз которых должен осуществить 1000 считыванийс

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

за ним непрерывнойчередойследуют все процессы, ограниченные скоростью работы устроиств̆ ввода-вывода.

В итоге каждыйпроцесс, ограниченныйскоростью работы устройств ввода-вывода, считывает один блок в секунду, и завершение его работы заимет̆

1000 с. Если используется алгоритм планирования, выгружающийпроцесс,

ограниченный скоростью вычислении,̆ каждые 10 мс, то процессы,

ограниченные скоростью работы устройств ввода-вывода, завершаются за 10

9

с вместо 1000 с, при этом особо не замедляя работу процесса, ограниченного скоростью вычислений.

Сначала самое короткое задание

Теперь рассмотрим другой неприоритетный алгоритм для пакетных систем, в котором предполагается, что сроки выполнения заданийизвестны заранее. К примеру, в страховой компании люди могут довольно точно предсказать, сколько времени заимет̆ выполнение пакета из 1000 исковых заявлении,̆ поскольку подобная работа выполняется ежедневно. Когда в ожидании запуска во входящейочереди находится несколько равнозначных по важности заданий, планировщик выбирает сначала самое короткое задание.

Следует заметить, что данный алгоритм оптимален в том смысле, что он дает минимальное среднее время ожидания для заданного набора процессов.

Помещая короткийпроцесс перед долгим, планировщик уменьшает время ожидания короткого процесса сильнее, чем увеличивается время ожидания длинного процесса. Следовательно, среднее время ожидания уменьшается.

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

что потребует перезапуска задачи).

10