freeRTOS и параллельная обработка

Это простой вопрос: обрабатывает ли freeRTOS несколько потоков в нескольких процессах, как это делает «настоящая» система Linux?


person Dervin Thunk    schedule 06.02.2011    source источник


Ответы (5)


FreeRTOS — это не Linux и не претендует на то, чтобы быть таковым, хотя само по себе является кросс-платформенным стандартным ядром, поскольку оно поддерживает 26 различных ядер, но оно предназначено для микроконтроллеров, а не для микропроцессоров. Однако большинство этих ядер не используют MMU, поэтому нет понятия процесса. Если хотите, все задачи представляют собой «потоки», работающие в одном «процессе». Вот почему я использую термин «задача», чтобы не вызывать путаницы. Однако существуют версии FreeRTOS, которые поддерживают использование MPU, что позволяет разбивать память и права доступа, как MMU, но в линейном, а не в виртуальном адресном пространстве.

person Richard    schedule 08.02.2011

FreeRTOS использует простой планировщик приоритетов, описанный здесь.

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

person rmmh    schedule 06.02.2011

Да, rmh прав, что задачам с одинаковым приоритетом также будет выделено процессорное время. Это можно увидеть на следующем веб-сайте:

http://www.freertos.org/implementation/a00007.html

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

Надеюсь, это помогло. Ваше здоровье!

person Vern    schedule 30.04.2011

Нет. (Бесплатная) RTOS обычно не имеет тех же представлений о процессах и потоках, которые используются в обычных GPOS, таких как Linux. Вместо этого часто используется термин «задача», чтобы избежать путаницы.

Тем не менее, вы можете взглянуть на сопрограммы FreeRTOS, которые являются своего рода потоками исполнения. -задача в FreeRTOS.

person XTL    schedule 18.11.2011

Каждый процесс/поток/задача имеет свой стек. Для этой цели FreeRTOS выделяет память из кучи. Вот что делает FreeRTOS при переключении контекста с Task_A на Task_B: (1) Помещает все содержимое из регистров CPU в стек Task_A. (2) Сделать так, чтобы указатель стека ЦП ссылался на стек Task_B вместо Task_A. (3) Стек Task_B имеет регистры ЦП наверху, которые представляют «сохраненное состояние» ЦП, когда Task_B был переведен в спящий режим. Теперь пришло время восстановить эти значения в регистрах ЦП. (4) Продолжайте выполнять задачу B.

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

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

person K.Mulier    schedule 09.04.2016