Результат работы какого планировщика можно назвать расписанием
Перейти к содержимому

Результат работы какого планировщика можно назвать расписанием

Планирование и диспетчеризация потоков

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

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

Планирование потоков, по существу, включает в себя решение двух задач:

· определение момента времени для смены текущего активного потока;

· выбор для выполнения потока из очереди готовых потоков.

Существует множество различных алгоритмов планирования потоков, по-своему решающих каждую из приведенных выше задач. Алгоритмы планирования могут преследовать различные цели и обеспечивать разное качество мультипро­граммирования. Например, в одном случае выбирается такой алгоритм планирования, при котором гарантируется, что ни один поток/процесс не будет занимать процессор дольше определенного времени, в другом случае целью является мак­симально быстрое выполнение «коротких» задач, а в третьем случае — преиму­щественное право занять процессор получают потоки интерактивных приложе­ний. Именно особенности реализации планирования потоков в наибольшей степени определяют специфику операционной системы, в частности, является ли она сис­темой пакетной обработки, системой разделения времени или системой реально­го времени.

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

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

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

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

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

Диспетчеризация сводится к следующему:

· сохранение контекста текущего потока, который требуется сменить;

· загрузка контекста нового потока, выбранного в результате планирования;

· запуск нового потока на выполнение.

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

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

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

В различных ОС можно встретить компоненты ОС, имеющие названия планировщик (scheduler) или диспетчер (dispatcher). He следует однозначно судить о функциональном назначении этих компонентов по их названиям, то есть считать, что планировщик выпол­няет планирование, а диспетчер — диспетчеризацию в том смысле, в котором эти функции были определены выше. Чаще всего то и другое названия используются для обозначения компонентов, которые занимаются планированием.

Планировщик задач (Task Scheduler)

Планировщик задач (Task Scheduler)

Эта статья рассказывает о возможностях стандартного Планировщика Windows.
На примерах показано как запланировать запуск той или иной программы в определенное время. Рассказано о том, как правильно составить расписание запуска программы в определенные дни, в определенное время.

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

На примере будет показано создание задания со сложным расписанием запуска. Статья содержит массу скриншотов с подробными описаниями.

Создание задачи

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

Чтобы убедиться, что сервис запущен, зажмите поочередно клавиши Win + R , и в открывшемся окошке «Выполнить», нужно набрать команду services.msc и нажать кнопку «ОК». Откроется окно, показанное на рисунке 1.

Найдите службу «Планировщик заданий» и убедитесь, что в столбце «Состояние» у нее «Выполняется» («Работает» в старых версиях Windows), а в столбце «Тип запуска» — «Автоматически». Если это не так, то дважды щелкните по имени службы и в открывшемся окне скорректируйте значения на те, которые указаны выше (для этого нужно иметь привилегии администратора, т. е. Ваша учетная запись должна быть из группы Администраторы).

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

Теперь создадим задачу.

Для этого, опять поочередно зажмем клавиши Win + R , и введем команду taskschd.msc , после чего нажмем «ОК». Откроется окно, показанное на рисунке 2.

В правой панели данного окна нажмем на «Создать задачу. «. Откроется окно, показанное на рисунке 3.

В поле «Имя» нужно указать название этого задания, которое будет отображаться в окне Планировщика. Название может быть любым. Присвойте заданию такое имя, чтобы потом, при открытии Планировщика, можно было сразу вспомнить, что делает это задание. В данном примере я назвал задание «Тестирование Планировщика». После этого, нажимаем «Далее». Откроется окно, показанное на рисунке 4.

Здесь нужно выбрать период запуска этого задания. Возможны следующие варианты:

  • Ежедневно. Задание будет запускаться ежедневно, либо только по рабочим дням, либо через несколько дней в указанное время. Все эти параметры можно будет выбрать в следующем окне, о чем пойдет речь ниже.
  • Еженедельно. В следующем окне можно будет указать каждую ли неделю нужно запускать задание и выбрать дни недели, по которым задание будет запущено в определенное время.
  • Ежемесячно. Далее можно будет указать в какие месяцы года надо запускать задание и выбрать по каким числам месяца или по каким дням месяца в определенное время задание будет запущено.
  • Однократно. В следующем окне мастера можно будет выбрать дату и время запуска задания. Больше это задание выполняться не будет.
  • При загрузке компьютера. Следующего окна при выборе этого варианта нет, что логично, т.к. при таком типе запуска задание будет выполняться каждый раз при загрузке компьютера. Данный тип запуска не требует входа пользователя, задание будет запущено от имени того пользователя, которое будет нужно указать в следующем окне.
  • При входе в Windows. Этот тип запуска похож на предыдущий с тем отличием, что задание будет выполнено только когда пользователь войдет в Windows, т.е. введет свои логин и пароль.

