|
Вопрос ламера по Linux IPC, Inter Process Comminications |
|
|
|
Jan 13 2006, 20:33
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Есть два процесса под Linux. Им надо обмениваться пакетами данных. Пакет представляет из себя: * заголовок - поле фиксированной длины * данные - поле переменой длины (<= MAX_LEN), заполненное бинарными случайными данными. Как лучше всего сделать такой обмен? Я удумал следующее. 1. Канал. Пишем, читаем. Но поскольку он имеет байтный интерфейс, при последовательном чтении непонятно, где начинается заголовок. Значит, придется вводить какие-то механизмы для его нахождения (Escape последовательности и пр.). Это не сложно, но совершенно лишнее действие в контексте решаемой задачи (нужно ее решить максимально быстро по программированию, расход памяти и процессорного времени не важен (в разумных пределах)). 2. Разделяемая память. Наделать там кучу семафоров, и обмениться указателями на структуры. 3. Гибрид  Делаем разделяемую память, а там - кольцевой массив структур. Каждая структура - это сообщение, данные пакета аппроксимированы массивом максимальной длины (пустые места в памяти не волнуют). 2 потока для каждого направления обмена. Передающий процесс пишет в поток send_msg char значение номера элемента в массиве, куда он положил пакет. Принимающий процесс пишет в поток msg_ask char значение номера элемента в массиве, который он прочитал (освободил). IMHO, так еще будет быстрее всего (нет лишнего копирования) и экономнее (по памяти) всего (нет памяти для лишних копий). Вероятно, я изобретаю велосипед. А что скажут Гуру по данному поводу?
|
|
|
|
|
 |
Ответов
|
Jan 31 2006, 01:31
|

кекс
     
Группа: Свой
Сообщений: 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 у меня с этим mega48 справлялся, походу обслуживая 16-ти разрядный стерео DAC @48kHz, тот самый проц который стоит меньше доллара по словам mse и который здесь почему-то используют только в качестве "сопроцессора для защиты софта". Если планируется использование пром PC, то можно взять просто DOS (он сейчас тоже вроде как Free), и извращаться как душе будет угодно. Под DOS ведь тоже есть нормальный IP стек, например Microsoft Client 3, Trumpet-TCP и прочие. PS: и по ходу MAC канального уровня, на котором строится траспорт (IP-стек) и сеансовый уровень (Sockets), обеспечивает доставку пакетов в том виде и в том порядке в котором пакеты были сформированы на транспортном уровне. Максимальный объем IP пакета определяется максимальным объемом MAC пакета и реализацией драйвера, и в большинстве случаев ограничивается 2-4kb.
|
|
|
|
|
Jan 31 2006, 02:01
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 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 лет без кардинаьной смены идеологии, и мог много раз перескочить на разные аппаратные платформы. Так что ОСь будет служить вовсе не для утяжеления основного контроллера.
|
|
|
|
|
Jan 31 2006, 02:47
|

кекс
     
Группа: Свой
Сообщений: 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 лет без кардинаьной смены идеологии, и мог много раз перескочить на разные аппаратные платформы. Ну а этот не совсем весомый  Опыт показывает, что независимо от сложности софта и ОС под которую он был написан, без особых усилий его можно перенести на другую аппаратную платформу, даже в том случае если софт этот был написнан не на C, а на asm'е или чем-нибудь еще. При условии, что перенос будет осуществляться той же командой разработчиков. А у Вас помоему ситуация еще проще, сами планируете писать софт, под самостоятельно разрабатываемый девайс. Imho при таком подходе лучше удешевлять на всю катушку аппаратную часть, вместо гонки за кроссплатформенностью. Хотя это только imho. ЗЫ: а есть сомнения, что при индивидуальном подходе устройство продержится 10 лет? Или через 5 лет будет уже другая полоса звуковых частот? ;>
Сообщение отредактировал defunct - Jan 31 2006, 03:03
|
|
|
|
|
Jan 31 2006, 08:00
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(defunct @ Jan 31 2006, 05:47)  Опыт показывает, что независимо от сложности софта и ОС под которую он был написан, без особых усилий его можно перенести на другую аппаратную платформу, даже в том случае если софт этот был написнан не на C, а на asm'е или чем-нибудь еще. При условии, что перенос будет осуществляться той же командой разработчиков. А у Вас помоему ситуация еще проще, сами планируете писать софт, под самостоятельно разрабатываемый девайс. Imho при таком подходе лучше удешевлять на всю катушку аппаратную часть, вместо гонки за кроссплатформенностью. Хотя это только imho.
ЗЫ: а есть сомнения, что при индивидуальном подходе устройство продержится 10 лет? Или через 5 лет будет уже другая полоса звуковых частот? ;> Проблема вспомнить через 10 лет, что же ты тут такого написал  . Разработка будет не индивидуальная, а силами небольшой команды. У нас уже есть примеры устройств на 87C51GB, которые прожили более 10 лет. И так хочется софт на них переписать, и так обломно ковыряться в асмовых исходиках (а софт там state of the art с точки зрения целевой задачи, его лет 5 по кусочкам писали и баги фиксили).
|
|
|
|
Сообщений в этой теме
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    defunct Цитата(Evgeny_CD @ Jan 31 2006, 10:00) Пр... Jan 31 2006, 23:45     Evgeny_CD Цитата(defunct @ Feb 1 2006, 02:45) ...По... Feb 1 2006, 06:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|