|
Размышлизма о вреде вытесняющей многозадачности., Все не так просто, как кажется. |
|
|
|
Jun 12 2008, 13:27
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Есть некий типовой контроллер. 512к FLASH,32к RAM. Такое распределение памяти вызвано объективными технологическими особенностями. И, вероятно так будет долго. Скоро станет 4M FLASH и 256 К SRAM, суть не изменится.
Есть вариант unix идеологии. Когда в памяти живет куча процессов и потоков, различных дискрипторов и структур, и все это в RAM занимает просто мегабайты места. Для однокристальных систем эта идеология слабо подходит.
Пусть есть несколько потков данных. Для каждого из который выделяются некие буфера.
Пусть есть совокупность закоченных процедур, достаточно сложных. Такие процедуры принимают на вход указатель на структуру, что-то там делают (длительное время), активно юзают стек и кучу, но после завершения обработку выдают указатель на выходную структуру, стек на том же самом уровне, и кучу в том же самом состоянии, в каком они ее получили.
Если идти по пути обычных вытесняющих ОСей, и при отсутствии глабального планирования времени, в зависимости от наступления неких критических событий в буферах (близок к переполнению/опустошению) и в окружающем мире (пришло событие, и нам надо срочно его обрабатывать) мы вынуждены будем переключить задачи. Что даст нам неприятность в виде нескольких кадров под стек задач, и бардак в куче, ибо новая задача может затребовать память, ей выделят ее, потом отработает вытесненная ранее задача, она освободит память, но куча уже будет фрагментирована. Дефрагментация кучи - тоска для малоресурсных систем. Для больших, заметим, это тоже фундаментальная проблема.
Если же предположить, что есть некий планировщик, который зная внутреннюю картину системы (сколько чего в буферах, сколько событий ждет обработки), а таже при условии предсказуемости внешнего мира (пример - синхронная система связи, с выделенными кадрами), может более эффективно распределять время.
Типа выбираем блок для обработки, запускаем его с пачкой данных, все остальное копится в буферах. Блок отработал - запустили следующий.
Более того, при запуске такой своебразной задачи, ей можно выделить максимальный квант времени. Она сама смотрит, сколько у нее времени осталось, и если обработка не завершена, она ставит флаг (который ей потом сохранится, он static), чистит стек за собой, и отдает управление системе. Разумеется, алгоритм должен допускать такую возможность дробной обработки.
Также задача может заказать, через сколько ее надо вызвать.
Тогда у планировщика работы системы будет дотаточно данных, чтобы найти оптимальное распределение ресурсов.
Такой подход к работе софтины потребудет специальных тулзов для логического проектирования, ибо прописывать такое все в лоб ручками - это нереально. А вот если использовать некую систему разметки кода, о которых я тут так давно размышляю, это было бы не так уж и сложно.
Комбинация вытесняющего и невытесняющего механизмов была бы, IMHO, очень эффективной.
Вопросы:
* видел ли кто какие наработки по теме? * какие есть ОСьки, гибко использующие вытесняющий и коопреативный механизмы многозадачности? * критика и дополнение моих идей.
|
|
|
|
|
 |