Теперь разберем эти типы запуска заданий более подробно. После нажатия кнопки «Далее» будет выведено окно, в котором нужно указать дополнительные параметры расписания для запуска задачи. Исключение — два последних типа запуска, когда задание исполняется при загрузке компьютера или при входе пользователя. Итак, введите название задачи и выберите один из типов запуска, затем нажмите кнопку Далее. В зависимости от того, какой тип запуска был выбран, будут предложены те или иные настройки расписания запуска задачи.

Ежедневно

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

Еженедельно

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

Ежемесячно

При ежемесячном типе запуска задания необходимо отметить месяца, по которым будет запускаться задание и указать число, когда задание будет запущено. Обратите внимание на то, что последнее число месяца может быть 28-е, 29-е, 30-е или 31-е, поэтому, если задание необходимо выполнить в конце месяца, то его запуск лучше запланировать на первое число следующего месяца в 00:01. Если есть необходимость не указывать конкретное число для запуска задания, а запускать его только, например, по третьим пятницам указанных месяцев, то можно переключить соответствующий переключатель и выбрать из полей со списками требуемые значения.

Однократно

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

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

При входе в Windows
Такое задание будет выполняться при логоне пользователя.

Выберите наиболее подходящее под требования к периодичности запуска расписание, даже если оно не полностью соответствует необходимому. Например, если задачу необходимо выполнять по рабочим дням в 21:00, а по выходным — в 19:00, то на этом этапе создания задачи следует выбрать еженедельный запуск задачи, а после ее создания скорректировать расписание нужным образом. Пример такой настройки показан на рисунке 10.

Выберите наиболее подходящее под требования к периодичности запуска расписание, даже если оно не полностью соответствует необходимому. Например, если задачу необходимо выполнять по рабочим дням в 21:00, а по выходным — в 19:00, то на этом этапе создания задачи следует выбрать еженедельный запуск задачи, а после ее создания скорректировать расписание нужным образом.

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

В данном окне нужно выбрать действие, которое будет выполнятся данной задачей. На выбор доступно три пункта:

  • Запустить программу — будет выполнен указанный файл. Ограничений на формат файла нет, это может быть как исполняемый файл, так и какой-нибудь пакетный (bat, cmd и т. д.), или вообще любой другой.
  • Отправить сообщение электронной почты — в Windows 10 не получится создать задачу с таким действием.
  • Вывести сообщение — в Windows 10 не получится создать задачу с таким действием.

Выбрав действие «Запустить программу», и нажав Далее, увидим показанное на рисунке 10 окно.

В этом окне надо выбрать программу, которая будет запускаться Планировщиком, её надо найти при помощи кнопки Обзор. Для примера я создал на диске С папку Scheduler и поместил в нее пакетный файл test.bat, в котором находится последовательность команд, которые надо запускать в определенное время. Нажав кнопку Обзор найдите файл, который будет запускать Планировщик и нажмите Открыть. Если все сделано правильно, то мастер создания нового задания выведет следующее окно, показанное на рисунке 11.

Если проделанные ранее действия полностью удовлетворяют Вашим требованиям, то после нажатия кнопки Готово в окне, показанном на рисунке 13, создание будет завершено и в окне Планировщик заданий, в разделе «Библиотека планировщика заданий» появится вновь созданное задание. Если расписание запуска задачи требует дальнейшей, более тонкой донастройки, то отметьте пункт «Открыть окно Свойства для этой задачи после нажатия кнопки Готово» и нажмите кнопку Готово. В этом случае, будет открыто окно для настройки дополнительных возможностей расписания запуска задачи, которые подробно будут рассмотрены в следующей главе.

Дополнительные настройки

