2011-02-06 4 views

ответ

8

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

2

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

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

+0

привет, спасибо. что, если есть более одного процессора? –

1

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

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

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

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

1

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

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

0

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

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

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

Смежные вопросы