Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 15
Текст из файла (страница 15)
Это будет соответствовать выбору такой стратегии диспетчеризации задач, в соответствии с которойприоритет на получение процессорного времени будут иметь задачи пользователя, а не фоновые служебные вычисления. В предыдущей версии ОС — WindowsNT 4.0 — для выбора нужной ему стратегии пользователь должен был на вкладкеБыстродействие окна Свойства системы установить желаемое значение в поле Ускорение приложения переднего плана.
Это ускорение можно сделать максимальным(по умолчанию), а можно его свести к нулю. Последний вариант означал бы, чтовсе запущенные пользователем приложения будут иметь одинаковый приори-планирование и диспетчеризация процессов и задач55тет. Последнее важно, если пользователь часто запускает сразу по нескольку задач, каждая из которых требует длительных вычислений, причем эти приложения часто используют операции ввода-вывода. Например, если нужно обработать несколько десятков музыкальных или графических файлов, причем каждыйфайл имеет большие размеры, то выполнение всей этой работы как множествапараллельно исполняющихся задач будет завершено за меньшее время, если указать стратегию равенства обслуживания. Должно быть очевидным, что любойдругой вариант решения этой задачи потребует больше времени. Например, последовательное выполнение задач обработки каждого файла (то есть обработкаследующего файла может начинаться только по окончании обработки предыдущего) приведет к самому длительному варианту.
Стратегия предоставления процессорного времени в первую очередь текущей задаче пользователя, котораяустановлена в системах Windows по умолчанию, приведет нас к промежуточному (по затратам времени) результату.Очевидно, что в идеале в очереди готовых к выполнению задач должны находиться в разной пропорции как задачи, ориентированные на ввод-вывод, так и задачи,ориентированные преимущественно на работу с центральным процессором. Практически все операционные системы стараются учесть это требование, однако невсегда оно выполняется настолько удачно, что пользователь получает превосходное время реакции системы на свои запросы и при этом видит, что его ресурсоемкие приложения выполняются достаточно быстро.Дисциплины диспетчеризацииИзвестно большое количество дисциплин диспетчеризации, то есть правил формирования очереди готовых к выполнению задач, в соответствии с которыми формируется эта очередь (список).
Иногда их называют дисциплинами обслуживания,опуская тот факт, что речь идет о распределении процессорного времени. Однидисциплины диспетчеризации дают наилучшие результаты»для одной стратегииобслуживания, в то время как для другой стратегии они могут быть вовсе неприемлемыми. Известно большое количество дисциплин диспетчеризации. Мы же,несмотря на статус этой книги, рассмотрим далеко не все, а только те, которыепризнаны наиболее эффективными и до сих пор имеют применение.Прежде всего, различают два больших класса дисциплин обслуживания: бесприоритетные и приоритетные. При бесприоритетном обслуживании выбор задачпроизводится в некотором заранее установленном порядке без учета их относительной важности и времени обслуживания.
При реализации приоритетных дисциплин обслуживания отдельным задачам предоставляется преимущественноеправо попасть в состояние исполнения. Перечень дисциплин обслуживания и ихклассификация приведены на рис. 2.1." концепции приоритетов имеем следующие варианты:априоритет, присвоенный задаче, является величиной постоянной;априоритет изменяется в течение времени решения задачи (динамический приоритет).56Глава 2, Управление задачамиДисциплины диспетчеризацииБесприоритетные!Приоритетные1оюIсооРис.
2 . 1 . Дисциплины диспетчеризацииДиспетчеризация с динамическими приоритетами требует дополнительных расходов на вычисление значений приоритетов исполняющихся задач, поэтому вомногих операционных системах реального времени используются методы диспетчеризации на основе абсолютных приоритетов. Это позволяет сократить времяреакции системы на очередное событие, однако требует детального анализа всейсистемы для правильного присвоения соответствующих приоритетов всем исполняющимся задачам с тем, чтобы гарантировать обслуживание.
Проблему гарантииобслуживания мы рассмотрим ниже.Рассмотрим некоторые основные (наиболее часто используемые) дисциплиныдиспетчеризации.Самой простой в реализации является дисциплина FCFS (First Come First Served —первым пришел, первым обслужен), согласно которой задачи обслуживаются «в порядке очереди», то есть в порядке их появления. Те задачи, которые были заблоки-ваны в процессе работы (попали в какое-либо из состояний ожидания, напри° и з - з а операций ввода-вывода), после перехода в состояние готовности вновьдавятся в эту очередь готовности.
При этом возможны два варианта. Первый (самый простой) - это ставить разблокированную задачу в конец очереди готовыхк выполнению задач. Этот вариант применяется чаще всего. Второй вариант заключается в том, что диспетчер помещает разблокированную задачу перед темизадачами, которые еще не выполнялись. Другими словами, в этом случае образуется две очереди (рис. 2.2): одна очередь образуется из новых задач, а вторая очередь — из ранее выполнявшихся, но попавших в состояние ожидания. Такой подход позволяет реализовать стратегию обслуживания «по возможности заканчиватьвычисления в порядке их появления». Эта дисциплина обслуживания не требуетвнешнего вмешательства в ход вычислений, при ней не происходит перераспределения процессорного времени. Про нее можно сказать, что она относится к не вытесняющим дисциплинам 1 .РВыполненные процессыПроцессор1СБлокированиОчередь задач, вновь готовых к исполнениюDОчередь новых задачРис.
2.2. Дисциплина диспетчеризации FCFSК достоинствам этой дисциплины прежде всего можно отнести простоту реализации и малые расходы системных ресурсов на формирование очереди задач.Однако эта дисциплина приводит к тому, что при увеличении загрузки вычислительной системы растет и среднее время ожидания обслуживания, причем короткиезадания (требующие небольших затрат машинного времени) вынуждены ожидатьСуществующие дисциплины диспетчеризации процессов могут быть разбиты па два класса: вытесняющие (preemptive) и не вытесняющие (non-preemptive).
В первых пакетных операционных системах часто реализовывали параллельное выполнение заданий без принудительного перераспределения процессора между задачами. В большинстве современных ОС для мощных вычислительныхсистем, а также в ОС для персональных компьютеров, ориентированных на высокопроизводительное выполнение приложений (Windows 9x/NT/2000/XP, Linux, OS/2), реализованы вытесняющиеДисциплины диспетчеризации (вытесняющая многозадачность).58Глава 2. Управление задачамистолько же, сколько трудоемкие задания. Избежать этого недостатка позволяют дис- 1циплины SJN и SRT. Правило FCFS применяется и в более сложных дисциплинах 1диспетчеризации.
Например, в приоритетных дисциплинах диспетчеризации, если Iимеется несколько задач с одинаковым приоритетом, которые стоят в очереди готовых к выполнению задач, то попадают они в эту очередь с учетом времени.Дисциплина обслуживания SJN( Shortest Job Next — следующим выполняется самое короткое задание) требует, чтобы для каждого задания была известна оценка |в потребностях машинного времени.
Необходимость сообщать операционной системе характеристики задач с описанием потребностей в ресурсах вычислительнойсистемы привела к тому, что были разработаны соответствующие языковые средства. В частности, ныне уже забытый язык]СЬ (Job Control Language — язык управления заданиями) был одним из наиболее известных. Пользователи вынуждены были указывать предполагаемое время выполнения задачи и для того, чтобыони не злоупотребляли возможностью указать заведомо меньшее время выполнения (с целью возможности получить результаты раньше других), ввели подсчетреальных потребностей.