Если есть необходимость настроить дополнительные параметры запланированного задания, то щелкните правой кнопкой по созданному заданию в разделе «Библиотека планировщика заданий», находящейся в Планировщике заданий и выберите Свойства. Если дополнительные настройки будут меняться сразу после создания задания, то в последнем окне при создании задания (рисунок 11 в предыдущей главе) нужно поставить галочку у пункта «Открыть окно Свойства для этой задачи после нажатия кнопки Готово» и нажать Готово. Любая из этих последовательность действий приведет к тому, что откроется окно, пример которого показан на рисунке 12.

Это окно содержит несколько вкладок с параметрами более тонкой настройки расписания запуска задачи. Все настройки, расположенные на них будут подробно рассмотрены ниже.
На первой вкладке Задание, внешний вид которой показан на рисунке 12, находятся основные сведения о запланированной задаче. Это:

  • Имя — Имя задания, под которым оно отображается в Планировщике задач.
  • Размещение — Расположение задачи в древовидной структуре планировщика задач. В данном случае «\» обозначает, что задача расположена в корне древа.
  • Автор — Имя пользователя, создавшего задачу.
  • Описание — Текстовое описание задачи.
  • При выполнении задачи использовать следующую учетную запись пользователя — Имя пользователя, под которым будет выполнятся задача.
  • Выполнять только для пользователей, вошедших в систему — Если установить данный чекбокс, то данная задача будет выполнятся только при наличии залогиненного пользователя.
  • Выполнять для всех пользователей — Данная задача будет выполнятся вне зависимости от наличия залогиненного пользователя.
  • Выполнять с наивысшими правами — Для выполнения задачи будет предоставлены права администратора.

Внешний вид следующей вкладки «Триггеры» показан на рисунке 13.

Эта вкладка предоставляет все возможности по управлению расписанием запуска запланированной задачи, которые значительно шире, чем те, которые была возможность настроить в мастере создания задач и о которых шла речь в предыдущей главе. На ней есть возможность создать как новый триггер для запуска, так и отредактировать уже имеющейся старый. Выбрав уже существующий триггер, и нажав кнопку «Изменить», откроются расширенные настройки триггера, которые можно увидеть на рисунке 14.

Здесь можно наблюдать следующие пункты настроек:

  • Начать задачу — Условие, при котором будет начинаться задача. Данная настройка уже рассматривалась в предыдущей главе.
  • Параметры — Тип расписания запуска. Все типы были рассмотрены в предыдущей главе, поэтому останавливаться на них не будем.
  • Отложить задачу на (произвольная задержка) — Позволяет включить задержку в выполнении задачи, без изменения её раписания запуска.
  • Повторять задачу каждые . в течении . — С помощью данных настроек можно настроить повторение задачи в течении заданного интервала времени. Например, можно запускать задание каждые 30 минут в течение 8-ми часов или до определенного времени. Очень удобная возможность для решения определенных задач мониторинга событий. К примеру, иногда требуется проверять наличие в определенной папке файла с периодом в пять минут в течение рабочего дня и если он там появился, то запустить скрипт, который выполнит над файлом определенные действия.
  • Остановить задачу через — Принудительно завершает запущенный Планировщиком задач процесс. Например, в поле Выполнять до указано время 18:00. Если задание очень большое и исполняется полчаса, то запуск его в 17:55 приведет к тому, что задание фактически будет работать до 18:25. Если такое положение дел нежелательно, то нужно поставить галку Остановить задание. В этом случае выполнение задания будет прекращено в 18:00 не смотря ни на что.
  • Срок действия — Интервал дат, во время которого задача будет активна.
  • Включено — Позволяет включить или выключить данный триггер.

Вкладка «Действия» показывает список задач, которые будут выполнятся при активации ранее расмотренных триггеров. Её внешний вид приведен на рисунке 15, расположенном ниже.

На данной вкладке можно задать дополнительные действия, которые будут выполятся при активации задачи — в отличии от окна создания задачи, где можно было задать только одно единственное действие. При выборе создания или изменения действия появится уже окно с уже расмотренными ранее действиями по выборе запускаемой программы, по этому перейдем к следующей вкладке «Условия», которая показана на рисунке 16.

