-
- Никогда толком не разбирался, может кто подскажет. В uCOS-II ОСевые таймера сделаны на основе системных тиков, или там дополнительная аппаратная поддержка используется (выделенный таймер, etc.)? - Evgeny_CD(15.06.2009 18:59)
- Осевые таймера там инкрементируются и вызываются их калбаки в обычной таске которая создается неявно при старте оси. - AlexandrY(16.06.2009 00:07)
- Причём приоритет этой таски самый низкий. - =AlexD=(16.06.2009 07:06)
- Осевые таймера там инкрементируются и вызываются их калбаки в обычной таске которая создается неявно при старте оси. - AlexandrY(16.06.2009 00:07)
- Самое прохое, что можно придумать в RTOS - это менять приоритет потоков или принцип планирования на ходу. AlexandrY(2098 знак., 14.06.2009 20:06)
- У всякого подхода есть исключения. Но для приведенных Вами задач я не понял, где гибкий планировщик неправилен. Evgeny_CD(1063 знак., 14.06.2009 20:35)
- Блокирующий вызов юзеровской функции. Способ избеганий лишних критических секций. Evgeny_CD(1211 знак., 14.06.2009 12:57)
- Интересно, как обойтись без критической секции а таком случае. Продвинутый логгер. Evgeny_CD(1706 знак., 14.06.2009 12:20)
- Дык каждый блок с дескриптором или один дескриптор на набор блоков или на буфер? - Vit(14.06.2009 01:21)
- На каждый блок - дескриптор. - Evgeny_CD(14.06.2009 01:23)
- тогда какой смысл писать в каждый количество одномоментно захваченных блоков? Vit(430 знак., 14.06.2009 01:33)
- Есть указатель на начало свободного места. Идем туда, проверям дескриптор - а не заховал ли его кто, а указатель не перестаивили. Дескриптор свободен. Пока. Пишем сигнатуру и размер. Проверям - вдруг нас прервали, и кто-то его уже заховал. Проверили - Evgeny_CD(429 знак., 14.06.2009 01:45)
- Ну а выгребающей стороне как знать, что буфер не только аллоцирован частями, но и в него полезности уже записаны? - Vit(14.06.2009 01:55)
- В дексрипторе блока есть маркер - готово. Как только прерывание закончило выгребать блок n, оно берет дескриптор n++, смотрит - готов ли он. if !ready смотрим другой и т.д. Но неготовый заносим в стек неготовых, и его просматриваем после каждого Evgeny_CD(15 знак., 14.06.2009 01:59)
- а как блок из неготовых стал готов сразу стек ворочать? чё-т мудрено - Vit(14.06.2009 09:59)
- А как проще-то? Вот и размышлюя публично :) - Evgeny_CD(14.06.2009 10:54)
- Проще поставить дескриптор рекорда (задание на транзакцию) в очередь и подождать флага окончания записи, занимаясь другими делами. Ведь процессу важно не рулить буфером, о котором ему по-хорошему вообще знать не нужно (не его это дело), а приготовить Vit(1350 знак., 14.06.2009 11:47)
- zero copy тогда не получится. Получится промежуточное копирование из локальных данныъх процесса в большую очередь, а это время. - Evgeny_CD(14.06.2009 13:14)
- в очередь не копируется содержимое, а добавляется указатель на дескриптор транзакции (откуда, куда, сколько). если ресурс свободен (если есть FIFO на входе, то оно просто достаточно свободно), то транзакция выполнится быстро. если FIFO есть, то есть Vit(64 знак., 14.06.2009 13:46)
- Условия задачи: процессов много (32), разница в объеме транзакций - порядок (1-10блоков), транзакции по времени от одного процесса распределены случайно и равномерно (в терминах непрерывного времени процесса). Распределение по размеру аналогичное. Evgeny_CD(97 знак., 14.06.2009 12:14)
- очереди для приоритетов доступа к девайсу записи. не путайте. можете 32 клиента обслуживать 1-й очередью - Vit(14.06.2009 12:53)
- Так и есть. Очередь одна. - Evgeny_CD(14.06.2009 12:56)
- очереди для приоритетов доступа к девайсу записи. не путайте. можете 32 клиента обслуживать 1-й очередью - Vit(14.06.2009 12:53)
- zero copy тогда не получится. Получится промежуточное копирование из локальных данныъх процесса в большую очередь, а это время. - Evgeny_CD(14.06.2009 13:14)
- Проще поставить дескриптор рекорда (задание на транзакцию) в очередь и подождать флага окончания записи, занимаясь другими делами. Ведь процессу важно не рулить буфером, о котором ему по-хорошему вообще знать не нужно (не его это дело), а приготовить Vit(1350 знак., 14.06.2009 11:47)
- А как проще-то? Вот и размышлюя публично :) - Evgeny_CD(14.06.2009 10:54)
- а как блок из неготовых стал готов сразу стек ворочать? чё-т мудрено - Vit(14.06.2009 09:59)
- В дексрипторе блока есть маркер - готово. Как только прерывание закончило выгребать блок n, оно берет дескриптор n++, смотрит - готов ли он. if !ready смотрим другой и т.д. Но неготовый заносим в стек неготовых, и его просматриваем после каждого Evgeny_CD(15 знак., 14.06.2009 01:59)
- Ну а выгребающей стороне как знать, что буфер не только аллоцирован частями, но и в него полезности уже записаны? - Vit(14.06.2009 01:55)
- Есть указатель на начало свободного места. Идем туда, проверям дескриптор - а не заховал ли его кто, а указатель не перестаивили. Дескриптор свободен. Пока. Пишем сигнатуру и размер. Проверям - вдруг нас прервали, и кто-то его уже заховал. Проверили - Evgeny_CD(429 знак., 14.06.2009 01:45)
- тогда какой смысл писать в каждый количество одномоментно захваченных блоков? Vit(430 знак., 14.06.2009 01:33)
- На каждый блок - дескриптор. - Evgeny_CD(14.06.2009 01:23)
- Дык каждый блок с дескриптором или один дескриптор на набор блоков или на буфер? - Vit(14.06.2009 01:21)
- Микрошедулер. Мягкие критический секции. Evgeny_CD(1870 знак., 14.06.2009 01:32)
- Хорошей штукой также было бы информирование потока о том, как близко он к отбору управления у него. Evgeny_CD(906 знак., 14.06.2009 13:13)
- Еще одна идея - продление непрерывания :) Evgeny_CD(912 знак., 14.06.2009 01:57)
- Продолжаем тему сихронного программирования :) Учет времени прерываний - интересно, так кто-то делает? Evgeny_CD(499 знак., 14.06.2009 01:08)
- Гы, ну если у вас прервания в комплексе выполняются дольше одного системного тика - то да. А вообще коррекция нужна когда часть задачи может выполняться длительное время (относительно системного таймера). - Alex B.(14.06.2009 09:58, ссылка)
- по ссылке, пункт "системное время" - Alex B.(14.06.2009 10:03, ссылка)
- Вообще все шедулеры современных ОСей меня пугают своей абстрагированностью. Evgeny_CD(2054 знак., 14.06.2009 11:41)
- вот вы пишите "шедулер пишет...", "задача вызывает...", "опрашивает таймер в лоб..." - все это какие-то действия, которые занимают какое-то время. Alex B.(786 знак., 15.06.2009 10:16)
- Я пока тоже далек от полного понимания истины. И также понятно, что мои идеи утяжелят шеудлер. Но, на самом деле, не очевидно, что станет хуже :) Кстати, исходники ThreadX для ARM у кого-нибудь есть? Книга у меня есть -> --> Evgeny_CD(555 знак., 15.06.2009 12:05, ссылка, ссылка)
- вы чего и правда думаете, что планировщик это черная магия? Alex B.(827 знак., 15.06.2009 12:29)
- Пока мешина, не спорю. Просто я пытаюсь понять - как эффективно сделать ОСь без запрета прерываний. - Evgeny_CD(15.06.2009 13:08)
- А если еще точнее, то я пытаюсь найти способ эффтивного размера времени на память. Когда все статично - память, тики - все просто. Но памяти тредуется больше - какие-то временные даные живут в памяти, ожидая, когда они потребуются. Я хочу насти способ Evgeny_CD(615 знак., 15.06.2009 13:48)
- хехе - "если критическая задача близко - мне проще отдать время на IDLE". Да у вас машина предсказаний какая-то получается. Можно будет реально с эмбеддерством завязать. Alex B.(203 знак., 15.06.2009 14:13)
- Пока это все экспериментальные идеи. Обсуждение помогает приблизиться к истине :) - Evgeny_CD(15.06.2009 14:14)
- хехе - "если критическая задача близко - мне проще отдать время на IDLE". Да у вас машина предсказаний какая-то получается. Можно будет реально с эмбеддерством завязать. Alex B.(203 знак., 15.06.2009 14:13)
- А если еще точнее, то я пытаюсь найти способ эффтивного размера времени на память. Когда все статично - память, тики - все просто. Но памяти тредуется больше - какие-то временные даные живут в памяти, ожидая, когда они потребуются. Я хочу насти способ Evgeny_CD(615 знак., 15.06.2009 13:48)
- Пока мешина, не спорю. Просто я пытаюсь понять - как эффективно сделать ОСь без запрета прерываний. - Evgeny_CD(15.06.2009 13:08)
- вы чего и правда думаете, что планировщик это черная магия? Alex B.(827 знак., 15.06.2009 12:29)
- Я пока тоже далек от полного понимания истины. И также понятно, что мои идеи утяжелят шеудлер. Но, на самом деле, не очевидно, что станет хуже :) Кстати, исходники ThreadX для ARM у кого-нибудь есть? Книга у меня есть -> --> Evgeny_CD(555 знак., 15.06.2009 12:05, ссылка, ссылка)
- вот вы пишите "шедулер пишет...", "задача вызывает...", "опрашивает таймер в лоб..." - все это какие-то действия, которые занимают какое-то время. Alex B.(786 знак., 15.06.2009 10:16)
- Вообще все шедулеры современных ОСей меня пугают своей абстрагированностью. Evgeny_CD(2054 знак., 14.06.2009 11:41)
- по ссылке, пункт "системное время" - Alex B.(14.06.2009 10:03, ссылка)
- Гы, ну если у вас прервания в комплексе выполняются дольше одного системного тика - то да. А вообще коррекция нужна когда часть задачи может выполняться длительное время (относительно системного таймера). - Alex B.(14.06.2009 09:58, ссылка)
- Была ветка про продвинутые алгоритмы управления памятью ->. Вот меня какие мысли посетили. Evgeny_CD(1080 знак., 14.06.2009 01:01, ссылка)
- Никогда толком не разбирался, может кто подскажет. В uCOS-II ОСевые таймера сделаны на основе системных тиков, или там дополнительная аппаратная поддержка используется (выделенный таймер, etc.)? - Evgeny_CD(15.06.2009 18:59)