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

 
 
> Размышлизма о вреде вытесняющей многозадачности., Все не так просто, как кажется.
Evgeny_CD
сообщение Jun 12 2008, 13:27
Сообщение #1


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Есть некий типовой контроллер. 512к FLASH,32к RAM. Такое распределение памяти вызвано объективными технологическими особенностями. И, вероятно так будет долго. Скоро станет 4M FLASH и 256 К SRAM, суть не изменится.

Есть вариант unix идеологии. Когда в памяти живет куча процессов и потоков, различных дискрипторов и структур, и все это в RAM занимает просто мегабайты места. Для однокристальных систем эта идеология слабо подходит.

Пусть есть несколько потков данных. Для каждого из который выделяются некие буфера.

Пусть есть совокупность закоченных процедур, достаточно сложных. Такие процедуры принимают на вход указатель на структуру, что-то там делают (длительное время), активно юзают стек и кучу, но после завершения обработку выдают указатель на выходную структуру, стек на том же самом уровне, и кучу в том же самом состоянии, в каком они ее получили.

Если идти по пути обычных вытесняющих ОСей, и при отсутствии глабального планирования времени, в зависимости от наступления неких критических событий в буферах (близок к переполнению/опустошению) и в окружающем мире (пришло событие, и нам надо срочно его обрабатывать) мы вынуждены будем переключить задачи. Что даст нам неприятность в виде нескольких кадров под стек задач, и бардак в куче, ибо новая задача может затребовать память, ей выделят ее, потом отработает вытесненная ранее задача, она освободит память, но куча уже будет фрагментирована. Дефрагментация кучи - тоска для малоресурсных систем. Для больших, заметим, это тоже фундаментальная проблема.

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

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

Более того, при запуске такой своебразной задачи, ей можно выделить максимальный квант времени. Она сама смотрит, сколько у нее времени осталось, и если обработка не завершена, она ставит флаг (который ей потом сохранится, он static), чистит стек за собой, и отдает управление системе. Разумеется, алгоритм должен допускать такую возможность дробной обработки.

Также задача может заказать, через сколько ее надо вызвать.

Тогда у планировщика работы системы будет дотаточно данных, чтобы найти оптимальное распределение ресурсов.

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

Комбинация вытесняющего и невытесняющего механизмов была бы, IMHO, очень эффективной.

Вопросы:

* видел ли кто какие наработки по теме?
* какие есть ОСьки, гибко использующие вытесняющий и коопреативный механизмы многозадачности?
* критика и дополнение моих идей.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Evgeny_CD
сообщение Jun 14 2008, 13:44
Сообщение #2


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



caxapa:: Рэйлвэй Каген {

При всём богатстве выбора, альтернатив, как всегда, две smile.gif
А именно - есть алгебраисты и алгоритмисты.

Первым ближе сети, графы и автоматы. К перечисленным средствам могу добавить только
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 ,
в том числе и по общим подходам к визуализации программ.

Думается, что генерация кода из графического представления всё-таки надёжнее,
чем визуализация и последующее разгребание произвольного, когда-то кем-то написанного кода.
Анализировать вещь вторичную, а именно, конкретную реализацию - занятие
куда менее полезное, чем анализ самой задачи на предмет поиска решения либо
алгебраического, либо алгоритмического. Правда первое требует на порядок более
высокой квалификации разработчика.
}

Мне добавить нечего a14.gif

Кое-что добавлю.

Лично мне генерация кода из графиеского представления кажется очень привлекательной! Решать обратную задачу мы не будем, не ученые-теоретики, а вот верификатор - проверять кода на соотвествие блок схеме - это очень нужно! Вот только где бы такое взять?

Но меня удивляет то, что нет толковых общепринятых тулзов для этого. С/С++ компилеров и их вариантов вон сколько наплодили, а такого генератора/верфикатора нет. Или это жутко конкурентная область, и все заныкали свои наработки под матрасами??? -

Сообщение отредактировал Evgeny_CD - Jun 14 2008, 13:59
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 14 2008, 15:20
Сообщение #3


Гуру
******

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



Цитата(Evgeny_CD @ Jun 14 2008, 15:44) *
Или это жутко конкурентная область, и все заныкали свои наработки под матрасами??? -

Нет, просто результат такой работы располагается не под матрасом, а под плинтусом. Какие-то верификаторы, рабочие имеются, а вот после генераторов типичная задача - надо ускорить в 10 раз...
Всей цепочки одной из охременных компаний не наблюдал, поскольку она размазана по штатам-германиям-бангалорам и окраинам европы, но то, что в конце-концов после всего этого десяток человек в восточной европе правят-верифицируют-правят-верифицируют-... переписывают на ASM, блин, правят верификатор smile.gif, преписывают.. и так далее, дабы влезть по производительности наблюдаю лично.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Evgeny_CD
сообщение Jun 14 2008, 15:49
Сообщение #4


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Цитата(zltigo @ Jun 14 2008, 19:20) *
Нет, просто результат такой работы располагается не под матрасом, а под плинтусом. Какие-то верификаторы, рабочие имеются, а вот после генераторов типичная задача - надо ускорить в 10 раз...
Всей цепочки одной из охременных компаний не наблюдал, поскольку она размазана по штатам-германиям-бангалорам и окраинам европы, но то, что в конце-концов после всего этого десяток человек в восточной европе правят-верифицируют-правят-верифицируют-... переписывают на ASM, блин, правят верификатор smile.gif, преписывают.. и так далее, дабы влезть по производительности наблюдаю лично.
Есть такое. Меня удивляет, что никто не сделал "полуавтоматический" инструмент. (Полностью автоматический инструмент - утопия, тут и спорить не о чем).

Есть изначальный граф - описание алгоритма. Генерируем код.

Код разбиваем на блоки (хоть чезер маркеры в каментах, хоть еще как).

В кажом блоке описываются его характеристики:

* export - чем из этого блока можно пользоваться снаружи
* import - чем он сам пользуется
* config - заивсимость от параметров конфигурации
* OS - какие средства ОСи блок использует.

Все связи между блоками прописываются на уровне графа и только так!

Далее на уровне блока проверятся - блок соотвествует своему дескриптору или нет?

Есть блоки более-менее отлаженные. Их фризим, что означает, что они не перегенерируются при генерации программы. Т.е. мы можем для этих блоков только изменяеть использование их export сущностей.

Далее берем блок кода и начинаем глазками/ручками/мозгами доводит его до совершенства.

Полной автоматической кодогерации делать смысла никакого нет.

При герерации заготовки блока генерируются заготовки его export сущностей и import данных, с которыми он работет. Ну и словами - что этот блок сделать должен.

Блоки могут быть вложенными.

Далее верификауция идет в два этапа.

На уровне формальной верификации проверяем, что блок соотвествует дескриптору.

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

На уровне безопасности - смотрим в код глазками и ищем, нет ли там стремных C конструкций. Я с трудом верю, что можно написать верифкатор для этой части, не ограничив искусственно сибкость С.

Вот и вся автоматизация. Никакого "искусственного интеллекта" и пр. шняг не предвидится. Все просто и тупо, в моем понимании на год неспешной работы пары толковых программистов.

Вопрос в том, почему так никто не сделал???
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


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


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