Здесь содержатся дополнительные условия задачи, такие как:

  • Запускать задачу при простое компьютера — Задача будет выполнятся только при «простое» компьютера, полезно для планирования запуска ресурсоемких задач, которые отнимают при своем выполнении все время процессора, загружая его на 100%.
  • Запускать только при питании для электросети — Если устройство, на котором настроена эта задача, перейдет к питанию от аккамуляторов (например это ноутбук, или сервер с подключенным ИБП), то при этой включенной опции, задача не будет выполнятся.
  • Пробуждать компьютер для выполнения задачи — При включении этой опции, Планировщик задач будет выводить компьютер из спящего режима для выполнения данной задачи.
  • Запускать только при подключении к следующей сети — При активации этого параметра, и выборе нужного сетевого подключения, задача будет выполнятся только при условии, что это подключение активно.

Вкладка «Параметры» показана на рисунке 17.

  • Немедлено запускать задачу, если пропущен плановый запуск — В случае, если задача не была выполнена вовремя, она будет выполнятся при первой же возможности (например, если в это время был выключен компьютер, то задача начнет выполнятся сразу при его включении).
  • При сбое выполнения перезапускать через — Если задача завершается с ошибкой, то можно указать времянной интервал, через который она будет повторно запущена. Так же можно задать количество повторных попыток запуска задачи.
  • Останавливать задачу, выполняемую дольше — Можно принудительно остановить выполнение задачи, если задание выполняется дольше указанного времени.
  • Принудительная остановка задачи, если она не прекращается по запросу — Если задача не останавливается, то она будет завершена принудительно.
  • Если повтор задачи не запланирован, удалять через — Позволяет настроить автоматическое удаление «одноразовой» задачи спустя какое-то время.

Примеры настройки Планировщика

В данной главе будет показано несколько вариантов расписаний настроенной задачи. Все расписания запускают файл test.bat из C:\Scheduler. Задача была сперва создана при помощи мастера, а затем в окне Планировщика открыты её свойства.

Ежедневный запуск задачи

Первый пример настройки показывает как настроить задачу на ежедневный запуск в 21:00. Самый простой вариант расписания, которое создается мастером без последующей донастройки. Свойства триггера созданной задачи выглядит так, как показано на рисунке 18.

Такое расписание не требует каких-то дополнительных комментариев. Задача запускается каждый день в 21:00.

Запуск задачи через день

Это расписание отличается от предыдущего лишь тем, что оно запускается раз в два дня.

Как видно на рисунке 19, в поле «Повторять каждые» установлено значение 2 дня. Это приведет к тому, что задача будет запущена раз в два дня. В это поле можно ввести любое значение.

Отложенный ежедневный запуск задачи

В этом примере запланирован ежедневный запуск задачи, но первый ее запуск отложен на 5 дней.

Как видно, на рисунке 20 в Дополнительных настройках установлена дата начала работы задания на 30-е число, притом, что задание создано 25-го. Таким образом, мы создали задачу, но отложили начало ее ежедневного запуска на 10 дней.

Ежедневный запуск задачи до определенной даты с последующим удалением задачи из Планировщика

При таком расписании задача запускается ежедневно до определенной даты. Когда дата последнего запуска достигнута задача удаляется из Планировщика.

Такое расписание запускает задачу каждый день начиная с 25-го июля и заканчивая 25-м августом, о чем говорят Дополнительные параметры, показанные на рисунке 21.

На рисунке 22 показаны настройки на вкладке «Параметры», а именно то, что установлена галочка у пункта «Если повтор задачи не запланирован, удалять через» и выбрано значение «Немедлено». Установка этой галки в совокупности с данным параметром приведет к тому, что задание, после последнего запуска будет удалено из Планировщика.

Запуск задачи в разные дни недели в разное время

Этот пример демонстрирует настройку расписания запуска задачи Планировщиком в разные дни недели в разное время. При помощи расписания, представленного на рисунках 23 и 24 реализована следующая задача. Задание запускается в рабочие дни в 20:00, а в выходные — в 10:00. В созданном при использовании мастера создания задачи, были выставленны следующие значения, для запуска задачи по будням:

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

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

Ежеминутный запуск задачи в рабочее время в рабочие дни

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

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

Ежемесячный запуск задачи

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

