Евразийский
научный
журнал

+7 995 770 98 40
+7 995 202 54 42
info@journalpro.ru

Многозадачность микроконтроллеров

Поделитесь статьей с друзьями:
Автор(ы): Чадов Егор Владимирович
Рубрика: Технические науки
Журнал: «Евразийский Научный Журнал №12 2016»  (декабрь)
Количество просмотров статьи: 2865
Показать PDF версию Многозадачность микроконтроллеров

Чадов Егор Владимирович,
студент.
Московский государственный университет технологий и управления
им К.Г. Разумовского
E-mail: yoga.15.e@gmail.com

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

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

Типы многозадачности:

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

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

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

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

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

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

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

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

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

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