Программы мониторы это в информатике

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

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

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

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

Идеальный размер для монитора ?

Источник: lawbooks.news

Мониторы

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

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

Мониторы — программные модули, которые при той же эффективности реализации, что и семафоры, обеспечивают лучшую структуризацию кода. Монитор инкапсулирует представление абстрактного объекта, содержит переменные, хранящие состояние объекта, и процедуры, реализующие операции над ним. Поток получает доступ к переменным в мониторе только путем вызова процедур этого монитора, поэтому взаимное исключение обеспечивается неявно, два потока не могут одновременно выполняться в одном мониторе, поскольку не могут одновременно выполняться две процедуры монитора. Идею инкапсуляции данных для управления доступом к разделяемым переменным в параллельной программе озвучил Э. Дейкстра [16], а мониторы носят имя Хоара, который дал им такое название и предложил с их помощью решение нескольких классических задач.

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

Пространственное разрешение монитора Компьютерное представление цвета Видеосистема персонально

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

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

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

В общем случае монитор описывается следующим образом:

объявление постоянных переменных операторы инициализации процедуры

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

call monitor_name.operation_name (arguments);

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

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

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

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

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

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

Условная переменная объявляется следующим образом:

Можно объявить массив условных переменных.

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

Читайте также:
Как записать программу в интернете

Возвращает «TRUE», если очередь переменной пуста, иначе — «FALSE»

Ждать в конце очереди

Ждать в порядке возрастания значения переменной rank

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

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

Возвращает значение ранга потока в начале очереди ожидания

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

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

    • протокол «сигнализировать и продолжать» (5 1; front — индекс первого сообщения в очереди; rear — индекс первой пустой ячейки после сообщения в конце очереди; count — количество сообщений в буфере.

Рассмотрим монитор с двумя операциями: deposit () — «положить в буфер» и fetch () — «извлечь из буфера». Поскольку эти операции по умолчанию происходят с взаимным исключением, то в нашем решении нет никаких аналогов семафоров mutexP и mutexc. Для реализации условного ожидания вместо семафоров empty и full используются две условные переменные: not_empty получает сигнал, когда count > о, т. е. из буфера можно извлекать данные; not full получает сигнал, когда count 0 procedure deposit(typeT data) < while (count == n) wait(not_full); buffrear] = data; rear = (rear+1) % n; count ++; signal(not_empty);

result = buf[front]; front = (front + 1) % n; count—; signal(not_full);

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

Источник: studref.com

Лекция 7. Программные измерительные мониторы.

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

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

Идея использовать измерительные средства в процессе разработки программ — не нова. В настоящее время существует несколько типов таких программных средств. Особое место среди них занимают профилировщики. Профилировщики (называемые также анализаторами процесса выполнения программ) — это программы, позволяющие получить ряд количественных данных о процессе выполнения объекта разработки (снять профиль разрабатываемой программы) и на основании этих данных выявить в программе «узкие места», отрицательно сказывающиеся на эффективности ее работы. Профиль программы может содержать, например, следующую информацию о процессе выполнения программы:

— как и на что расходуется время работы программы;

— сколько раз выполняется данная строка программы;

— сколько раз и какими модулями вызывается данный модуль программы.

Один из самых известных профилировщиков — Turbo Profiler фирмы Borland International. Система Turbo Profiler контролирует каждый шаг выполнения программы и предоставляет подробные статистические сведения о всех этапах ее работы.

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

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

Другой подход реализован, например, в пакете Interval Performance Monitoring (IPM) Калифорнийского Университета. IPM ориентирован исключительно на временные измерения и состоит из набора отдельных функций для замера времени и протоколирования результатов измерения. Функции вставляются в нужные места программы, после чего программа компилируется. Такой подход позволяет резко повысить точность измерений, но требует значительных дополнительных усилий по сбору и классификации полученной информации. Трудоемкость проведения измерительного эксперимента не позволяет считать системы типа IPM полноценными профилировщиками.

Читайте также:
Лучшая программа для виджетов win 10

Многие из полезных принципов организации системы Turbo Profiler и пакета IPM были реализованы на кафедре МОЭВМ в ПИМ Sampler. Особенностью работы ПИМ Sampler являются:

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

2. Исследуемая программа выполняется «естественным» образом, а не по шагам и без использования отладочной информации.

3. Измерения времени выполняются с максимально возможной точностью.

4. Искажения, вносимые ПИМ за счет потребления им ресурсов ЭВМ, минимальны и не сказываются на итоговых результатах.

5. По результатам измерений формируется файл отчета печатного вида и представление их в графической форме.

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

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