Запуск задачи запланирован на первую минуту нового месяца. Это связано с тем, что в месяце может быть 28, 29, 30 или 31 день. Чтобы не создавать для каждого месяца свое расписание логичнее выполнять задачу первого числа каждого месяца.

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

Тестовый запуск задачи

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

Щелкните правой кнопкой по созданной задаче в Планировщике и выберите пункт Выполнить. Задача будет немедленно запущена, не смотря на расписание.

При удачном прохождении тестового запуска задачи, в главном окне Планировщика, в столбце «Результат прошлого запуска» появится значение 0х0. Это говорит о том, что запуск задачи был успешным. Если запуск задачи по каким-то причинам не удался, то в столбце «Результат прошлого запуска» будет стоять другое значение — 0x1. Помочь узнать причину незапуска задачи может журнал задачи, но перед этим его нужно включить. Для этого, нужно в правой колонке окна Планировщика задач найти пункт «Включить журнал всех заданий».

После этого, можно повторно запустить задачу, и уже по журналу смотреть, в чем же произошло.

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

Управление заданиями Планировщика задач по сети

Нередко возникает необходимость выполнять автоматически те или иные действия на компьютерах пользователей в локальной сети. Администратор может управлять заданиями Планировщика на компьютерах пользователей удаленно, по сети. Учетная запись, из-под которой будет производится управление заданиями Планировщика должна обладать правами Администратора на компьютере пользователя.
Чтобы создать, изменить или удалить задание на компьютере пользователя по сети, откройте «Планировщик задач», и в левом столбце нажмите правой кнопкой мыши на «Планировщик заданий (Локальный компьютер)». В появившемся контекстном меню нужно выбрать пункт «Подключится к другому компьютеру. «.

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

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

ОС / Тесты / Тест 1 / Полный тест с ответами

1. В конец очереди готовых потоков соответствующего уровня приоритета

2. В начало очереди готовых потоков соответствующего уровня приоритета

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

1. Прерыванием

2. Процедурой

3. Системным вызовом

4. Потоком

5. Ресурсом

3. При создании процессов подсистема управления процессами тесно взаимодействует с:

1. Подсистемой управления памятью

2. Пользователем

3. Выводом

4. Подсистемой управления вводом

5. Оперативной памятью

6. Файловой системой

4. Набор функций микроядра обычно содержит функции следующих слоев обычного ядра:

1. Слой интерфейса системных вызовов

2. Слой базовых механизмов

3. Слой менеджеров ресурсов

4. Слой машинно-зависимых компонентов

5. К «твердым» ресурсам относятся:

1. Процессор

2. Аппаратные

3. Программные

4. Информационные

5. Память

6. Поддержка отказоустойчивости реализуется ОС, как правило, на основе:

1. Отключения устройств

2. Поддержки зеркальных серверов

3. Ограничения доступа

4. Поддержки дублирования контроллера

5. Обслуживания резервных устройств ввода-вывода

7. В качестве аргумента системного вызова wait() поток может указать максимальное время ожидания перехода синхронизирующего объекта в … состояние.

1. Несигнальное

2. Сигнальное

3. Выключенное

1. Обобщенный случай блокирующей переменной

2. Мьютекс

3. Обобщенный случай критической секции

4. Объект-событие

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

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

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

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

10. Таблица прерываний в защищенном режиме работы процессора располагается по адресу:

1. 00000

2. 0AAFF

3. 003FF

4. Может располагаться в любом месте физической памяти

11. Многозадачность на основе режима разделения времени называется …

1. Независимой

2. Вытесняющей

3. Совместной

4. Кооперативной

5. Невытесняющей

12. В ОС Windows NT у потоков в диапазоне реального времени базовый приоритет:

1. Меньше текущего

2. Идентичен текущему

3. Больше текущего

13. Производительность ОС на основе микроядра (по сравнению с классической архитектурой) будет …

1. Иногда ниже

2. Всегда ниже

3. Не ниже

4. Такая же

5. Выше

14. В ОС на основе микроядра при обращении к функции ядра, смена режимов происходит … раза

1. 1

2. 4

3. 5

4. 3

5. 2

15. Запрет прерываний в процессоре x86 реализуется с помощью команды:

