Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 14
Текст из файла (страница 14)
На самом деле этот аппаратный механизм применяется гораздореже, чем об этом думали разработчики архитектуры ia32. На практике оказалось, что для сохранения контекста потоков эффективнее использовать программные механизмы, хотя они и не обеспечивают такой же надежности, как аппаратные.Итак, операционная система выполняет следующие основные функции, связанные с управлением процессами и задачами:• создание и удаление задач;Q планирование процессов и диспетчеризация задач;• синхронизация задач, обеспечение их средствами коммуникации.Создание задачи сопряжено с формированием соответствующей информационной структуры, а ее удаление — с расформированием.
Создание и удалениезадач осуществляется по соответствующим запросам от пользователей или отсамих задач. Задача может породить новую задачу. При этом между задачамипоявляются «родственные» отношения. Порождающая задача называется «отцом», «родителем», а порожденная — «потомком». Отец может приостановитьили удалить свою дочернюю задачу, тогда как потомок не может управлять отцом.Процессор является одним из самых необходимых ресурсов для выполнения вычислений. Поэтому способы распределения времени центрального процессора межДУ выполняющимися задачами сильно влияют и на скорость выполнения отдельных вычислений, и на общую эффективность вычислительной системы.Основным подходом в организации того или иного метода управления процессами, обеспечивающего эффективную загрузку ресурсов или выполнение каких-либоиных целей, является организация очередей процессов и ресурсов.
При распреде-52Глава 2,Управление задачамилении процессорного времени между задачами также используется механизм очередей.Решение вопросов, связанных с тем, какой задаче следует предоставить процессорное время в данный момент, возлагается на специальный модуль операционный системы, чаще всего называемый диспетчером задач. Вопросы же подборавычислительных процессов, которые не только можно, но и целесообразно решатьпараллельно, возлагаются на планировщик процессов.Вопросы синхронизации задач и обеспечение их различными средствами передачи сообщений и данных между ними вынесены в отдельную главу, и сейчас мы ихрассматривать не будем.Планирование и диспетчеризацияпроцессов и задачКогда говорят о диспетчеризации, то всегда в явном или неявном виде подразумевают понятие задачи (потока выполнения). Если операционная система не поддерживает механизм потоковых вычислений, то можно заменять понятие задачипонятием процесса.
Ко всему прочему, часто понятие задачи используется в такомконтексте, что для его трактовки приходится использовать термин «процесс».Очевидно, что на распределение ресурсов влияют конкретные потребности техзадач, которые должны выполняться параллельно. Другими словами, можно столкнуться с ситуациями, когда невозможно эффективно распределять ресурсы с тем,чтобы они не простаивали. Например, пусть всем выполняющимся процессам требуется некоторое устройство с последовательным доступом. Но поскольку, как мыуже знаем, оно не может разделяться между параллельно выполняющимися процессами, то процессы вынуждены будут очень долго ждать своей очереди, то естьнедоступность одного ресурса может привести к тому, что длительное время небудут использоваться многие другие ресурсы.Если же мы возьмем такой набор процессов, что они не будут конкурировать между собой за неразделяемые ресурсы при своем параллельном выполнении, то, скорее всего, процессы смогут выполниться быстрее (из-за отсутствия дополнительных ожиданий), да и имеющиеся в системе ресурсы, скорее всего, будутиспользоваться более эффективно.
Таким образом, возникает задача подбора такого множества процессов, которые при своем выполнении будут как можно режеконфликтовать за имеющиеся в системе ресурсы. Такая задача называется планированием вычислительных процессов.Задача планирования процессов возникла очень давно — в первых пакетных операционных системах при планировании пакетов задач, которые должны были выполняться на компьютере и по возможности бесконфликтно и оптимально использовать его ресурсы. В настоящее время актуальность этой задачи стала меньше.На первый план уже очень давно вышли задачи динамического (или краткосрочного) планирования, то есть текущего наиболее эффективного распределения ресурсов, возникающего практически по каждому событию.
Задачи динамическогоПланирование и диспетчеризация процессов и задач531планирования стали называть диспетчеризацией . Очевидно, что планированиепроцессов осуществляется гораздо реже, чем текущее распределение ресурсов между уже выполняющимися задачами. Основное различие между долгосрочным икраткосрочным планировщиками заключается в частоте их запуска, например: краткосрочный планировщик может запускаться каждые 30 или 100 мс, долгосрочный —один раз в несколько минут (или чаще; тут многое зависит от общей длительностирешения заданий пользователей).Долгосрочный планировщик решает, какой из процессов, находящихся во входной очереди, в случае освобождения ресурсов памяти должен быть переведен вочередь процессов, готовых к выполнению.
Долгосрочный планировщик выбирает процесс из входной очереди с целью создания неоднородной мультипрограммной смеси. Это означает, что в очереди готовых к выполнению процессов должнынаходиться в разной пропорции как процессы, ориентированные на ввод-вывод,так и процессы, ориентированные преимущественно на активное использованиецентрального процессора.Краткосрочный планировщик решает, какая из задач, находящихся в очереди готовых к выполнению, должна быть передана на исполнение. В большинстве современных операционных систем, с которыми мы сталкиваемся, долгосрочный планировщик отсутствует.Планирование вычислительных процессови стратегии планированияПрежде всего, следует отметить, что при рассмотрении стратегий планирования,как правило, идет речь о краткосрочном планировании, то есть о диспетчеризации.
Долгосрочное планирование, как мы уже отметили, заключается в подборетаких вычислительных процессов, которые бы меньше всего конкурировали между собой за ресурсы вычислительной системы. Иногда используется термин стратегия обслуживания.Стратегия планирования определяет, какие процессы мы планируем да выполнение для того, чтобы достичь поставленной цели.
Известно большое количестворазличных стратегий выбора процесса, которому необходимо предоставить процессор. Среди них, прежде всего, можно выбрать следующие:Q по возможности заканчивать вычисления (вычислительные процессы) в томже самом порядке, в котором они были начаты;Q отдавать предпочтение более коротким вычислительным задачам;Q предоставлять всем пользователям (процессам пользователей) одинаковыеуслуги, в том числе и одинаковое время ожидания.К сожалению, здесь наблюдается терминологическая несогласованность. Собственно модули супервизора, отвечающие за диспетчеризацию задач, часто называют планировщиками (scheduler). Однако фактически, говоря о тех же планировщиках памяти или о каких-нибудь других модулях, отвечающих за динамическое распределение ресурсов, имеют в виду, что эти планировщики осуществляютдиспетчеризацию.
Наконец, иногда диспетчеризацию называют краткосрочным планированием.54Глава 2. Управление задачамиКогда говорят о стратегии обслуживания, всегда имеют в виду понятие процесса,а не понятие задачи, поскольку процесс, как мы уже знаем, может состоять из нескольких потоков выполнения (задач).На сегодняшний день абсолютное большинство компьютеров — это персональныеIBM-совместимые компьютеры, работающие на платформах Windows компанииMicrosoft. Это однопользовательские диалоговые мультипрограммные и мультизадачные системы.
При создании операционных систем для персональных компьютеров разработчики, прежде всего, стараются обеспечить комфортную работус системой, то есть основные усилия уходят на проработку пользовательского интерфейса. Что касается эффективности организации вычислений, то она, видимо,тоже должна оцениваться с этих позиций. Если же считать системы Windows операционными системами общего назначения, что тоже возможно, ибо эти системыповсеместно используют для решения самых разнообразных задач автоматизации,то также следует признать, что принятые в системах Windows стратегии обслуживания приводят к достаточно высокой эффективности вычислений. Некоторымдаже удается использовать системы Windows NT/2000 для решения задач реального времени. Однако выбор этих операционных систем для таких задач скореевсего делается либо вследствие некомпетентности, либо из-за невысоких требований ко времени отклика и гарантиям обслуживания со стороны самих систем реального времени, которые реализуются на Windows NT/2000.Прежде всего, система, ориентированная на однопользовательский режим, должна обеспечить хорошую реакцию системы на запросы от того приложения, с которым сейчас пользователь работает.
Мало пользователей, которые могут параллельно работать с большим числом приложений. Поэтому по умолчанию для задачи, скоторой пользователь непосредственно работает и которую называют задачей переднего плана (foreground task), система устанавливает более высокий уровеньприоритета. В результате процессорное время прежде всего предоставляется текущей задаче пользователя, и он не будет испытывать лишний раз дискомфорт из-замедленной реакции системы на его запросы. Для обеспечения надлежащей работыкоммуникационных процессов и для возможности выполнять системные функции приоритет задач пользователя должен быть ниже, чем у тех задач, которыереализуют операции ввода-вывода и иные управляющие функции.Например, в Windows 2000 можно открыть окно Свойства системы, перейти навкладку Дополнительно, щелчком на кнопке Параметры быстродействия открыть одноименное окно и с помощью переключателя в разделе Отклик приложений установить режим Оптимизировать быстродействие приложений.