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

|
Есть некий типовой контроллер. 512к FLASH,32к RAM. Такое распределение памяти вызвано объективными технологическими особенностями. И, вероятно так будет долго. Скоро станет 4M FLASH и 256 К SRAM, суть не изменится.
Есть вариант unix идеологии. Когда в памяти живет куча процессов и потоков, различных дискрипторов и структур, и все это в RAM занимает просто мегабайты места. Для однокристальных систем эта идеология слабо подходит.
Пусть есть несколько потков данных. Для каждого из который выделяются некие буфера.
Пусть есть совокупность закоченных процедур, достаточно сложных. Такие процедуры принимают на вход указатель на структуру, что-то там делают (длительное время), активно юзают стек и кучу, но после завершения обработку выдают указатель на выходную структуру, стек на том же самом уровне, и кучу в том же самом состоянии, в каком они ее получили.
Если идти по пути обычных вытесняющих ОСей, и при отсутствии глабального планирования времени, в зависимости от наступления неких критических событий в буферах (близок к переполнению/опустошению) и в окружающем мире (пришло событие, и нам надо срочно его обрабатывать) мы вынуждены будем переключить задачи. Что даст нам неприятность в виде нескольких кадров под стек задач, и бардак в куче, ибо новая задача может затребовать память, ей выделят ее, потом отработает вытесненная ранее задача, она освободит память, но куча уже будет фрагментирована. Дефрагментация кучи - тоска для малоресурсных систем. Для больших, заметим, это тоже фундаментальная проблема.
Если же предположить, что есть некий планировщик, который зная внутреннюю картину системы (сколько чего в буферах, сколько событий ждет обработки), а таже при условии предсказуемости внешнего мира (пример - синхронная система связи, с выделенными кадрами), может более эффективно распределять время.
Типа выбираем блок для обработки, запускаем его с пачкой данных, все остальное копится в буферах. Блок отработал - запустили следующий.
Более того, при запуске такой своебразной задачи, ей можно выделить максимальный квант времени. Она сама смотрит, сколько у нее времени осталось, и если обработка не завершена, она ставит флаг (который ей потом сохранится, он static), чистит стек за собой, и отдает управление системе. Разумеется, алгоритм должен допускать такую возможность дробной обработки.
Также задача может заказать, через сколько ее надо вызвать.
Тогда у планировщика работы системы будет дотаточно данных, чтобы найти оптимальное распределение ресурсов.
Такой подход к работе софтины потребудет специальных тулзов для логического проектирования, ибо прописывать такое все в лоб ручками - это нереально. А вот если использовать некую систему разметки кода, о которых я тут так давно размышляю, это было бы не так уж и сложно.
Комбинация вытесняющего и невытесняющего механизмов была бы, IMHO, очень эффективной.
Вопросы:
* видел ли кто какие наработки по теме? * какие есть ОСьки, гибко использующие вытесняющий и коопреативный механизмы многозадачности? * критика и дополнение моих идей.
|
|
|
|
Сообщений в этой теме
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 Evgeny_CD caxapa:: Рэйлвэй Каген {
При всём богатстве выбор... Jun 14 2008, 13:44 zltigo Цитата(Evgeny_CD @ Jun 14 2008, 15:44) Ил... Jun 14 2008, 15:20  Evgeny_CD Цитата(zltigo @ Jun 14 2008, 19:20) Нет, ... Jun 14 2008, 15:49 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|