реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Вопрос тем, кому посчастливилось писать планировщик, Разблокировка задач по списку и вообще по теме
Andreas1
сообщение Feb 13 2007, 11:18
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 446
Регистрация: 12-03-06
Из: Москва
Пользователь №: 15 142



Цитата
Вопрос только в том, что лично мне хотелось-бы иметь более бескомпромисные с точки зрения использования системы решения, при, естественно принесении (и то на самом деле не всегда по конечным результатам) в некоторую жертву экономии "нескольких тактов" и "нескольких байтов".

Уже в нескольких ветках вы ссылаетесь на эту "бескомпромисность" одних ОС (FreeRTOS,..?) относительно других (TNKernel, uCOS,...?), как на важнейший критерий вашего выбора оси. Не могли бы вы пояснить, что имеете в виду.
Go to the top of the page
 
+Quote Post
greezol
сообщение Feb 13 2007, 12:28
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 29-01-07
Пользователь №: 24 831



Цитата(Olej @ Feb 13 2007, 00:26) *
Цитата(greezol @ Feb 13 2007, 00:17) *

2 Olej, в дополнение к моему посту выше:

из Введение в QNX, Роб Кёртен:

"Простые" (бинарные) семафоры работают точно так же, как и мутексы.


В этом месте Р.Кёртен упрощает cheers.gif , поверьте:
http://www.books.ru/shop/books/357604
Проверено smile.gif


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

Цитата
AlexandrY

Не, а всетаки откуда память будете брать для списков?
Из статических массивов? Или выделять динамически?
Так какой объем? Как его предлагаете вычислять?


Блин, для списоков не нужно каких-то массивов.

Цитата
AlexandrY

Кажется вас сбивает с толку слово "событие", тогда назову его структура типа event.
Так вот event-структуры не плодятся как грибы после дождя и не образуют никакой очереди.
Их количество определяется самим программистом и им же управляется. Просто они могут быть активны, а могут быть свободны т.е. не иметь ожидающих их задач.
Какой бы сервис RTOS вы ни вызывали, ему на вход всегда идет один конкретный идентификатор (он же указатель) event-структуры и идентификатор текущей задачи.
Так вот все просто, по указателю event-структуры сразу входим в таблицу ее хозяев (ожидающих ее задач)...
А, потом продолжу, спать пора



Правильно я понял(упрощенно): структура "получено сообщение", в ней - список задач, получивших сообщения,
планировщик их смотрит и разблокирует если они receive-блокированные

А можно привести пример системы, если она с открытыми исходниками? Чтоб поподробнее, что представляет эта event структура?



Цитата
zltigo Дата Сегодня, 04:30

Постановка задачи некорректна - ARM и AVR слишком разные для "универсального", "простого" и
"оптимального" решения. Практически Вы будете закладываться на слабейшего - ARM7 жалко
На него и так тянут или с восьмибитников все подряд, или уж Линуксообразных монстриков.



Для начала берутся разные типы данных для порта (примерно как portCHAR, portXXX во freertos-e)
Сначала хочу отработать механизм на слабейшем, а переписывать - для ARM7.. Еще вопрос, как себя компилятор будет вести может и не надо переписывать. Вообще это все сейчас пока не так важно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 13 2007, 12:28
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Andreas1 @ Feb 13 2007, 10:18) *
Уже в нескольких ветках вы ссылаетесь на эту "бескомпромисность" одних ОС (FreeRTOS,..?) относительно других (TNKernel, uCOS,...?), как на важнейший критерий вашего выбора оси. Не могли бы вы пояснить, что имеете в виду.

Для ясности:
1. не в нескольких ветках, а кроме этой только в одной по TN-Kernel
2. речь шла более конкретно - о шедулерах.

Так уж вышло, что еще с 90x годов (практически доинтернетовской эпохи) приходилось писать "свои" системки гордясь большей частью экономией байтов и тактов smile.gif и обходя вылезающие проблемы многочисленными наслоениями. Когда почти два года назад в качестве новой базы выбрал ARM линейку контроллеров, то решил (и не пожалел!) не продолжать практику перетаскивания своего кода, а взять готовую базу для RTOS и дорабатывать уже ее.
Критериями выбора исходя из предыдущего разнообразного опыта на тот момент были -
Поддержка задач с одинаковыми приоритетами. Возможность динамического создания и удаления задач, что сразу тянет за собой автоматически и третье условие - наличие менеджера памяти.
Не хотелось и ограничивать число задач. Приятным бонусом в последствии явилось появление на выбранной платформе возможности запускать часть задач в невытесняющем режиме.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 13 2007, 12:42
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(greezol @ Feb 13 2007, 11:28) *
Для начала берутся разные типы данных для порта (примерно как portCHAR, portXXX во freertos-e)
Сначала хочу отработать механизм на слабейшем, а переписывать - для ARM7..