Функция контрольных точек выполняет измерение времени дважды: сразу после входа в нее и непосредственно перед выходом. Оба значения времени передаются измерительному монитору. После первого замера управление передается монитору и он выполняет действия по идентификации и накоплению результатов измерений. После возврата управления в функцию задания контрольных точек, выполняется второе измерение времени. Такой подход наиболее полно соответствует условиям 3 и 4, поскольку позволяет точно измерить не только время выполнения участка программы между контрольными точками, но и убрать временное искажение вносимое измерительным монитором.

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

  • Подготовительные операции. На этом этапе производится проверка допустимости входных параметров, формирование необходимых структур данных и операции по калибровке измерительного монитора. После окончания подготовительных операций управление передается исследуемой программе. Управление передается по схеме — «запуск программы-потомка с возвратом в предок».
  • Идентификация и накопление измерительный информации. Эти действия производится после перехвата прерывания от исследуемой программы. Идентификация информации подразумевает не только анализ положения контрольных точек, но и определение ряда статистических сведений о проходах между контрольными точками. Накопление такого рода измерительной информации облегчает последующее формирование отчета и позволяет резко сократить расход памяти, потребляемой монитором. При накоплении измерительная информация корректируется для снятия временных искажений монитора. Таким образом, исследуемая программа выполняется без трассировки и освобождается от операций по анализу и протоколированию измерительной информации. Это полностью соответствует принципам 1, 2 и 4.
  • Операции по анализу измерительной информации и формированию отчетов. Эта фаза является заключительной и наступает после окончания работы исследуемой программы. Реализация условия 5 требует значительных ресурсов ВС. В этой связи, целесообразно графическую интерпретацию снятого профиля выполнять в отдельной программе — просмотрщике. Снятый профиль программы выдается в виде текстового файла и в виде двоичного.

В «Sampler»e замеры системного времени проводятся, как и для IPM, внутри тестируемой программы вызовом функции задания точки профилирования. Этим достигается высокая точность измерения времени и отсутствие ограничений на использование отладочной информации и оптимизации компилятора. Функция задания точки профилирования определена в модуле на соответствующем языке программирования, подключаемом к тестируемой программе. С другой стороны, запуск тестируемой программы осуществляется, как и для Turbo Profiler, через монитор. Это позволяет освободить пользователя от сбора и классификации измерительной информации. Результаты измерения могут быть представлены как на экране компьютера, так и твердой копией после вывода протокола измерения на принтер. ПИМ Sampler состоит из двух исполняемых модулей следующего функционального назначения

  • Измерительный монитор Sampler. Монитор запускает программу пользователя и перехватывает прерывания, несущие информацию о прохождении тестируемой программы пользователя через определяемые им точки (контрольные точки ). После отработки тестируемой программы, монитор выгружает собранную информацию в текстовый файл с профилем тестируемой программы и создает специальный двоичный файл для графической интерпретации результатов;
  • Программа графической интерпретации результатов профилирования Smpview. Программа выдает снятый профиль на экран в максимально информативной форме. Такой формой является ориентированный граф с вершинами в контрольных точках снятия отсчетов. Программа анализирует схему переходов между контрольными точками и отображает ее в виде дуг графа. Информацию о времени перехода можно получить отметив нужные вершины на графе.

Обоснование методики измерения времени. В ПИМ Sampler используются два режима измерения моментов времени, соответствующих выполнению фрагментов программы. Режим 1: Измерения времени через 0 канал таймера с использованием портов ввода-вывода. Для задания временных интервалов и формирования сигналов с различными временными параметрами в компьютерах IBM PC используется программируемый таймер 8253. Таймер работает независимо от процессора и считает реальное время. Формирование времени суток в компьютерах IBM PC можно пояснить схемой, показанной на рис.9. IRQ0 Рис.9 Микросхема таймера имеет три канала, основным из которых с точки зрения измерения времени, является канал 0. Импульсы частотой 1.19 МГц от системных часов поступают на микросхему таймера, где происходит деление частоты на 64 К и на выходе канала 0 мы получаем импульсы с частотой 18,2 Гц ( с периодом следования 55 мс). Эти импульсы поступают на контроллер прерываний в виде запроса аппаратного прерывания на уровне 0 и, если разрешены прерывания, вырабатывается сигнал INT8. В результате обработки прерывания INT8 накапливаются данные в двойном слове с адресом 0040:006Сh, расположенном в области данных BIOS. Более подробно возможность измерения временных характеристик программ с использованием микросхемы таймера можно пояснить с помощью рис.10. Рис.10 Микросхема таймера содержит три канала с адресами 40h, 41h, 42h. Каждый канал содержит три регистра, два из которых двухбайтные — задвижка и счетчик и один — однобайтный — регистр ввода-вывода. Регистр ввода-вывода связан шиной с аккумулятором (регистром AL) для считывания информации. Канал 0 таймера выполняет две функции 1. Осуществляет контроль времени суток 2. Синхронизирует дисковые операции (запись и считывание информации с магнитных носителей). Если изменять заносимые в счетчик данные (не 0FFFF, а другие числа), то можно увеличить частоту выдачи импульсов на выходе таймера, но при этом могут наблюдаться сбои при выполнении дисковых операций. Канал 1 таймера обеспечивает прямой доступ к памяти (DMA). Канал 2 таймера служит для связи с периферийными устройствами, обеспечения выдачи звуковых сигналов. Управление работой таймера осуществляется регистром команд по адресу 43h. Структура команд порта по адресу 43h

