Эффективность работы пользователя.
Мультипрограммирование, или многозадачность — это такой вариант организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Системы пакетной обработки предназначены для решения задач в основном вычислительного характера, не требующих быстрого получения результатов. Главной целью и критерием эффективности систем пакетной обработки является максимальная пропускная способность (количество задач, выполняемых вычислительной системой в единицу времени).
В системах пакетной обработки используется следующая схема функционирования: в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам; из этого пакета заданий формируется мультипрограммная смесь, то есть множество одно
временно выполняемых задач. Для одновременного выполнения выбираются задачи, предъявляющие разные требования к ресурсам так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной машины. Например, в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом. Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в системе, то есть выбирается «выгодное» задание. Следовательно, в вычислительных системах, работающих под управлением пакетных ОС, невозможно гарантировать выполнение того или иного задания в течение определенного периода времени.
17. Система разделения времени — это такая форма организации вычислительного процесса, при которой сразу несколько пользователей одновременно работают на компьютере, причем каждому из них кажется, что он получил компьютер в полное свое распоряжение. Главной целью и критерием эффективности систем разделения времени является обеспечение удобства и эффективности работы пользователей. Другими словами, в системах разделения времени пользователям (в частном случае — одному пользователю) предоставляется возможность интерактивной работы сразу с несколькими приложениями. Для этого каждое приложение должно регулярно получать возможность «общения» с пользователем. Понятно, что в пакетных системах возможности диалога пользователя с приложением весьма ограничены. В системах разделения времени эта проблема решается за счет того, что ОС принудительно периодически приостанавливает приложения, не дожидаясь, когда они добровольно освободят процессор. Всем приложениям попеременно выделяется квант процессорного времени, таким образом, пользователи, запустившие программы на выполнение, получают возможность поддерживать
с ними диалог.
Системы разделения времени призваны исправить основной недостаток систем
пакетной обработки — изоляцию пользователя-программиста от процесса
выполнения его задач.
Ясно, что системы разделения времени обладают меньшей пропускной способностью,
чем системы пакетной обработки, так как на выполнение принимается
каждая запущенная пользователем задача, а не та, которая ≪выгодна≫ системе.
Кроме того, производительность системы снижается из-за возросших
накладных расходов вычислительной мощности на более частое переключение
процессора с задачи на задачу.
18.Еще одна разновидность мультипрограммирования используется в системах реального времени, предназначенных для управления от компьютера различными техническими объектами (станком, спутником) или технологическими процессами (доменным процессом). Очень важно, что во всех этих случаях существует предельно допустимое время, в течение которого должна быть выполнена та или иная управляющая объектом программа. В противном случае может произойти авария: спутник выйдет из зоны видимости. Таким образом, критерием эффективности здесь является способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы — реактивностью.
Операционная система реального времени — это система, предназначенная для управления физическими объектами (процессами), которая способна обеспечить предсказуемое время реакции в ответ на изменение состояния управляемого объекта (процесса).
В системах реального времени мультипрограммная смесь представляет собой
фиксированный набор заранее разработанных программ, а выбор программы
на выполнение осуществляется по прерываниям (исходя из текущего состояния
объекта) или в соответствии с расписанием плановых работ.
В системах реального времени не стремятся максимально загружать все устройства,
наоборот, при проектировании программного управляющего комплекса
обычно закладывается некоторый -≪запас≫ вычислительной мощности на
случай пиковой нагрузки
19.Мультипроцессорная обработка — это такой способ организации вычислительного процесса в системах с несколькими процессорами, при котором несколько задач (процессов, потоков) могут одновременно выполняться на разных процессорах системы. Симметричная архитектура мультипроцессорной системы предполагает однородность всех процессоров и единообразие включения процессоров в общую схему мультипроцессорной системы. В асимметричной архитектуре разные процессоры могут отличаться как своими характеристиками (производительностью, надежностью, системой команд и т. д., вплоть до модели микропроцессора), так и функциональной ролью, которая поручается им в системе. Например, одни процессоры могут предназначаться для работы в качестве основных вычислителей, другие — для управления подсистемой ввода-вывода, третьи — еще для каких-то особых целей. Асимметричное мультипроцессированиеявляется наиболее простым способом организации вычислительного процесса в системах с несколькими процессорами. Этот способ часто называют также «ведущий-ведомый». Симметричное мультипроцессированиекак способ организации вычислительного процесса может быть реализовано в системах только с симметричной мультипроцессорной архитектурой. Напомним, что в таких системах процессоры работают с общими устройствами и разделяемой основной памятью.
20.Более крупная единица работы, обычно носящая название процесс, или задача, требует для своего выполнения нескольких более мелких работ, для обозначения которых используют термины поток, или нить. В операционных системах, где существуют и процессы, и потоки, процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов кроме одного — процессорного времени. Этот последний важнейший ресурс распределяется операционной системой между другими единицами работы — потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд. В простейшем случае процесс состоит из одного потока. В таких системах понятие «поток» полностью поглощается понятием «процесс», то есть остается только одна единица работы и потребления ресурсов — процесс. Мультипрограммирование осуществляется в таких ОС на уровне процессов.
Для каждого процесса существует свое виртуальное адресное пространство(это совокупность адресов,
которыми может манипулировать программный модуль процесса. Операционная
система отображает виртуальное адресное пространство процесса на отведенную
процессу физическую память.), внутри которого он только и может работать (Способ защиты от других процессов). Все данные, которые процесс создает называют образом процесса.При необходимости взаимодействия процессы обращаются к операционной
системе, которая, выполняя функции посредника, предоставляет им средства
межпроцессной связи — конвейеры, почтовые ящики, разделяемые секции памяти
и некоторые другие. Потоки возникли как средство распараллеливания вычислений. Многопоточная обработкапредставляет собой механизм
распараллеливания вычислений, который учитывает тесные связи между отдельными ветвями вычислений одного и того же приложения. Понятию «поток» соответствует последовательный переход процессора от одной команды программы к другой команде. ОС распределяет процессорное время между потоками. Процессу ОС назначает адресное пространство и набор ресурсов, которые совместно используются всеми его потоками. Итак, мультипрограммирование более эффективно на уровре потоков, а не процессов. Каждый поток имеет собственные счетчик команд и стек.
Создать процесс — это, прежде всего, означает создать описатель процесса,
в качестве которого выступает одна или несколько информационных структур, содержащих все сведения о процессе, необходимые операционной системе для управления им. В число таких сведений могут входить, например, идентификатор процесса, данные о расположении в памяти исполняемого модуля, степень привилегированности процесса (приоритет и права доступа) и т. п.
Создание описателя процесса знаменует собой появление в системе еще одного претендента на вычислительные ресурсы. Начиная с этого момента при распределении ресурсов ОС должна принимать во внимание потребности нового процесса.
При создании процесса используется 2 основных типа информационных структур: дескриптор процесса (содержит инф-ю для ОС во время всей жизни процесса). Контекст процесса – менее оперативная, но более объемная инф-я, нужна для возобновления процесса с прерванного места.
21.На протяжении существования процесса выполнение его потоков может быть многократно прервано и продолжено. Работа по определению того, в какой момент необходимо прервать выполнение текущего активного потока и какому потоку предоставить возможность выполняться, называется планированием. Планирование потоков, по существу, требует решения двух задач:
■ определение момента времени для смены текущего активного потока;
■ выбор для выполнения потока из очереди готовых потоков.
В большинстве операционных систем универсального назначения планирование
осуществляется динамически (on-line), то есть решения принимаются во
время работы системы на основе анализа текущей ситуации. ОС работает в условиях
неопределенности — потоки и процессы появляются в случайные моменты
времени и также непредсказуемо завершаются. Динамические планировщики
могут гибко приспосабливаться к изменяющейся ситуации и не делают
никаких предположений относительно мультипрограммной смеси. Для того
чтобы оперативно найти в условиях такой неопределенности оптимальный
в некотором смысле порядок выполнения задач, операционная система должна
затрачивать значительные усилия.
Другой тип планирования — статический. Он может быть использован
в специализированных системах, в которых весь набор одновременно выполняемых
задач определен заранее, например в системах реального времени.
Планировщик называется статическим, или предварительным, если он принимает
решения о планировании не во время работы системы, а заранее (offline).
Соотношение между динамическим и статическим планировщиками аналогично
соотношению между диспетчером железной дороги, который пропускает
поезда строго по предварительно составленному расписанию, и регулировщиком
на перекрестке автомобильных дорог, не оснащенном светофорами,
который решает, какую машину остановить, а какую пропустить, в зависимости
от ситуации на перекрестке.
Диспетчеризация заключается в реализации найденного в результате планирования (динамического или статистического) решения, то есть в переключении процессора с одного потока на другой.
Прежде чем прервать выполнение потока, ОС запоминает его контекст (сохраняет состояние аппаратуры: момент прерывания, содержимое регистра, а также состояние ОС, например, ссылки на открытые файлы, ошибки потоков), с тем чтобы впоследствии использовать эту информацию для последующего возобновления выполнения данного потока. Диспетчеризация сводится к следующему:
■ сохранение контекста текущего потока, который требуется сменить;
■ загрузка контекста нового потока, выбранного в результате планирования;
■ запуск нового потока на выполнение.
Состояния потока
Операционная система выполняет планирование потоков, принимая во внимание
их состояние. В мультипрограммной системе поток может находиться в одном
из трех основных состояний:
■ выполнение — активное состояние потока, во время которого поток обладает
всеми необходимыми ресурсами и непосредственно обрабатывается процессором;
■ ожидание — пассивное состояние потока, находясь в котором поток заблокирован
по своим внутренним причинам (ждет осуществления некоторого события,
например завершения операции ввода-вывода, получения сообщения
от другого потока или освобождения какого-либо необходимого ему
ресурса); ■ ,
■ готовность — также пассивное состояние потока, но в этом случае поток заблокирован
в связи с внешним по отношению к нему обстоятельством (имеет
все требуемые для него ресурсы, готов выполняться, однако процессор занят
выполнением другого потока).
22.
■ Не вытесняющие алгоритмы основаны на том, что активному потоку позволяется выполняться, пока он сам, по собственной инициативе, не отдаст управление операционной системе, чтобы та выбрала из очереди другой готовый к выполнению поток.
■ Вытесняющие алгоритмы — это такие алгоритмы планирования потоков, в которых решение о переключении процессора с выполнения одного потока на выполнение другого принимается операционной системой, а не активной задачей.
Основным различием является то, что при вытесняющем мультипрограммировании функции планирования потоков целиком сосредоточены в операционной системе, и программист пишет свое приложение, не заботясь о том, что оно будет выполняться одновременно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения активного потока, запоминает его контекст, выбирает из очереди готовых потоков следующий, запускает новый поток на выполнение, загружая его контекст.
При не вытесняющем мультипрограммировании механизм планирования распределен между операционной системой и прикладными программами. Прикладная программа, получив управление от операционной системы, сама определяет момент завершения очередного цикла своего выполнения и только затем передает управление ОС с помощью какого-либо системного вызова. Такой механизм создает проблемы как для пользователей, так и для разработчиков приложений.
23.В основе многих вытесняющих алгоритмов планирования лежит концепция квантования.
Квант — ограниченный непрерывный период процессорного времени, поочередно предоставляемый для выполнения каждому потоку. Смена активного потока происходит, если:
■ поток завершился и покинул систему;
■ произошла ошибка;
■ поток перешел в состояние ожидания;
■ исчерпан квант процессорного времени, отведенный данному потоку.
При поступлении задачи на обработку ОС не имеет никаких сведений о том, является она короткой или длинней, насколько интенсивными будут ее запросы к устройствам ввода-вывода, насколько важно ее быстрое выполнение и т. д. Дифференциация обслуживания при квантовании базируется на «истории существования» потока в системе. Чем больше квант, тем выше вероятность того, что потоки завершатся в результате первого же цикла выполнения, и тем менее явной становится зависимость времени ожидания потоков от времени их выполнения.
Поток, который исчерпал свой квант, переводится в сос+ояние готовности
и ожидает, когда ему будет предоставлен новый квант процессорного времени.
При этом на выполнение в соответствии с определенным правилом выбирается
новый поток из очереди готовых
Если квант короткий, то суммарное время, которое проводит поток в ожидании
процессора, прямо пропорционально времени, требуемому для его выполнения
(то есть времени, которое потребовалось бы для выполнения этого потока
при монопольном использовании вычислительной системы).
25.Во многих операционных системах алгоритмы планирования построены с использованием как квантования, так и приоритетов. Например, в основе планирования лежит квантование, но величина кванта и/или порядок выбора потока из очереди готовых определяется приоритетами потоков.
24.Еще одной важной концепцией, лежащей в основе многих вытесняющих алгоритмов планирования, является приоритетное обслуживание. Приоритетное обслуживание предполагает наличие у потоков некоторой изначально известной характеристики — приоритета, на основании которого определяется порядок их выполнения.
Приоритет — это число, характеризующее степень привилегированности потока при использовании ресурсов вычислительной машины, в частности процессорного времени: чем выше приоритет, тем Выше привилегии, тем меньше времени будет проводить поток в очередях.
Приоритет может выражаться целым или дробным, положительным или отрицательным значением. В некоторых ОС принято, что приоритет потока тем выше, чем больше (в арифметическом смысле) число, обозначающее приоритет. В других системах наоборот, чем меньше число, тем выше приоритет. В последнем случае приоритеты называются динамическими, в отличие от неизменяемых фиксированных. В системах с абсолютными приоритетами время ожидания потока в очередях может быть сведено к минимуму, если ему назначить самый высокий приоритет. Такой поток будет вытеснять из процессора все остальные потрки (кроме потоков, тоже имеющих наивысший приоритет). Это делает планирование на основе абсолютных приоритетов подходящим для. систем управления объектами, в которых важна быстрая реакция на событие.