1. CMP

2. STI

3. INT

4. CLI

16. Планировщик называется статическим, если он принимает решение о планировании:

1. Не во время работы системы, а заранее

2. Во время работы системы на основе статического анализа текущей ситуации

17. Алгоритм планирования, основанный на квантовании относится к:

1. Вытесняющим алгоритмам планирования

2. Невытесняющим алгоритмам планирования

18. Некоторое число (номер) в диапазоне 0-255, указывающее на одну из 256 программ обработки прерываний, адреса которых хранятся в таблице прерываний, называется … прерывания (ий)

1. Адресом

2. Вектором

3. Адресом обработчика

4. Номером

5. Номером обработчика

19. Для упорядочивания работы обработчиков прерываний в ОС применяется механизм:

1. Очередей без приоритета

2. Очередей реального времени

3. Приоритетных очередей

20. Возможность интерактивного взаимодействия пользователя и программы возникает с появлением:

1. Мультипрограммных вычислительных систем

2. Систем пакетной обработки

3. Систем разделения времени

21. Программное прерывание в процессоре x86 реализуется с помощью команды:

1. STI

2. CMP

3. CLI

4. INT

22. Выберете алгоритм распределения памяти, который предусматривает использование внешней памяти:

1. Перемещаемыми разделами.

2. Фиксированными разделами

3. Динамическими разделами

4. Страничное распределение

23. Мультипрограммирование наиболее эффективно:

1. На уровне процессов

2. На уровне потоков

24. Мьютексы – это

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

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

3. принцип действия семафоров, но в них заложена возможность подсчёта ресурсов, что позволяет заранее определенному числу потоков одновременно войти в синхронизируемый участок кода

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

25. При совместном использовании одного уровня IRQ несколькими устройствами программа обработки прерываний работает в соответствии с:

1. Схемой векторных прерываний

2. Схемой опрашиваемых прерываний

26. Конвейер(канал,pipe) – это

1. буфер в кеш-памяти, поддерживающий очередь байт по алгоритму

2. буфер в кеш-памяти, поддерживающий очередь байт по алгоритму «кратчайшая задача – первая»

3. буфер в оперативной памяти, поддерживающий очередь байт по алгоритму «кратчайшая задача – первая»

4. буфер в оперативной памяти, поддерживающий очередь байт по алгоритму FIFO

27. Способ реализации системных вызовов зависит от структурной организации ОС, связанной с особенностями:

1. Оперативной памяти

2. Внешней памяти

3. Обработки прерываний

4. Приоритетного обслуживания

5. Аппаратной платформы

28. При выполнении инструкции деления на 0 возникает:

1. Прерывания не происходит, но возникает ошибка

2. Внутреннее прерывание

3. Программное прерывание

29. Устройствам, которые используют векторные прерывания, назначается:

1. Приоритет прерывания

2. Драйвер

3. Вектор прерываний

4. Диспетчер прерывания

5. Процедура обработки прерывания

30. Процесс в мультипрограммном режиме может выполняться быстрее, чем в монопольном:

1. Да

2. Нет

31. Надежность ОС на основе микроядра (по сравнению с классической архитектурой) …

1. Не выше

2. Выше

3. Такая же

4. Ниже

5. Намного ниже

32. Разделение персонала, связанного с разработкой и эксплуатацией ЭВМ, на разработчиков, специалистов по эксплуатации, операторов и программистов произошло:

1. В первый период развития вычислительной техники (1945-55 г.г.)

2. В третий период развития вычислительной техники (1965-80 г.г.)

3. Во второй период развития вычислительной техники (1955-65 г.г.)

33. В ОС Windows NT процесс имеет:

1. Только базовое значение приоритета

2. Базовое и текущее значение приоритета

34. Системные семафоры – это

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

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

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

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

35. Следующие алгоритмы планирования возможно применить в интерактивных ОС:

1. Квантование с относительными динамическими приоритетами

2. Кратчайшая задача – первая

3. Абсолютные приоритеты

4. Относительные приоритеты

36. Результат работы, какого планировщика можно назвать расписанием:

1. Статистического

2. Динамического

3. Всех перечисленных

4. Статического

37. Выберите верные утверждения:

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

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

38. В ОС Windows NT Server квант по умолчанию равен:

1. Двадцати пяти интервалам системного таймера

2. Десяти интервалам системного таймера

3. Двенадцати интервалам системного таймера

4. Двадцати интервалам системного таймера

39. В ОС Windows NT поток имеет:

1. Базовое и текущее значение приоритета

2. Только базовое значение приоритета

40. Как правило, повышать приоритеты потоков в системе (в определенных пределах) могут:

1. Разработчики программ

2. Некоторые пользователи

3. Администраторы

4. Все

5. Все пользователи

41. Таблица прерываний в реальном режиме работы процессора состоит из:

1. 256 элементов

2. 255 элементов

3. 1024 элементов

4. 512 элементов

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

1. Расширяемость, надежность, переносимость

2. Производительность, надежность

3. Расширяемость, производительность, надежность

4. Расширяемость, производительность

43. Исключения обрабатываются:

1. Специальными модулями ядра

2. Процедурами ОС, обслуживающими системные вызовы

3. Драйверами внешних устройств

44. Синхронизация потоков заключается:

1. В согласованном доступе к аппаратным средствам

2. В согласованном выполнении системных вызовов этими потоками

3. В согласовании их скоростей путем приостановки потоков

45. Аппаратные прерывания обрабатываются:

1. Специальными модулями ядра

2. Драйверами внешних устройств

3. Процедурами ОС, обслуживающими системные вызовы

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

1. Утилиты

2. Библиотеки процедур различного назначения

3. Драйверы

4. Системные обрабатывающие программы

5. Сервисные программы

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

1. Обе функции развивались параллельно без явного доминирования

2. Эффективное управление ресурсами

3. Предоставление удобств пользователю

48. На современном этапе в развитии операционных систем персональных компьютеров наблюдается …

1. революция

2. стагнация

3. эволюция

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

1. Да

2. Нет

50. Выберите верные утверждения:

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

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

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

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

Распределение времени процессора.

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

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

Наиболее характерными критериями эффективности вычислительных систем являются:

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

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

· Реактивность системы – способность системы выдерживать заранее заданные интервалы времени между запуском программы и получением результата.

В зависимости от этого ОС делятся на:

· Системы пакетной обработки;

· Системы разделения времени;

· Системы реального времени.

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

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

Для пакетных ОС характерно совмещение операций ввода-вывода и вычислений. Такое совмещение может достигаться разными способами :

1. Специализированный процессор ввода-вывода.

Иногда такие процессоры называют каналами. Канал имеет систему команд, отличающуюся от системы команд центрального процессора. Эти команды специально ориентированы для управления внешними устройствами :

· установить магнитную головку;

· напечатать строку и т.д.

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

  1. Внешние устройства управляются контроллерами.

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

Максимальный эффект при пакетной обработке достигается при наиболее полном перекрытии вычислений и ввода-вывода.

В случае одной задачи ускорение зависит от её характера. При преобладании вычислений или ввода-вывода ускорение практически отсутствует.

Системы разделения времени.

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

Системы реального времени.

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

В системах реального времени мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется по прерываниям (например, исходя из текущего состояния объекта управления) или в состоянии с расписанием работ.

Мультипроцессорная обработка.

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

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

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

Мультипроцессорные системы характеризуют как симметричные или как несимметричные, в зависимости от того , к какому аспекту вычислительной системы это относится:

· к способу организации вычислительного процесса.

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

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

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

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

Масштабирование в асимметричной архитектуре реализуется иначе, чем в симметричной. Система может состоять из нескольких устройств, каждое из которых содержит один или несколько процессоров. Это масштабирование по горизонтали. Каждое такое устройство называется кластером, а вся система обычно называется кластерной. Способ организации вычислительного процесса в мультипроцессорной системе определяется ОС.

Ассиметричное мультипроцессирование является наиболее простым способом организации. Этот способ иногда называют «ведущий — ведомый».

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

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

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

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

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

Понятия процесса и потока

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

В ряде ОС определены два типа работы. Более крупная единица – процесс, которая требует для своей реализации несколько более мелких работ, и эта более мелкая единица называется потоком.

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

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

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

Для этих целей в ряде современных ОС используется механизм многопоточной обработки. При этом вводится новая единица работы – поток выполнения, а понятие «процесс» в некоторой степени меняет смысл.

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

