Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАМММНО-ТЕХНИЧЕСКИЕ КОМПЛЕКСЫ МИКРОПРОЦЕССОРНЫХ СИСТЕМ АВТОМАТИЗАЦИИ И УПРАВЛЕНИЯ.doc
Скачиваний:
62
Добавлен:
01.05.2014
Размер:
10.03 Mб
Скачать

5.2. Синхронизация и быстродействие

Рассмотрим конкретный пример. Будем использовать класс задач TC1. Для каждого класса задач устанавливается время цикла. Класс TC1 имеет время цикла 10 мс. Это значит, что:

1. Все задачи, которые находятся в этом классе задач, должны быть достаточно короткими, чтобы выполняться за 10 мс.

2. Все задачи в данном классе задач циклически выполняются каждые 10 мс (цикл 10 мс).

Допустим, что в этом классе имеются 3 задачи. Их времена выполнения равны: Task1  - 2 мс, Task2 - 3 мс, Task3 - 2 мс, Всего - 7 мс.

Рис.5.7

Таким образом, эти три задачи достаточно короткие, и их можно выполнить за 10 мс. Как организовать их циклическое выполнение? В классе задач отдельные задачи фактически выполняются одна за другой. Сначала выполняется task1, затем task2 и затем task3. Как они выполняются циклически? Этот класс задач запускается каждые 10 мс; выполняются все задачи, а затем следует период ожидания до следующего временного интервала 10 мс, например (рис. 5.7):

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

Рис. 5.8

Рассмотрим расширенный пример, введя в него второй класс задач со временем цикла 70 мс. Он содержит только одну задачу со временем выполнения (цикла) 15 мс. Если бы выполнялся только этот класс задач, то распределение времени выглядело бы следующим образом (рис. 5.8):

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

Если теперь запустить эти классы задач вместе, то можно проанализировать влияние класса задач 1 на класс задач 2 по циклической диаграмме TC1 и TC2 (рис. 5.9):

TC1; время цикла = 10 мс

TC2; время цикла = 70 мс

Рис. 5.9

Необходимо обратить внимание, что для task4 (из TC2) вырезаются небольшие (3 мс) временные сегменты. Для этой задачи по-прежнему выделяется 15 мс каждые 70 мс, но небольшими порциями, потому что TC1 имеет более высокий приоритет (этот вопрос будет рассмотрен позже).

Многозадачный режим основан на разделении ресурса ЦПУ между несколькими задачами. Именно этот режим показан на вышеупомянутой диаграмме. Принцип многозадачности - это принцип квантования времени. Это - процесс одновременного выполнения нескольких задач и переключения на ту задачу, которая фактически выполняется в настоящее время. Две задачи никогда реально не выполняются в один момент времени, но создается полный эффект их одновременного выполнения.

5. 3. Нагрузка процессора

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

Имеется формула, чтобы определить нагрузку для класса задач. Необходимо поделить суммарное время, используемое задачами класса, на время цикла для класса задач и затем выразить это отношение в процентах, то есть:

Нагрузка = суммарное время выполнения задач / время цикла *100

Для класса задач 1 в примере нагрузка равна: (2+3+2) / 10 * 100 = 70 %.

Для класса задач 2: 15/70 * 100 = 21,4 %.

Общая нагрузка равна сумме нагрузок классов задач: 70 + 21.4 = 91,4 %.

Для определения реальной нагрузки системы к этому значению необходимо прибавить приблизительно 10 % для сопровождения системы (контроль, порядок выполнения, и т.д.). Таким образом, общая нагрузка нашей системы равна: 91,4 + 10 = 101,4%

Система перегружена, так что необходимо внести некоторые изменения. Если придти к заключению, что в действительности нет необходимости выполнять задачу 3 так часто, и перенести ее в класс задач 2, то при этом диаграмма переключения задач изменится (рис. 5.10):

TC1; время цикла = 10 мс

TC2; время цикла = 70 мс

Рис. 5.10

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

Для класса задач 1 в новом примере она равна: (2 + 3) / 10 * 100 = 50 %.

Для класса задач 2: (15 + 2) / 70 * 100 = 24,2 %.

Общая нагрузка равна сумме нагрузок классов задач: 50 + 24,2 = 74,2 %.

Реальная нагрузка системы:74,2 + 10 = 84,2 %.

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