Ответов
|
Jun 14 2008, 13:44
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
caxapa:: Рэйлвэй Каген { При всём богатстве выбора, альтернатив, как всегда, две  А именно - есть алгебраисты и алгоритмисты. Первым ближе сети, графы и автоматы. К перечисленным средствам могу добавить только CPN Tools http://www.daimi.au.dk/~cpntools . Впрочем, это уже было здесь: http://caxapa.ru/110159.html Для генерации в плюсАх можно посмотреть gsmsuite http://www.boutell.com/lsm/lsmbyid.cgi/000341Вторым - Дракон http://wiki.oberoncore.ru/index.php/%D0%94...%B7%D0%BE%D1%80Дракон-редактор http://narod.ru/disk/55428000/DRT.rar По сути - очередная реинкарнация блок-схем с полуавтоматической генерацией кода. Паронджанов В.Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто!(Новые средства для образного представления знаний, развития интелекта и взаимопонимания). М.: Дело, 2001. — 360 с. — Илл.: 154. http://www.transhumanism-russia.ru/documen...tu_uma_Word.rarНедавняя дискуссия здесь http://forum.oberoncore.ru/viewtopic.php?f=62&t=493 , в том числе и по общим подходам к визуализации программ. Думается, что генерация кода из графического представления всё-таки надёжнее, чем визуализация и последующее разгребание произвольного, когда-то кем-то написанного кода. Анализировать вещь вторичную, а именно, конкретную реализацию - занятие куда менее полезное, чем анализ самой задачи на предмет поиска решения либо алгебраического, либо алгоритмического. Правда первое требует на порядок более высокой квалификации разработчика. } Мне добавить нечего  Кое-что добавлю. Лично мне генерация кода из графиеского представления кажется очень привлекательной! Решать обратную задачу мы не будем, не ученые-теоретики, а вот верификатор - проверять кода на соотвествие блок схеме - это очень нужно! Вот только где бы такое взять? Но меня удивляет то, что нет толковых общепринятых тулзов для этого. С/С++ компилеров и их вариантов вон сколько наплодили, а такого генератора/верфикатора нет. Или это жутко конкурентная область, и все заныкали свои наработки под матрасами??? -
Сообщение отредактировал Evgeny_CD - Jun 14 2008, 13:59
|
|
|
|
|
Jun 14 2008, 15:20
|

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

|
Цитата(Evgeny_CD @ Jun 14 2008, 15:44)  Или это жутко конкурентная область, и все заныкали свои наработки под матрасами??? - Нет, просто результат такой работы располагается не под матрасом, а под плинтусом. Какие-то верификаторы, рабочие имеются, а вот после генераторов типичная задача - надо ускорить в 10 раз... Всей цепочки одной из охременных компаний не наблюдал, поскольку она размазана по штатам-германиям-бангалорам и окраинам европы, но то, что в конце-концов после всего этого десяток человек в восточной европе правят-верифицируют-правят-верифицируют-... переписывают на ASM, блин, правят верификатор  , преписывают.. и так далее, дабы влезть по производительности наблюдаю лично.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 14 2008, 15:49
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(zltigo @ Jun 14 2008, 19:20)  Нет, просто результат такой работы располагается не под матрасом, а под плинтусом. Какие-то верификаторы, рабочие имеются, а вот после генераторов типичная задача - надо ускорить в 10 раз... Всей цепочки одной из охременных компаний не наблюдал, поскольку она размазана по штатам-германиям-бангалорам и окраинам европы, но то, что в конце-концов после всего этого десяток человек в восточной европе правят-верифицируют-правят-верифицируют-... переписывают на ASM, блин, правят верификатор  , преписывают.. и так далее, дабы влезть по производительности наблюдаю лично. Есть такое. Меня удивляет, что никто не сделал "полуавтоматический" инструмент. (Полностью автоматический инструмент - утопия, тут и спорить не о чем). Есть изначальный граф - описание алгоритма. Генерируем код. Код разбиваем на блоки (хоть чезер маркеры в каментах, хоть еще как). В кажом блоке описываются его характеристики: * export - чем из этого блока можно пользоваться снаружи * import - чем он сам пользуется * config - заивсимость от параметров конфигурации * OS - какие средства ОСи блок использует. Все связи между блоками прописываются на уровне графа и только так! Далее на уровне блока проверятся - блок соотвествует своему дескриптору или нет? Есть блоки более-менее отлаженные. Их фризим, что означает, что они не перегенерируются при генерации программы. Т.е. мы можем для этих блоков только изменяеть использование их export сущностей. Далее берем блок кода и начинаем глазками/ручками/мозгами доводит его до совершенства. Полной автоматической кодогерации делать смысла никакого нет. При герерации заготовки блока генерируются заготовки его export сущностей и import данных, с которыми он работет. Ну и словами - что этот блок сделать должен. Блоки могут быть вложенными. Далее верификауция идет в два этапа. На уровне формальной верификации проверяем, что блок соотвествует дескриптору. На уровне функуциональном прогоняем тест и убеждаемся, что блок делает то, что нам надо, а не ему. На уровне безопасности - смотрим в код глазками и ищем, нет ли там стремных C конструкций. Я с трудом верю, что можно написать верифкатор для этой части, не ограничив искусственно сибкость С. Вот и вся автоматизация. Никакого "искусственного интеллекта" и пр. шняг не предвидится. Все просто и тупо, в моем понимании на год неспешной работы пары толковых программистов. Вопрос в том, почему так никто не сделал???
|
|
|
|
Сообщений в этой теме
Evgeny_CD Размышлизма о вреде вытесняющей многозадачности. Jun 12 2008, 13:27 ig_z Цитата(Evgeny_CD @ Jun 12 2008, 16:27) * ... Jun 12 2008, 14:27 zltigo Цитата(Evgeny_CD @ Jun 12 2008, 15:27) * ... Jun 12 2008, 14:54 Evgeny_CD Цитата(zltigo @ Jun 12 2008, 18:54) - Ну ... Jun 12 2008, 15:07 Evgeny_CD Есть еще такая штука, как сети Петри. Мне как-то у... Jun 12 2008, 17:05 Andrew2000 Цитата(Evgeny_CD @ Jun 12 2008, 21:05) Ес... Jun 12 2008, 17:30 rezident ИМХО вытесняющая многозадачность нужна только тогд... Jun 12 2008, 18:11 zltigo Цитата(rezident @ Jun 12 2008, 20:11) В о... Jun 13 2008, 01:09 vshemm А что подразумевается под вытесняющей многозадачно... Jun 13 2008, 08:19 zltigo Цитата(vshemm @ Jun 13 2008, 10:19) А что... Jun 13 2008, 08:59  vshemm Цитата(zltigo @ Jun 13 2008, 12:59) А зад... Jun 13 2008, 10:03   zltigo Цитата(vshemm @ Jun 13 2008, 12:03) К том... Jun 13 2008, 10:41 AlexandrY Чтобы что-то облегчить, надо что-то нагрузить. ;-)... Jun 13 2008, 10:00 Evgeny_CD Цитата(AlexandrY @ Jun 13 2008, 14:00) Че... Jun 13 2008, 12:41  AlexandrY Я как понял эти Петри - просто способ рисовать мо... Jun 13 2008, 12:58   Evgeny_CD Цитата(AlexandrY @ Jun 13 2008, 16:58) Я ... Jun 13 2008, 13:11    AlexandrY Ну и фиг с ними, с этими сетями.
Может они и не бр... Jun 13 2008, 14:37     Evgeny_CD Цитата(AlexandrY @ Jun 13 2008, 18:37) В ... Jun 13 2008, 16:23      zltigo Цитата(Evgeny_CD @ Jun 13 2008, 18:23) А ... Jun 13 2008, 16:42       Evgeny_CD Цитата(zltigo @ Jun 13 2008, 20:42) Корол... Jun 13 2008, 18:10        zltigo Цитата(Evgeny_CD @ Jun 13 2008, 20:10) Ме... Jun 13 2008, 18:42         Evgeny_CD Цитата(zltigo @ Jun 13 2008, 22:42) . Быс... Jun 13 2008, 19:17          _Pasha Цитата(Evgeny_CD @ Jun 13 2008, 22:17) В ... Jun 13 2008, 23:20           Evgeny_CD Цитата(_Pasha @ Jun 14 2008, 03:20) Есть ... Jun 13 2008, 23:29 vshemm Цитата(zltigo @ Jun 13 2008, 14:41) Потом... Jun 13 2008, 16:56 Evgeny_CD Цитата(vshemm @ Jun 13 2008, 20:56) Хотя ... Jun 13 2008, 17:07 zltigo Цитата(vshemm @ Jun 13 2008, 18:56) Почем... Jun 13 2008, 17:21  vshemm Цитата(zltigo @ Jun 13 2008, 21:21) Потом... Jun 13 2008, 17:52 AlexandrY Вы тут концептуально что-то не понимаете или делае... Jun 13 2008, 19:54  vshemm Начали за здравие (см. топик), а кончили за упокой... Jun 14 2008, 16:58   Evgeny_CD Цитата(vshemm @ Jun 14 2008, 20:58) Напри... Jun 14 2008, 17:23    vshemm Цитата(Evgeny_CD @ Jun 14 2008, 21:23) Эт... Jun 14 2008, 17:27     Evgeny_CD Цитата(vshemm @ Jun 14 2008, 21:27) Честн... Jun 14 2008, 17:45   AlexandrY Ну.. , роутеры это не серьезно.
Эт мы проходили, ... Jun 14 2008, 18:30    Evgeny_CD Цитата(AlexandrY @ Jun 14 2008, 22:23) Та... Jun 14 2008, 18:30     AlexandrY Какой там TDD! Разработка роутера это сплошняк... Jun 14 2008, 19:42      Evgeny_CD Цитата(AlexandrY @ Jun 14 2008, 23:42) Да... Jun 14 2008, 20:06       AlexandrY Да чеб об приятном и не поболтать.
Я всегда за ... Jun 14 2008, 21:14        Evgeny_CD Цитата(AlexandrY @ Jun 15 2008, 01:14) В ... Jun 14 2008, 21:31        blackfin Цитата(AlexandrY @ Jun 15 2008, 01:14) В ... Jun 15 2008, 02:40         AlexandrY Вы просто не в контексте.
За топиками Евгения над... Jun 15 2008, 08:11          blackfin Цитата(AlexandrY @ Jun 15 2008, 12:11) Вы... Jun 15 2008, 08:53    vshemm Цитата(AlexandrY @ Jun 14 2008, 22:30) Ну... Jun 14 2008, 19:29 vshemm Атом тут не причем.
Просто лицензия на ХП запрещае... Jun 13 2008, 17:16 Evgeny_CD caxapa::Vit подсказал еще вот какие интересные про... Jun 14 2008, 10:31 blackfin "Остапа несло..." Jun 14 2008, 15:52 Evgeny_CD Цитата(blackfin @ Jun 14 2008, 19:52) ... Jun 14 2008, 15:56  blackfin Цитата(Evgeny_CD @ Jun 14 2008, 19:56) Бы... Jun 14 2008, 16:06   Evgeny_CD Цитата(blackfin @ Jun 14 2008, 20:06) Кст... Jun 14 2008, 16:31 blackfin По существу...
"Суха теория, мой друг, а др... Jun 14 2008, 16:52 733259 ЦитатаПравда, там 8м флеш и 16м RAM, но на менее н... Jun 14 2008, 18:21 733259 ЦитатаМои роутеры вообще Линукса не требуют, имеют... Jun 14 2008, 18:34 AlexandrY Ну собственно наши роутеры и без меня есть кому ре... Jun 14 2008, 19:22 733259 ЦитатаНу собственно наши роутеры и без меня есть к... Jun 14 2008, 20:02 klogg Цитата(AlexandrY @ Jun 14 2008, 21:30) Ну... Aug 7 2008, 20:21
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|