При управлении процессами ОС использует два основных типа информационных структур:

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

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

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

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

Контекст, так же как и дескриптор, доступен только программам ядра, т.е. находится в виртуальном адресном пространстве ОС.

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

Переход от выполнения одного потока к другому осуществляется в результате планирования и диспетчеризации.

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

При планировании могут приниматься во внимание приоритет потоков, время их ожидания в очереди, накопленное время выполнения, интенсивность обращения к вводу-выводу и др. факторы.

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

Планирование потоков включает в себя решение двух задач:

· определение момента времени для смены текущего активного потока;

· выбор для выполнения потока из очереди готовых потоков.

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

Именно особенности реализации планирования потоков в наибольшей степени определяют специфику ОС, в частности, является ли она системой пакетной обработки, системой разделения времени или системой реального времени.

Планирование может быть динамическим или статическим.

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

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

Планировщик называется статическим, если он принимает решения о планировании не во время работы системы, а заранее.

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

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

· состояние аппаратуры компьютера в момент прерывания потока: значение счетчика команд, содержимое регистров общего назначения, режим работы процессора, флаги, маски и другие параметры;

· параметры операционной среды (ссылки на открытые файлы, данные о незавершенных операциях ввода-вывода, коды ошибок, выполняемых данным потоком системных вызовов и т.д.).

Диспетчеризация сводится к следующему :

· сохранение контекста текущего потока, который требуется сменить;

· загрузка контекста нового потока, выбранного в результате планирования;

· запуск нового потока на выполнение.

В мультипрограммной системе поток может находиться в одном из трех состояний:

· выполнение – выполняется процессором:

· ожидание – ждет осуществления некоторого события;

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

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

Граф состояний потока в многозадачной среде можно представить как на рисунке:

«Вытеснение потока» означает прекращение его выполнения процессором, например, вследствие исчерпания отведенного для выполнения кванта времени.

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

Вытесняющие и невытесняющие алгоритмы планирования.

Все множество алгоритмов планирования можно разделить на два класса: вытесняющие и невытесняющие .

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

Вытесняющие – такие, в которых решение о переключении процессора с выполнения одного потока на другой принимается ОС.

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

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

Почти все современные ОС, такие как UNIX, Windows NT/2000, OS-2, Windows 95/98 реализуют вытесняющие алгоритмы планирования потоков.

Алгоритмы планирования, основанные на квантовании.

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

Смена активного потока происходит, если:

· поток завершился и покинул систему;

· поток перешел в состояние ожидания;

· исчерпан квант процессорного времени.

Поток, исчерпавший свой квант, переводится в состояние готовности и ожидает в очереди. Граф состояний потока представлен на рисунке:

Кванты для потоков могут быть одинаковыми или различными.

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

Соответствующий граф состояний потока можно представить как:

Алгоритмы планирования, основанные на приоритетах.

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

В ОС Windows NT определено 32 уровня приоритетов и два класса потоков – потоки реального времени и потоки с переменными приоритетами.

Диапазон от 1 до 15 отведен для потоков с переменными приоритетами, а от 16 до 32 – для более критичных ко времени потоков реального времени.

Смешанные алгоритмы планирования.

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

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

Планирование в системах реального времени.

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

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

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

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

Моменты перепланировки.

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

· прерывание от таймера, сигнализирующее, что время, отведенное активной задаче, закончилось;

· активная задача выполнила системный вызов, связанный с запросом на ввод-вывод или на доступ к ресурсу, который в настоящий момент занят (например, файл данных);

· активная задача выполнила системный вызов, связанный с освобождением ресурса. Планировщик проверяет, не ожидает ли этот ресурс какая-либо задача. Если да, то задача переводится из состояния ожидания в состояние готовности и проверяется, имеет ли она наивысший приоритет. Если нет – возможна перепланировка;

· внешнее аппаратное прерывание. Оно сигнализирует о переводе соответствующей текущей задачи в очередь готовности и выполняется планировщик;

· внутреннее прерывание сообщает об ошибке в текущей задаче. Планировщик снимает задачу и выполняет перепланирование.

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

Дата добавления: 2016-06-15 ; просмотров: 6574 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *