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

 
 
> Вопрос ламера по Linux IPC, Inter Process Comminications
Evgeny_CD
сообщение Jan 13 2006, 20:33
Сообщение #1


Гуру
******

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



Есть два процесса под Linux. Им надо обмениваться пакетами данных.

Пакет представляет из себя:

* заголовок - поле фиксированной длины
* данные - поле переменой длины (<= MAX_LEN), заполненное бинарными
случайными данными.

Как лучше всего сделать такой обмен?

Я удумал следующее.

1. Канал. Пишем, читаем. Но поскольку он имеет байтный интерфейс, при
последовательном чтении непонятно, где начинается заголовок. Значит,
придется вводить какие-то механизмы для его нахождения (Escape
последовательности и пр.). Это не сложно, но совершенно лишнее действие
в контексте решаемой задачи (нужно ее решить максимально быстро по
программированию, расход памяти и процессорного времени не важен (в
разумных пределах)).

2. Разделяемая память. Наделать там кучу семафоров, и обмениться
указателями на структуры.

3. Гибрид smile.gif

Делаем разделяемую память, а там - кольцевой массив структур. Каждая
структура - это сообщение, данные пакета аппроксимированы массивом
максимальной длины (пустые места в памяти не волнуют).

2 потока для каждого направления обмена.

Передающий процесс пишет в поток send_msg char значение номера
элемента в массиве, куда он положил пакет.

Принимающий процесс пишет в поток msg_ask char значение номера элемента в
массиве, который он прочитал (освободил).

IMHO, так еще будет быстрее всего (нет лишнего копирования) и
экономнее (по памяти) всего (нет памяти для лишних копий).

Вероятно, я изобретаю велосипед. А что скажут Гуру по данному поводу?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение Jan 31 2006, 01:31
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Я прощу прощения если не в тему, но
Evgeny_CD а не приходила ли Вам мысль отказаться от операционки?
Чем дальше я читал эту ветку тем бесполезнее мне казалось ее применение.

По Вашим словам 1bit на 100 Гц (опрос охранки) - это низкая скорость, но и опрос этот как правило выполняет один Intel 80C51 (128 байт RAM, ~0.5MIPS @12Mhz).

Вы же планируете использовать ARM, LPC2138 - 60Mhz (59 32х битных MIPS)
20 Khz 8 bit, для 60-ти мегагерцового ARM'а - семечки. Ну смешно ведь ставить линукс лишь только для того чтобы использовать более дорой ARM контроллер и к тому же сделать его "тормознутым".

IP стек реализовать - плевое дело, гораздо проще чем разобраться с его реализацией в Linux smile.gif
у меня с этим mega48 справлялся, походу обслуживая 16-ти разрядный стерео DAC @48kHz, тот самый проц который стоит меньше доллара по словам mse и который здесь почему-то используют только в качестве "сопроцессора для защиты софта".

Если планируется использование пром PC, то можно взять просто DOS (он сейчас тоже вроде как Free), и извращаться как душе будет угодно. Под DOS ведь тоже есть нормальный IP стек, например Microsoft Client 3, Trumpet-TCP и прочие.

PS: и по ходу MAC канального уровня, на котором строится траспорт (IP-стек) и сеансовый уровень (Sockets), обеспечивает доставку пакетов в том виде и в том порядке в котором пакеты были сформированы на транспортном уровне. Максимальный объем IP пакета определяется максимальным объемом MAC пакета и реализацией драйвера, и в большинстве случаев ограничивается 2-4kb.
Go to the top of the page
 
+Quote Post
Evgeny_CD
сообщение Jan 31 2006, 02:01
Сообщение #3


Гуру
******

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



Цитата(defunct @ Jan 31 2006, 04:31) *
Я прощу прощения если не в тему, но
Evgeny_CD а не приходила ли Вам мысль отказаться от операционки?
Чем дальше я читал эту ветку тем бесполезнее мне казалось ее применение.

По Вашим словам 1bit на 100 Гц (опрос охранки) - это низкая скорость, но и опрос этот как правило выполняет один Intel 80C51 (128 байт RAM, ~0.5MIPS @12Mhz).
Нет. Ось нужна.

1. Проблема не в опросе, а в дальнейшей обработке. Например, Berkeley DB (http://dev.sleepycat.com/) я не возьмусь портировать под BigLoop, а база данных мне очень нужна.

2. DOS - "фтопку". Хоть free, хоть за деньги.

3. Мне надо, чтобы проект прожил 10 лет без кардинаьной смены идеологии, и мог много раз перескочить на разные аппаратные платформы.

Так что ОСь будет служить вовсе не для утяжеления основного контроллера. biggrin.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 31 2006, 02:47
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Evgeny_CD @ Jan 31 2006, 04:01) *
1. Проблема не в опросе, а в дальнейшей обработке. Например, Berkeley DB (http://dev.sleepycat.com/) я не возьмусь портировать под BigLoop, а база данных мне очень нужна.


Весомый аргумент в пользу ОС.

Цитата(Evgeny_CD @ Jan 31 2006, 04:01) *
3. Мне надо, чтобы проект прожил 10 лет без кардинаьной смены идеологии, и мог много раз перескочить на разные аппаратные платформы.


Ну а этот не совсем весомый smile.gif

Опыт показывает, что независимо от сложности софта и ОС под которую он был написан, без особых усилий его можно перенести на другую аппаратную платформу, даже в том случае если софт этот был написнан не на C, а на asm'е или чем-нибудь еще. При условии, что перенос будет осуществляться той же командой разработчиков. А у Вас помоему ситуация еще проще, сами планируете писать софт, под самостоятельно разрабатываемый девайс. Imho при таком подходе лучше удешевлять на всю катушку аппаратную часть, вместо гонки за кроссплатформенностью. Хотя это только imho.

ЗЫ: а есть сомнения, что при индивидуальном подходе устройство продержится 10 лет? Или через 5 лет будет уже другая полоса звуковых частот? ;>

Сообщение отредактировал defunct - Jan 31 2006, 03:03
Go to the top of the page
 
+Quote Post
Evgeny_CD
сообщение Jan 31 2006, 08:00
Сообщение #5


Гуру
******

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



Цитата(defunct @ Jan 31 2006, 05:47) *
Опыт показывает, что независимо от сложности софта и ОС под которую он был написан, без особых усилий его можно перенести на другую аппаратную платформу, даже в том случае если софт этот был написнан не на C, а на asm'е или чем-нибудь еще. При условии, что перенос будет осуществляться той же командой разработчиков. А у Вас помоему ситуация еще проще, сами планируете писать софт, под самостоятельно разрабатываемый девайс. Imho при таком подходе лучше удешевлять на всю катушку аппаратную часть, вместо гонки за кроссплатформенностью. Хотя это только imho.

ЗЫ: а есть сомнения, что при индивидуальном подходе устройство продержится 10 лет? Или через 5 лет будет уже другая полоса звуковых частот? ;>
Проблема вспомнить через 10 лет, что же ты тут такого написал smile.gif. Разработка будет не индивидуальная, а силами небольшой команды. У нас уже есть примеры устройств на 87C51GB, которые прожили более 10 лет. И так хочется софт на них переписать, и так обломно ковыряться в асмовых исходиках (а софт там state of the art с точки зрения целевой задачи, его лет 5 по кусочкам писали и баги фиксили).
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 31 2006, 23:45
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Evgeny_CD @ Jan 31 2006, 10:00) *
Проблема вспомнить через 10 лет, что же ты тут такого написал smile.gif. Разработка будет не индивидуальная, а силами небольшой команды. У нас уже есть примеры устройств на 87C51GB, которые прожили более 10 лет. И так хочется софт на них переписать, и так обломно ковыряться в асмовых исходиках (а софт там state of the art с точки зрения целевой задачи, его лет 5 по кусочкам писали и баги фиксили).