Читайте также:
Как бороться с программами вымогателями
Канал 7 – 6 Операция 5 – 4 Режим 3-1

0 — бит указывает какая система счисления используется — двоичная или BCD — или двоично-кодированная десятичная. Биты 1 — 3 задают режим работы таймера

  • 000 — запись данных счетчика в задвижку
  • 011 — выполнение основных операций по считыванию информации канала 0 и подсчета поступивших импульсов.

Биты 4 — 5 определяют возможные операции:

  • 00 — передача данных из счетчика в задвижку или наоборот
  • 01 — чтение или запись старшего байта
  • 10 — чтение или запись младшего байта
  • 11 — чтение или запись последовательно младшего и старшего байтов.

При снятии измерений регистр задвижки загружается кодом (0FFFFh), который потом перемещается в счетчик. Счетчик считает поступающие тактовые импульсы в обратном направлении (в убывающем порядке), поэтому при его загрузке и считывании надо брать дополнение до FFFFFh. После того как счетчик обнулится, вырабатывается сигнал контроллера прерывания INT-8. Содержимое счетчика следует поместить в задвижку и считать его в аккумулятор AL. После этого восстановить содержимое задвижки и продолжить работу. Интервал времени в 1/18.2 сек (55 мс) получил название «тик», а минимально различимый интервал, равный 1/FFFF «тика» получил название «минитик» = 0.84 мкс. Наиболее точное и полное значение промежутков времени можно получить, используя совместно значение переменной области данных BIOS (0040:006С) и внутреннего счетчика таймера. Это позволяет измерять промежутки времени длительностью от 0,84 мсек до 24 часов. Достоинства режима измерения времени через 0 канал таймера с использованием портов ввода-вывода: — возможность применения на машинах типа IBM PC любого класса. Недостатки: — низкая точность измерений; — большая погрешность функции контрольных точек, обусловленная медленным снятием отсчетов времени через порты ввода-вывода. Режим 2. Измерения времени через счетчик Time Stamp Counter (TSC). Режим применяется только для старших моделей IBM PC, начиная с Pentium. В составе этих компьютеров появился внутренний 64 битный таймер, который может быть прочитан в регистры EDX:EAX с помощью инструкции RDTSC (Read Time Stamp Counter). Каждый такт этот счетчик увеличивает свое значение на 1. Это очень полезно для замера точного количества тактов, потребовавшихся на исполнение некоторого фрагмента кода. К сожалению, имеются проблемы чтения содержимого счетчика TSC. В Pentium добавлен внутренний регистр CR4, флаг TSD которого управляет возможностью чтения счетчика TSC. При CR4.TSD, равном 0, счетчик TSC можно читать в любом случае. При CR4.TSD, равном 1, содержимое счетчика можно прочитать только на 0-ом уровне привелегий. В общем случае флаг CR4.TSD установлен. Поэтому, инструкция RDTSC не может выполняться в режиме виртуального 8086 (3-й уровень привилегий). При использовании EMM386 или Windows процессор находится в защищенном режиме и Dos — приложения типа Sampler запускаются в виртуальном режиме и имеют 3 уровень привелегий. Поэтому, если запускать измеряемую программу под DOS, необходимо закомментировать EMM386 (или любой другой менеджер памяти) в CONFIG.SYS и не следует запускать программу в режиме DOS из под Windows. Достоинства данного режима измерений:

  • малая погрешность функций контрольных точек;
  • высокая точность измерений (до нескольких машинных тактов):
  • для регистрации отсчета времени требуется только команда RDTSC и сохранение регистров EAX:EDX (20-30 тактов).

Недостатки:

  • возможность применения только на машинах класса Pentium и выше.
  • возможность полноценной работы только под DOS и в отсутствие драйверов памяти типа EMM386 (QEMM).

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru