freeRTOS и параллельная обработка - PullRequest
2 голосов
/ 06 февраля 2011

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

Ответы [ 5 ]

9 голосов
/ 08 февраля 2011

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

3 голосов
/ 06 февраля 2011

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

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

1 голос
/ 18 ноября 2011

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

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

1 голос
/ 30 апреля 2011

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

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

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

Надеюсь, что это помогло.Ура!

0 голосов
/ 09 апреля 2016

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

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

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

...