По поводу устройства на 87C51 - есть поговорка "Пока работает - не чини" smile.gif
А вот возникла бы надобность перекинуть софт под другую платформу, думаю вначале было бы "обломно", а потом оказалось бы совсем не сложно smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Evgeny_CD   Вопрос ламера по Linux IPC   Jan 13 2006, 20:33
- - zltigo   Цитата(Evgeny_CD @ Jan 13 2006, 22:33) Ес...   Jan 13 2006, 21:49
|- - Evgeny_CD   Цитата(zltigo @ Jan 14 2006, 00:49) Самое...   Jan 13 2006, 22:47
- - zltigo   Цитата(Evgeny_CD @ Jan 14 2006, 00:47) С ...   Jan 13 2006, 23:33
|- - Evgeny_CD   Цитата(zltigo @ Jan 14 2006, 02:33) Значи...   Jan 13 2006, 23:39
- - psL   Если один процесс родительский, а второй его потом...   Jan 14 2006, 11:43
- - zltigo   Цитата(psL @ Jan 14 2006, 13:43) Если оди...   Jan 14 2006, 13:03
|- - psL   > 1. Pipe и FIFO суть одно и то-же и работают о...   Jan 14 2006, 13:56
- - zltigo   Цитата(psL @ Jan 14 2006, 15:56) > 1. ...   Jan 14 2006, 14:53
|- - psL   Цитата(zltigo @ Jan 14 2006, 17:53) ?????...   Jan 14 2006, 16:01
|- - alexr22b   Цитатая имел ввиду, что TCP - не гарантирует сохра...   Jan 15 2006, 06:23
- - Harbour   Насчет выделения пакетов из какого угодно потока (...   Jan 14 2006, 19:04
- - zltigo   Цитата(Harbour @ Jan 14 2006, 21:04) Я та...   Jan 14 2006, 20:54
- - zltigo   Цитата(alexr22b @ Jan 15 2006, 08:23) И э...   Jan 15 2006, 11:34
- - _artem_   Vikladivayu knizku na /upload/doc/Unix_Linux_books...   Jan 15 2006, 16:37
|- - Evgeny_CD   Цитата(_artem_ @ Jan 15 2006, 19:37) Vikl...   Jan 15 2006, 16:54
|- - Konst_777   Цитата(_artem_ @ Jan 15 2006, 19:37) Vikl...   Jan 18 2006, 03:14
- - Evgeny_CD   Спасибо всем просветившим меня! Из всего мног...   Jan 15 2006, 17:55
- - nazim   Я для этой цели использовал простой "самодель...   Jan 15 2006, 19:18
|- - Evgeny_CD   Цитата(nazim @ Jan 15 2006, 22:18) ...Я д...   Jan 15 2006, 20:01
- - zltigo   Обалдеть.   Jan 15 2006, 21:36
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 00:36) Обалд...   Jan 15 2006, 21:51
|- - psL   Вообще-то для обеспечения прозрачности передаваемы...   Jan 15 2006, 22:08
- - zltigo   Цитата(Evgeny_CD @ Jan 15 2006, 23:51) Ци...   Jan 15 2006, 23:05
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 02:05) ...В ...   Jan 15 2006, 23:32
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 01:32) Вс...   Jan 15 2006, 23:55
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 02:55) Ну и ...   Jan 16 2006, 00:49
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 02:49) Эт...   Jan 16 2006, 01:16
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 04:16) 1. Ну...   Jan 16 2006, 01:31
|- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 03:31) SO...   Jan 16 2006, 11:08
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 14:08) ...На...   Jan 16 2006, 11:16
- - Harbour   Цитата(zltigo @ Jan 14 2006, 22:54) Цитат...   Jan 16 2006, 09:35
- - zltigo   Цитата(Harbour @ Jan 16 2006, 11:35) 3. С...   Jan 16 2006, 10:51
- - zltigo   Цитата(Evgeny_CD @ Jan 16 2006, 13:16) Ви...   Jan 16 2006, 11:31
|- - Evgeny_CD   Цитата(zltigo @ Jan 16 2006, 14:31) Излиш...   Jan 17 2006, 15:56
- - Harbour   Цитата(zltigo @ Jan 16 2006, 12:51) Цитат...   Jan 16 2006, 17:55
- - zltigo   Цитата(Harbour @ Jan 16 2006, 19:55) то ч...   Jan 16 2006, 18:26
- - Harbour   Пусть теоретики на своими прожектами думают - мне ...   Jan 17 2006, 07:02
- - zltigo   Цитата(Harbour @ Jan 17 2006, 09:02) Пуст...   Jan 17 2006, 11:32
- - Harbour   Даже такой отторможенный арм как 920 должон легко ...   Jan 17 2006, 20:21
|- - Evgeny_CD   Цитата(Harbour @ Jan 17 2006, 23:21) ...Д...   Jan 17 2006, 20:56
- - zaratustra   > оцифровывать входной сигнал с относительно вы...   Jan 26 2006, 12:57
|- - Evgeny_CD   Цитата(zaratustra @ Jan 26 2006, 15:57) ....   Jan 26 2006, 13:44
- - zaratustra   А вы не пробовали поискать девкиты работающие под ...   Jan 26 2006, 14:02
|- - Evgeny_CD   Цитата(zaratustra @ Jan 26 2006, 17:02) А...   Jan 26 2006, 14:27
- - zaratustra   Вам виднее, кто кроме вас вашу задачу знает? Если ...   Jan 27 2006, 08:34
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 11:34) ....   Jan 27 2006, 09:32
- - zaratustra   Линукс насколько я вижу мигрирует к десктопу быстр...   Jan 27 2006, 10:17
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 13:17) Л...   Jan 27 2006, 11:42
- - zaratustra   Самое лучшее что могу вам посоветовать - побыстрее...   Jan 27 2006, 13:00
|- - Evgeny_CD   Цитата(zaratustra @ Jan 27 2006, 16:00) ....   Jan 27 2006, 13:02
- - Evgeny_CD   Цитата(defunct @ Feb 1 2006, 02:45) ...По...   Feb 1 2006, 06:34


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

 


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


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