Речь вел не проблемах портирования а о соразмерности системы используемому контроллеру sad.gif
Ну это как если движок созданный для, например Жигулей простым увеличением его геометрических размеров использовать для автомобиля класса, например, Ягуара. Ездить-то он будет, но ведь "что-то", согласитесь, не так smile.gif.
Портируется-то легко...

P.S.
А по крайней мере пробовать писать "свою" систему надо - очень развивающее, увлекательное и затягивающее sad.gif занятие!


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Andreas1
сообщение Feb 13 2007, 13:33
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 446
Регистрация: 12-03-06
Из: Москва
Пользователь №: 15 142



Цитата(zltigo @ Feb 13 2007, 12:28) *
1. не в нескольких ветках, а кроме этой только в одной по TN-Kernel

Един да един-это два, а несколько-это более одного. smile.gif

Цитата(zltigo @ Feb 13 2007, 12:28) *
Критериями выбора исходя из предыдущего разнообразного опыта на тот момент были -
Поддержка задач с одинаковыми приоритетами. Возможность динамического создания и удаления задач, что сразу тянет за собой автоматически и третье условие - наличие менеджера памяти.
Не хотелось и ограничивать число задач. Приятным бонусом в последствии явилось появление на выбранной платформе возможности запускать часть задач в невытесняющем режиме.

Так этим условиям(кроме последнего?) удовлетворяют и FreeRTOS, и TNKernel. Поэтому, прежде чем начать более глубоко разбираться с обеими(или сразу выбрать одну), интересно мнение того, кто уже копал обе. Чем не устроил шедулер TNKernel и понравился FreeRTOS? В предыдущих ветках вы часто их сравнивали(более двух раз smile.gif ), но как-то невнятно(для меня sad.gif ).
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 13 2007, 17:07
Сообщение #21


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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

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

Цитата(zltigo @ Feb 13 2007, 12:30) *
Там действительно лет двадцать тому впервые был заложен (похоже тогда в студенческой работе) знакомый ныне до боли механизм планировки. Немерянное количество OS наследовали этот подход. Имеют право.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 13 2007, 17:55
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AlexandrY @ Feb 13 2007, 16:07) *
Кстати это в ThreadX всего 32 приоритета.
Но операционка тем не менее для ARM-ов очень популярная.

Есть еще более популярные решения - "а зачем вообще эта операционка". Ну и что? smile.gif
Цитата
Так что прикладных моментов для обсуждения достаточно,

Немеряно!
Цитата
и не стоит отмахиваться какой-то соразмерностью

А я не отмахиваюсь - почти все имеет право на существование и свою нишу для применения.
Я только хотел сказать, что рассмотрение минималистичных решений заточеных под восьмибитовики на ARM платформе лично мне уже совсем не интересны.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 13 2007, 18:18
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Andreas1 @ Feb 13 2007, 12:33) *
Так этим условиям(кроме последнего?) удовлетворяют и FreeRTOS, и TNKernel.

TNKernel 2.x весьма привлекательна, о чем я уже ранее писал. Но FreeRTOS появилась в пригодном ( для меня ) к стартовому использованию варианте раньше, что и обусловило выбор. На данный момент вопросы перехода на что-то другое не рассматриваются ввиду больших собственных доработок и наработок, ну и отсутствия сколь-нибудь обьективной необходимости. Все устраивает smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Mar 15 2007, 19:04
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



Цитата(AlexandrY @ Feb 13 2007, 09:37) *
[...] я описывал механизм работы uCOS.
Только там нынче поддерживается 65536 задач и при этом ничего не изменилось в планировщике принципиально.


В кодах 2.83, 2.84 поддерживается до 256 приоритетов = мах числу задач.
В коде 2.52 максимальное число приоритетов = 64. (за вычетом Idle и если используется,
Stat процессов, 255 и 63 или 254 и 62 соответственно)

Конечно, можно увеличить priority bitmap до размера 8KB и переменную группы
соответственно, чтобы отыскать младший установленный бит в 65536-битовом
числе.

Цитата(AlexandrY @ Feb 13 2007, 09:37) *
А Time Slice делается в uCOS довольно просто с помощью одной дополнительной высокоприоритетной задачи. На сайте Infineon в одном аппноте, было разжевано как это делается.


TS в системе где нет двух процессов с равным приоритетом? Проще (и логичнее)
переделать алгоритм планировщика uCOS, чем моделировать тоже самое из уровня
приложения...

--
Андрей
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 22:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016